Skip to content

Commit 2315012

Browse files
committed
-
1 parent bee7acd commit 2315012

File tree

5 files changed

+156
-10
lines changed

5 files changed

+156
-10
lines changed

python_toolbox/nifty_collections/weak_key_default_dict.py

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -118,21 +118,16 @@ def get(self, key, default=None):
118118
return self.data.get(ref(key),default)
119119

120120

121-
def has_key(self, key):
122-
try:
123-
wr = ref(key)
124-
except TypeError:
125-
return 0
126-
return wr in self.data
127-
128-
129121
def __contains__(self, key):
130122
try:
131123
wr = ref(key)
132124
except TypeError:
133125
return 0
134126
return wr in self.data
135127

128+
129+
has_key = __contains__
130+
136131

137132
def items(self):
138133
""" D.items() -> list of D's (key, value) pairs, as 2-tuples """

test_python_toolbox/test_binary_search/test.py

Lines changed: 83 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
# Copyright 2009-2011 Ram Rachum.
2+
# This program is distributed under the LGPL2.1 license.
3+
4+
'''Test module for `binary_search`.'''
5+
16
from python_toolbox import binary_search
27
from python_toolbox import nifty_collections
38
from python_toolbox import misc_tools
@@ -21,9 +26,86 @@ def test():
2126
binary_search.CLOSEST
2227
) == 3
2328

29+
assert binary_search.binary_search(
30+
my_list,
31+
misc_tools.identity_function,
32+
3.2,
33+
binary_search.LOW
34+
) == 3
35+
36+
assert binary_search.binary_search(
37+
my_list,
38+
misc_tools.identity_function,
39+
3.2,
40+
binary_search.HIGH
41+
) == 4
42+
2443
assert binary_search.binary_search(
2544
my_list,
2645
misc_tools.identity_function,
2746
3.2,
2847
binary_search.BOTH
29-
) == (3, 4)
48+
) == (3, 4)
49+
50+
assert binary_search.binary_search(
51+
my_list,
52+
misc_tools.identity_function,
53+
-5,
54+
binary_search.BOTH
55+
) == (None, 0)
56+
57+
assert binary_search.binary_search(
58+
my_list,
59+
misc_tools.identity_function,
60+
-5,
61+
binary_search.LOW
62+
) == None
63+
64+
assert binary_search.binary_search(
65+
my_list,
66+
misc_tools.identity_function,
67+
-5,
68+
binary_search.HIGH
69+
) == 0
70+
71+
assert binary_search.binary_search(
72+
my_list,
73+
misc_tools.identity_function,
74+
100,
75+
binary_search.BOTH
76+
) == (4, None)
77+
78+
assert binary_search.binary_search(
79+
my_list,
80+
misc_tools.identity_function,
81+
100,
82+
binary_search.LOW
83+
) == 4
84+
85+
assert binary_search.binary_search(
86+
my_list,
87+
misc_tools.identity_function,
88+
100,
89+
binary_search.HIGH
90+
) == None
91+
92+
assert binary_search.binary_search_by_index(
93+
[(number * 10) for number in my_list],
94+
misc_tools.identity_function,
95+
32,
96+
binary_search.BOTH
97+
) == (3, 4)
98+
99+
assert binary_search.binary_search(
100+
[],
101+
misc_tools.identity_function,
102+
32,
103+
binary_search.BOTH
104+
) == (None, None)
105+
106+
assert binary_search.binary_search(
107+
[],
108+
misc_tools.identity_function,
109+
32,
110+
) == None
111+
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
# Copyright 2009-2012 Ram Rachum.
2+
# This program is distributed under the LGPL2.1 license.
3+
4+
'''Testing module for `python_toolbox.nifty_collections.OrderedSet`.'''
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# Copyright 2009-2012 Ram Rachum.
2+
# This program is distributed under the LGPL2.1 license.
3+
4+
'''Testing module for `nifty_collections.ordered_dict.OrderedSet`.'''
5+
6+
from __future__ import with_statement
7+
8+
from python_toolbox import cute_testing
9+
10+
from python_toolbox.nifty_collections import OrderedSet
11+
12+
13+
def test_sort():
14+
'''Test the basic workings of `OrderedSet`.'''
15+
16+
ordered_set = OrderedSet(range(4))
17+
18+
assert list(ordered_set) == list(range(4))
19+
assert len(ordered_set) == 4
20+
assert 1 in ordered_set
21+
assert 3 in ordered_set
22+
assert 7 not in ordered_set
23+
ordered_set.add(8)
24+
assert list(ordered_set)[-1] == 8
25+
ordered_set.discard(2)
26+
assert 2 not in ordered_set
27+
assert list(reversed(ordered_set)) == [8, 3, 1, 0]
28+
assert ordered_set.pop() == 8
29+
assert ordered_set.pop(last=False) == 0
30+

test_python_toolbox/test_nifty_collections/test_weak_key_default_dict/test.py

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,44 @@ def test():
2727
assert wkd_dict[weakreffable_object_1] == 7
2828
assert wkd_dict[weakreffable_object_2] == 7
2929

30+
assert weakreffable_object_0 in wkd_dict
31+
assert weakreffable_object_1 in wkd_dict
32+
assert weakreffable_object_2 in wkd_dict
33+
assert 'meow' not in wkd_dict
34+
35+
assert sorted(wkd_dict.items()) == sorted(wkd_dict.iteritems()) == sorted(
36+
((weakreffable_object_0, 2),
37+
(weakreffable_object_1, 7),
38+
(weakreffable_object_2, 7), )
39+
)
40+
41+
assert set(wkd_dict.iterkeys()) == set(wkd_dict.keys()) == \
42+
set((ref() for ref in wkd_dict.iterkeyrefs())) == \
43+
set((ref() for ref in wkd_dict.keyrefs())) == \
44+
set((weakreffable_object_0, weakreffable_object_1,
45+
weakreffable_object_2))
46+
3047
weakreffable_object_3 = WeakreffableObject()
3148
wkd_dict[weakreffable_object_3] = 123
3249
assert len(wkd_dict.keys()) == 4
3350
del weakreffable_object_3
3451
gc_tools.collect()
35-
assert len(wkd_dict.keys()) == 3
52+
assert len(wkd_dict.keys()) == 3
53+
54+
assert wkd_dict.pop(weakreffable_object_2) == 7
55+
assert len(wkd_dict) == 2
56+
popped_key, popped_value = wkd_dict.popitem()
57+
assert popped_key in (weakreffable_object_0, weakreffable_object_1)
58+
assert popped_value in (2, 7)
59+
60+
61+
weakreffable_object_4 = WeakreffableObject()
62+
weakreffable_object_5 = WeakreffableObject()
63+
weakreffable_object_6 = WeakreffableObject()
64+
65+
assert weakreffable_object_4 not in wkd_dict
66+
wkd_dict.setdefault(weakreffable_object_4, 222)
67+
assert wkd_dict[weakreffable_object_4] == 222
68+
69+
wkd_dict.update({weakreffable_object_5: 444,})
70+
assert wkd_dict[weakreffable_object_5] == 444

0 commit comments

Comments
 (0)