Skip to content

Commit 04c28de

Browse files
committed
Merge pull request #2 from chronology/order
Add descending sort ability, __str__ and bump version
2 parents 5439be2 + b9371d9 commit 04c28de

6 files changed

Lines changed: 856 additions & 278 deletions

File tree

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
""" C extension for faster TimeUUID creation and comparison. """
44

5-
__version_info__ = (0, 1, 0)
5+
__version_info__ = (0, 2, 0)
66
__version__ = '.'.join(map(str, __version_info__))
77

88
import os

tests/test_performance.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,13 @@ def timeit(name):
2020
yield
2121
print '>', name, 'took', '%ss' % (time.time() - start)
2222

23-
def test_create_perf():
23+
def test_create():
2424
print
2525
for cls in [UUID, TimeUUID]:
2626
with timeit(cls.__name__):
2727
create(cls, 250000)
2828

29-
def test_cmp_perf():
29+
def test_cmp():
3030
print
3131
for cls in [UUID, TimeUUID]:
3232
uuids = create(cls, 100000)

tests/test_timeuuid.py

Lines changed: 33 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,32 +9,54 @@
99
def py_cmp(tu1, tu2):
1010
return cmp((tu1.time, tu1.bytes), (tu2.time, tu2.bytes))
1111

12-
def get_uuids(n=1, version=1):
13-
if version == 1:
14-
u = lambda: uuid.uuid1(random.randint(0, 2**48 - 1))
15-
elif version == 4:
16-
u = lambda: uuid.uuid4()
17-
else:
18-
raise ValueError
12+
def get_str_uuids(n):
1913
for _ in xrange(n):
20-
yield str(u())
14+
yield str(uuid.uuid4())
2115

2216
class TestTimeUUID(unittest.TestCase):
2317
def test_time(self):
24-
for _id in get_uuids(n=5000):
18+
for _id in get_str_uuids(5000):
2519
uu = UUID(_id)
2620
tuu = TimeUUID(_id)
2721
self.assertEqual(uu.time, tuu.time)
2822

2923
def test_bytes(self):
30-
for _id in get_uuids(n=5000, version=4):
24+
for _id in get_str_uuids(5000):
3125
uu = UUID(_id)
3226
tuu = TimeUUID(_id)
3327
self.assertEqual(uu.bytes, tuu.bytes)
3428

3529
def test_cmp(self):
36-
uuids = map(lambda s: TimeUUID(s), get_uuids(n=5000))
30+
uuids = map(lambda s: TimeUUID(s), get_str_uuids(5000))
3731
random.shuffle(uuids)
3832
for _ in xrange(5000):
3933
a, b = random.choice(uuids), random.choice(uuids)
4034
self.assertEqual(cmp(a, b), py_cmp(a, b))
35+
36+
for _ in xrange(100):
37+
i = random.randint(1, 4999)
38+
self.assertTrue(uuids[i] == uuids[i])
39+
self.assertTrue(uuids[i] >= uuids[i])
40+
self.assertTrue(uuids[i] <= uuids[i])
41+
self.assertFalse(uuids[i] != uuids[i])
42+
self.assertFalse(uuids[i - 1] == uuids[i])
43+
self.assertTrue(uuids[i - 1] != uuids[i])
44+
45+
def test_descending(self):
46+
uuid_strs = list(get_str_uuids(100))
47+
uuids = sorted(map(lambda s: TimeUUID(s), uuid_strs))
48+
descending_uuids = sorted(map(lambda s: TimeUUID(s, descending=True),
49+
uuid_strs))
50+
self.assertEqual(uuids, descending_uuids[::-1])
51+
52+
for uu, duu in zip(uuids, descending_uuids[::-1]):
53+
self.assertTrue(uu == duu)
54+
self.assertTrue(uu <= duu)
55+
self.assertTrue(uu >= duu)
56+
self.assertFalse(uu != duu)
57+
58+
def test_str(self):
59+
for uuid_str in get_str_uuids(1000):
60+
tuu = TimeUUID(uuid_str)
61+
self.assertEqual(uuid_str, str(tuu))
62+
self.assertEqual('TimeUUID(%s)' % uuid_str, repr(tuu))

0 commit comments

Comments
 (0)