Skip to content

Commit 317ab59

Browse files
committed
Tests for Math.random strings
1 parent fe85195 commit 317ab59

File tree

1 file changed

+74
-45
lines changed

1 file changed

+74
-45
lines changed

test/entropy.js

Lines changed: 74 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -89,71 +89,90 @@ test('Char Set 2 Strings', t => {
8989

9090
test('Char Set 64 string lengths', t => {
9191
const charSet = entropy.charSet64
92-
t.is(entropyStringLength( 5, charSet), 1)
93-
t.is(entropyStringLength( 6, charSet), 1)
94-
t.is(entropyStringLength( 7, charSet), 2)
95-
t.is(entropyStringLength( 18, charSet), 3)
96-
t.is(entropyStringLength( 50, charSet), 9)
97-
t.is(entropyStringLength(122, charSet), 21)
98-
t.is(entropyStringLength(128, charSet), 22)
99-
t.is(entropyStringLength(132, charSet), 22)
92+
const fns = [entropyStringLength, entropyStringLengthNoCrypto]
93+
for (let i = 0; i < 2; i++) {
94+
t.is(fns[i]( 5, charSet), 1)
95+
t.is(fns[i]( 6, charSet), 1)
96+
t.is(fns[i]( 7, charSet), 2)
97+
t.is(fns[i]( 18, charSet), 3)
98+
t.is(fns[i]( 50, charSet), 9)
99+
t.is(fns[i](122, charSet), 21)
100+
t.is(fns[i](128, charSet), 22)
101+
t.is(fns[i](132, charSet), 22)
102+
}
100103
})
101104

102105
test('Char Set 32 string lengths', t => {
103106
const charSet = entropy.charSet32
104-
t.is(entropyStringLength( 4, charSet), 1)
105-
t.is(entropyStringLength( 5, charSet), 1)
106-
t.is(entropyStringLength( 6, charSet), 2)
107-
t.is(entropyStringLength( 20, charSet), 4)
108-
t.is(entropyStringLength( 32, charSet), 7)
109-
t.is(entropyStringLength(122, charSet), 25)
110-
t.is(entropyStringLength(128, charSet), 26)
111-
t.is(entropyStringLength(130, charSet), 26)
107+
const fns = [entropyStringLength, entropyStringLengthNoCrypto]
108+
for (let i = 0; i < 2; i++) {
109+
t.is(fns[i]( 4, charSet), 1)
110+
t.is(fns[i]( 5, charSet), 1)
111+
t.is(fns[i]( 6, charSet), 2)
112+
t.is(fns[i]( 20, charSet), 4)
113+
t.is(fns[i]( 32, charSet), 7)
114+
t.is(fns[i](122, charSet), 25)
115+
t.is(fns[i](128, charSet), 26)
116+
t.is(fns[i](130, charSet), 26)
117+
}
112118
})
113119

114120
test('Char Set 16 string lengths', t => {
115121
const charSet = entropy.charSet16
116-
t.is(entropyStringLength( 3, charSet), 1)
117-
t.is(entropyStringLength( 4, charSet), 1)
118-
t.is(entropyStringLength( 5, charSet), 2)
119-
t.is(entropyStringLength( 14, charSet), 4)
120-
t.is(entropyStringLength( 40, charSet), 10)
121-
t.is(entropyStringLength(122, charSet), 31)
122-
t.is(entropyStringLength(128, charSet), 32)
122+
const fns = [entropyStringLength, entropyStringLengthNoCrypto]
123+
for (let i = 0; i < 2; i++) {
124+
t.is(fns[i]( 3, charSet), 1)
125+
t.is(fns[i]( 4, charSet), 1)
126+
t.is(fns[i]( 5, charSet), 2)
127+
t.is(fns[i]( 14, charSet), 4)
128+
t.is(fns[i]( 40, charSet), 10)
129+
t.is(fns[i](122, charSet), 31)
130+
t.is(fns[i](128, charSet), 32)
131+
}
123132
})
124133

125134
test('Char Set 8 string lengths', t => {
126135
const charSet = entropy.charSet8
127-
t.is(entropyStringLength( 2, charSet), 1)
128-
t.is(entropyStringLength( 3, charSet), 1)
129-
t.is(entropyStringLength( 4, charSet), 2)
130-
t.is(entropyStringLength( 32, charSet), 11)
131-
t.is(entropyStringLength( 48, charSet), 16)
132-
t.is(entropyStringLength(120, charSet), 40)
133-
t.is(entropyStringLength(122, charSet), 41)
134-
t.is(entropyStringLength(128, charSet), 43)
136+
const fns = [entropyStringLength, entropyStringLengthNoCrypto]
137+
for (let i = 0; i < 2; i++) {
138+
t.is(fns[i]( 2, charSet), 1)
139+
t.is(fns[i]( 3, charSet), 1)
140+
t.is(fns[i]( 4, charSet), 2)
141+
t.is(fns[i]( 32, charSet), 11)
142+
t.is(fns[i]( 48, charSet), 16)
143+
t.is(fns[i](120, charSet), 40)
144+
t.is(fns[i](122, charSet), 41)
145+
t.is(fns[i](128, charSet), 43)
146+
}
147+
135148
})
136149

137150
test('Char Set 4 string lengths', t => {
138151
const charSet = entropy.charSet4
139-
t.is(entropyStringLength( 1, charSet), 1)
140-
t.is(entropyStringLength( 2, charSet), 1)
141-
t.is(entropyStringLength( 3, charSet), 2)
142-
t.is(entropyStringLength( 32, charSet), 16)
143-
t.is(entropyStringLength( 48, charSet), 24)
144-
t.is(entropyStringLength(122, charSet), 61)
145-
t.is(entropyStringLength(128, charSet), 64)
152+
const fns = [entropyStringLength, entropyStringLengthNoCrypto]
153+
for (let i = 0; i < 2; i++) {
154+
t.is(fns[i]( 1, charSet), 1)
155+
t.is(fns[i]( 2, charSet), 1)
156+
t.is(fns[i]( 3, charSet), 2)
157+
t.is(fns[i]( 32, charSet), 16)
158+
t.is(fns[i]( 48, charSet), 24)
159+
t.is(fns[i](122, charSet), 61)
160+
t.is(fns[i](128, charSet), 64)
161+
}
146162
})
147163

148164
test('Char Set 2 string lengths', t => {
149165
const charSet = entropy.charSet2
150-
t.is(entropyStringLength( 1, charSet), 1)
151-
t.is(entropyStringLength( 2, charSet), 2)
152-
t.is(entropyStringLength( 3, charSet), 3)
153-
t.is(entropyStringLength( 32, charSet), 32)
154-
t.is(entropyStringLength( 48, charSet), 48)
155-
t.is(entropyStringLength(122, charSet), 122)
156-
t.is(entropyStringLength(128, charSet), 128)
166+
const fns = [entropyStringLength, entropyStringLengthNoCrypto]
167+
for (let i = 0; i < 2; i++) {
168+
t.is(fns[i]( 1, charSet), 1)
169+
t.is(fns[i]( 2, charSet), 2)
170+
t.is(fns[i]( 3, charSet), 3)
171+
t.is(fns[i]( 32, charSet), 32)
172+
t.is(fns[i]( 48, charSet), 48)
173+
t.is(fns[i](122, charSet), 122)
174+
t.is(fns[i](128, charSet), 128)
175+
}
157176
})
158177

159178
test('Bits using total, risk', t => {
@@ -548,6 +567,12 @@ test('Custom 2 chars', t => {
548567
}
549568
})
550569

570+
test('No crypto', t => {
571+
let charSet = entropy.charSet32
572+
t.is(entropyStringLengthNoCrypto(5, charSet), 1)
573+
t.is(entropyStringLengthNoCrypto(6, charSet), 2)
574+
})
575+
551576
const entropyString = (bits, charSet, arr) => {
552577
let bytes = Buffer.from(arr)
553578
return entropy.randomStringWithBytes(bits, charSet, bytes)
@@ -557,6 +582,10 @@ const entropyStringLength = (bits, charSet) => {
557582
return entropy.randomString(bits, charSet).length
558583
}
559584

585+
const entropyStringLengthNoCrypto = (bits, charSet) => {
586+
return entropy.randomString(bits, charSet, false).length
587+
}
588+
560589
const bitsStringLength = (total, risk, charSet) => {
561590
return entropyStringLength(entropy.bits(total, risk), charSet)
562591
}

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy