Skip to content

Commit 8c1a322

Browse files
author
Ram Rachum
committed
-
1 parent 84207f9 commit 8c1a322

File tree

2 files changed

+55
-4
lines changed

2 files changed

+55
-4
lines changed

garlicsim/garlicsim/general_misc/logic_tools.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,10 @@ def all_equal(iterable, exhaustive=False):
3333
def logic_max(iterable, relation=lambda a, b: (a >= b)):
3434
'''
3535
Get a list of maximums from the iterable.
36-
36+
37+
That is, get all items that are bigger-or-equal to all the items in the
38+
iterable.
39+
3740
`relation` is allowed to be a partial order.
3841
'''
3942
sequence = list(iterable)

garlicsim/test_garlicsim/test_general_misc/test_logic_tools/test_logic_max.py

Lines changed: 51 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,54 @@
1010

1111
def test():
1212
'''Test the basic working of `logic_max`.'''
13-
assert logic_max(range(4)) == 3
14-
assert logic_max(set(range(5))) == 4
15-
1/0
13+
assert logic_max(range(4)) == [3]
14+
assert logic_max(set(range(5))) == [4]
15+
assert logic_max(iter(range(6))) == [5]
16+
assert logic_max(tuple(range(10))) == [9]
17+
18+
class FunkyString(object):
19+
def __init__(self, string):
20+
self.string = string
21+
22+
def __ge__(self, other):
23+
assert isinstance(other, FunkyString)
24+
return other.string in self.string
25+
26+
def __eq__(self, other):
27+
assert isinstance(other, FunkyString)
28+
return other.string == self.string
29+
30+
assert logic_max(
31+
[FunkyString('meow'),
32+
FunkyString('meow frr'),
33+
FunkyString('ow')]
34+
) == [FunkyString('meow frr')]
35+
36+
assert logic_max(
37+
[FunkyString('meow'),
38+
FunkyString('meow frr'),
39+
FunkyString('ow'),
40+
FunkyString('Stanislav')]
41+
) == []
42+
43+
assert logic_max(
44+
[FunkyString('meow'),
45+
FunkyString('meow frr'),
46+
FunkyString('ow'),
47+
FunkyString('meow frr')]
48+
) == [FunkyString('meow frr'), FunkyString('meow frr'),]
49+
50+
51+
class FunkyInt(object):
52+
def __init__(self, number):
53+
self.number = number
54+
def __ge__(self, other):
55+
return (10 <= self.number <= 20)
56+
57+
assert logic_max(
58+
[FunkyInt(7),
59+
FunkyInt(13),
60+
FunkyInt(3),
61+
FunkyInt(18),
62+
FunkyInt(24),]
63+
) == [FunkyInt(13), FunkyInt(18)]

0 commit comments

Comments
 (0)