|
8 | 8 | import io |
9 | 9 | import os |
10 | 10 | import pickle |
| 11 | +import random |
11 | 12 | import sys |
12 | 13 | import weakref |
| 14 | +from itertools import product |
13 | 15 | from unittest import mock |
14 | 16 |
|
15 | 17 | py_uuid = import_helper.import_fresh_module('uuid', blocked=['_uuid']) |
@@ -267,7 +269,7 @@ def test_exceptions(self): |
267 | 269 |
|
268 | 270 | # Version number out of range. |
269 | 271 | badvalue(lambda: self.uuid.UUID('00'*16, version=0)) |
270 | | - badvalue(lambda: self.uuid.UUID('00'*16, version=6)) |
| 272 | + badvalue(lambda: self.uuid.UUID('00'*16, version=42)) |
271 | 273 |
|
272 | 274 | # Integer value out of range. |
273 | 275 | badvalue(lambda: self.uuid.UUID(int=-1)) |
@@ -681,6 +683,29 @@ def test_uuid5(self): |
681 | 683 | equal(u, self.uuid.UUID(v)) |
682 | 684 | equal(str(u), v) |
683 | 685 |
|
| 686 | + def test_uuid8(self): |
| 687 | + equal = self.assertEqual |
| 688 | + u = self.uuid.uuid8() |
| 689 | + |
| 690 | + equal(u.variant, self.uuid.RFC_4122) |
| 691 | + equal(u.version, 8) |
| 692 | + |
| 693 | + for (_, hi, mid, lo) in product( |
| 694 | + range(10), # repeat 10 times |
| 695 | + [None, 0, random.getrandbits(48)], |
| 696 | + [None, 0, random.getrandbits(12)], |
| 697 | + [None, 0, random.getrandbits(62)], |
| 698 | + ): |
| 699 | + u = self.uuid.uuid8(hi, mid, lo) |
| 700 | + equal(u.variant, self.uuid.RFC_4122) |
| 701 | + equal(u.version, 8) |
| 702 | + if hi is not None: |
| 703 | + equal((u.int >> 80) & 0xffffffffffff, hi) |
| 704 | + if mid is not None: |
| 705 | + equal((u.int >> 64) & 0xfff, mid) |
| 706 | + if lo is not None: |
| 707 | + equal(u.int & 0x3fffffffffffffff, lo) |
| 708 | + |
684 | 709 | @support.requires_fork() |
685 | 710 | def testIssue8621(self): |
686 | 711 | # On at least some versions of OSX self.uuid.uuid4 generates |
|
0 commit comments