@@ -17,8 +17,74 @@ class RandomTests: XCTestCase {
1717 let random = Random ( )
1818 XCTAssertEqual ( random. charSet. chars, CharSet . charSet32. chars)
1919 }
20+
21+ func testSmallID( ) {
22+ random = Random ( )
23+ XCTAssertEqual ( 6 , random. smallID ( ) . count)
24+ XCTAssertEqual ( 5 , random. smallID ( . charSet64) . count)
25+ XCTAssertEqual ( 6 , random. smallID ( . charSet32) . count)
26+ XCTAssertEqual ( 8 , random. smallID ( . charSet16) . count)
27+ XCTAssertEqual ( 10 , random. smallID ( . charSet8) . count)
28+ XCTAssertEqual ( 15 , random. smallID ( . charSet4) . count)
29+ XCTAssertEqual ( 29 , random. smallID ( . charSet2) . count)
30+
31+ for charSet in charSets {
32+ let smallIDBits = Float ( 29 )
33+ let random = Random ( charSet)
34+ let id = random. smallID ( )
35+ let count = Int ( ceilf ( smallIDBits / Float( charSet. bitsPerChar) ) )
36+ XCTAssertEqual ( id. characters. count, count)
37+ }
38+ }
39+
40+ func testMediumID( ) {
41+ random = Random ( )
42+ XCTAssertEqual ( 14 , random. mediumID ( ) . count)
43+ XCTAssertEqual ( 12 , random. mediumID ( . charSet64) . count)
44+ XCTAssertEqual ( 14 , random. mediumID ( . charSet32) . count)
45+ XCTAssertEqual ( 18 , random. mediumID ( . charSet16) . count)
46+ XCTAssertEqual ( 23 , random. mediumID ( . charSet8) . count)
47+ XCTAssertEqual ( 35 , random. mediumID ( . charSet4) . count)
48+ XCTAssertEqual ( 69 , random. mediumID ( . charSet2) . count)
49+
50+ for charSet in charSets {
51+ let mediumIDBits = Float ( 69 )
52+ let random = Random ( charSet)
53+ let id = random. mediumID ( )
54+ let count = Int ( ceilf ( mediumIDBits / Float( charSet. bitsPerChar) ) )
55+ XCTAssertEqual ( id. characters. count, count)
56+ }
57+ }
58+
59+ func testLargeID( ) {
60+ random = Random ( )
61+ XCTAssertEqual ( 20 , random. largeID ( ) . count)
62+ XCTAssertEqual ( 17 , random. largeID ( . charSet64) . count)
63+ XCTAssertEqual ( 20 , random. largeID ( . charSet32) . count)
64+ XCTAssertEqual ( 25 , random. largeID ( . charSet16) . count)
65+ XCTAssertEqual ( 33 , random. largeID ( . charSet8) . count)
66+ XCTAssertEqual ( 50 , random. largeID ( . charSet4) . count)
67+ XCTAssertEqual ( 99 , random. largeID ( . charSet2) . count)
68+
69+ for charSet in charSets {
70+ let largeIDBits = Float ( 99 )
71+ let random = Random ( charSet)
72+ let id = random. largeID ( )
73+ let count = Int ( ceilf ( largeIDBits / Float( charSet. bitsPerChar) ) )
74+ XCTAssertEqual ( id. characters. count, count)
75+ }
76+ }
2077
2178 func testSessionID( ) {
79+ random = Random ( )
80+ XCTAssertEqual ( 26 , random. sessionID ( ) . count)
81+ XCTAssertEqual ( 22 , random. sessionID ( . charSet64) . count)
82+ XCTAssertEqual ( 26 , random. sessionID ( . charSet32) . count)
83+ XCTAssertEqual ( 32 , random. sessionID ( . charSet16) . count)
84+ XCTAssertEqual ( 43 , random. sessionID ( . charSet8) . count)
85+ XCTAssertEqual ( 64 , random. sessionID ( . charSet4) . count)
86+ XCTAssertEqual ( 128 , random. sessionID ( . charSet2) . count)
87+
2288 for charSet in charSets {
2389 let sessionIDBits = Float ( 128 )
2490 let random = Random ( charSet)
@@ -27,6 +93,25 @@ class RandomTests: XCTestCase {
2793 XCTAssertEqual ( id. characters. count, count)
2894 }
2995 }
96+
97+ func testToken( ) {
98+ random = Random ( )
99+ XCTAssertEqual ( 52 , random. token ( ) . count)
100+ XCTAssertEqual ( 43 , random. token ( . charSet64) . count)
101+ XCTAssertEqual ( 52 , random. token ( . charSet32) . count)
102+ XCTAssertEqual ( 64 , random. token ( . charSet16) . count)
103+ XCTAssertEqual ( 86 , random. token ( . charSet8) . count)
104+ XCTAssertEqual ( 128 , random. token ( . charSet4) . count)
105+ XCTAssertEqual ( 256 , random. token ( . charSet2) . count)
106+
107+ for charSet in charSets {
108+ let tokenBits = Float ( 256 )
109+ let random = Random ( charSet)
110+ let id = random. token ( )
111+ let count = Int ( ceilf ( tokenBits / Float( charSet. bitsPerChar) ) )
112+ XCTAssertEqual ( id. characters. count, count)
113+ }
114+ }
30115
31116 func testCharSet64( ) {
32117 random = Random ( . charSet64)
0 commit comments