@@ -20,124 +20,66 @@ func allWordsValid(t *testing.T, list []string) {
2020// These tests are currently the same, but keep them separate in case that changes.
2121var allEmojiValid = allWordsValid
2222
23- func TestSTS10Wordlist (t * testing.T ) {
24- const size = 8
25-
26- tr := newTestRand ()
27-
28- pass , err := Repeat (STS10Wordlist , " " , size ).Password (tr )
29- require .NoError (t , err )
30-
31- assert .Equal (t , "winner vertigo spurs believed dude runaways poorest tourists" , pass )
32- assert .Equal (t , size - 1 , strings .Count (pass , " " ),
33- `strings.Count(%q, " ")` , pass )
34- assert .Truef (t , utf8 .ValidString (pass ),
35- "utf8.ValidString(%q)" , pass )
36-
37- allWordsValid (t , STS10Wordlist .(* embeddedGenerator ).list )
38- }
39-
40- func TestEFFLargeWordlist (t * testing.T ) {
41- const size = 8
42-
43- tr := newTestRand ()
44-
45- pass , err := Repeat (EFFLargeWordlist , " " , size ).Password (tr )
46- require .NoError (t , err )
47-
48- assert .Equal (t , "reprint wool pantry unworried mummify veneering securely munchkin" , pass )
49- assert .Equal (t , size - 1 , strings .Count (pass , " " ),
50- `strings.Count(%q, " ")` , pass )
51- assert .Truef (t , utf8 .ValidString (pass ),
52- "utf8.ValidString(%q)" , pass )
53-
54- allWordsValid (t , EFFLargeWordlist .(* embeddedGenerator ).list )
55- }
56-
57- func TestEFFShortWordlist1 (t * testing.T ) {
58- const size = 8
59-
60- tr := newTestRand ()
61-
62- pass , err := Repeat (EFFShortWordlist1 , " " , size ).Password (tr )
63- require .NoError (t , err )
64-
65- assert .Equal (t , "bush vapor issue ruby carol sleep hula case" , pass )
66- assert .Equal (t , size - 1 , strings .Count (pass , " " ),
67- `strings.Count(%q, " ")` , pass )
68- assert .Truef (t , utf8 .ValidString (pass ),
69- "utf8.ValidString(%q)" , pass )
70-
71- allWordsValid (t , EFFShortWordlist1 .(* embeddedGenerator ).list )
72- }
73-
74- func TestEFFShortWordlist2 (t * testing.T ) {
75- const size = 8
76-
77- tr := newTestRand ()
78-
79- pass , err := Repeat (EFFShortWordlist2 , " " , size ).Password (tr )
80- require .NoError (t , err )
81-
82- assert .Equal (t , "barracuda vegetable idly podiatrist bossiness satchel hexagon boxlike" , pass )
83- assert .Equal (t , size - 1 , strings .Count (pass , " " ),
84- `strings.Count(%q, " ")` , pass )
85- assert .Truef (t , utf8 .ValidString (pass ),
86- "utf8.ValidString(%q)" , pass )
87-
88- allWordsValid (t , EFFShortWordlist2 .(* embeddedGenerator ).list )
89- }
90-
91- func TestEmoji13 (t * testing.T ) {
92- const size = 25
93-
94- tr := newTestRand ()
95-
96- for _ , expect := range []string {
97- "💙🏂🏽🧑🏽\u200d 🦱🤙🏾🧗🏿\u200d ♀️🧑🏻\u200d 🤝\u200d 🧑🏻🐭🚵🏿🚴🏿🏠💇🏾\u200d ♂️💁🏻🙍🏾\u200d ♂️👩🏾\u200d 🦲🧑🏿\u200d 🤝\u200d 🧑🏼✨🖐🏿🎮🔑🏔️🔹🇩🇲💇🏼\u200d ♀️🕶️🧙🏼" ,
98- "🫕👳🏽\u200d ♀️👩🏻\u200d 💻👰🏿\u200d ♀️🇲🇻🔃🖖🏻🧛🏿\u200d ♂️👩🏼\u200d 🤝\u200d 👩🏻🧚🏿🇧🇦🇹🇻🇱🇹🍆🧑🏻\u200d 🤝\u200d 🧑🏾🌲👨🏼\u200d 🦼🏌🏻\u200d ♂️👨\u200d 🚀😸👰🏽\u200d ♀️🦖#️⃣👴🏼💂🏻" ,
99- "🏌️\u200d ♂️💲🐗🥇↘️👰🇨🇷👈🏽🦸🏿\u200d ♂️🗺️🇭🇺🇯🇴🚣🏻👷🏽\u200d ♂️🧖🏿🇬🇭🤙🏿🥾🤪⛹🏻👩🏻\u200d 🌾☸️🧨▶️🐎" ,
100- "🧑🏻\u200d 🤝\u200d 🧑🏾👨🏼\u200d 🤝\u200d 👨🏿🏆🕙🏆🏃🏻\u200d ♂️🤿👨🏿\u200d ⚕️🧑🏾🤛🏼🏋🏿🧑🏽\u200d 🏭👮🏼\u200d ♀️🙅🏾\u200d ♂️Ⓜ️🧘🏾☑️⛴️🎙️🚭🦸🏻\u200d ♂️🥷🏻📙👨🏾\u200d ⚖️🍤" ,
23+ func TestEmbeddedWordlist (t * testing.T ) {
24+ for _ , tc := range []struct {
25+ name string
26+ gen Generator
27+ expect string
28+ }{
29+ {"OrchardStreetMedium" , OrchardStreetMedium , "pavilion extinct stadium furnace shores pirates hospital influenced" },
30+ {"OrchardStreetLong" , OrchardStreetLong , "agreed stopping brilliant elongated richness populous sprung grassland" },
31+ {"OrchardStreetAlpha" , OrchardStreetAlpha , "bees told hymn pride boy scout hum bus" },
32+ {"OrchardStreetQWERTY" , OrchardStreetQWERTY , "bids trio hurry queer buyer sect hull cadres" },
33+ {"STS10Wordlist" , STS10Wordlist , "winner vertigo spurs believed dude runaways poorest tourists" },
34+ {"EFFLargeWordlist" , EFFLargeWordlist , "reprint wool pantry unworried mummify veneering securely munchkin" },
35+ {"EFFShortWordlist1" , EFFShortWordlist1 , "bush vapor issue ruby carol sleep hula case" },
36+ {"EFFShortWordlist2" , EFFShortWordlist2 , "barracuda vegetable idly podiatrist bossiness satchel hexagon boxlike" },
10137 } {
102- pass , err := Repeat (Emoji13 , "" , size ).Password (tr )
103- if ! assert .NoError (t , err ) {
104- continue
105- }
106-
107- assert .Equal (t , expect , pass )
108- assert .Equal (t , size , countEmojiInString (Emoji13 .(* embeddedGenerator ).list , pass ),
109- "countEmojiInString(%q)" , pass )
110- assert .Truef (t , utf8 .ValidString (pass ),
111- "utf8.ValidString(%q)" , pass )
38+ tc := tc
39+ t .Run (tc .name , func (t * testing.T ) {
40+ const size = 8
41+
42+ tr := newTestRand ()
43+ pass , err := Repeat (tc .gen , " " , size ).Password (tr )
44+ require .NoError (t , err )
45+
46+ assert .Equal (t , tc .expect , pass )
47+ assert .Equal (t , size - 1 , strings .Count (pass , " " ),
48+ `strings.Count(%q, " ")` , pass )
49+ assert .Truef (t , utf8 .ValidString (pass ),
50+ "utf8.ValidString(%q)" , pass )
51+
52+ allWordsValid (t , tc .gen .(* embeddedGenerator ).list )
53+ })
11254 }
113-
114- allEmojiValid (t , Emoji13 .(* embeddedGenerator ).list )
11555}
11656
117- func TestEmoji15 (t * testing.T ) {
118- const size = 25
119-
120- tr := newTestRand ()
121-
122- for _ , expect := range []string {
123- "➡️🦸🏼\u200d ♂️👩🏾\u200d 🦳📱✍🏻🪣👨🏾\u200d 🌾🤩🤵🏽\u200d ♂️👮🏼🧗🏾\u200d ♂️👷🏾\u200d ♀️🧝🏾\u200d ♂️👔🟨↗️🕵🏽👦🏽🏃🏽\u200d ♂️🦶🤾🏿\u200d ♂️⛺👮🏿👇🏽👳🏿" ,
124- "🌀🦿👈🏽🏄🏽\u200d ♀️🧑🏻\u200d 🦰🔃🫣🏪🪿🧗🏽👃8️⃣👩🏿\u200d 🦰🇹🇦👮🏼\u200d ♂️👨🏼\u200d ❤️\u200d 👨🏿🧑🏿\u200d 🦱🤸🏽\u200d ♂️🛫👩🏻\u200d 🦰👩🏽\u200d ❤️\u200d 💋\u200d 👨🏾🦶🏾㊗️👩🏼\u200d 🎤💁🏻\u200d ♂️" ,
125- "🧑🏿\u200d 🤝\u200d 🧑🏻🚶🏻\u200d ♂️👨🏿\u200d ⚖️🔟👨🏿\u200d 🤝\u200d 👨🏾👨\u200d 👩\u200d 👦🧝🏽\u200d ♀️🔽🙋🏿\u200d ♂️🧑🏼👩🏾\u200d 🍼💆🏻\u200d ♂️👩🏿\u200d 🦽🐀💂🏻\u200d ♀️🆑🍠🥸🤚🏾🚶🏻\u200d ♂️🇦🇲💙👐💪🏾🫁" ,
126- "👱🏻🧒🏿🧢🐖👨🏿\u200d ✈️🦀🎅👨🏾\u200d ❤️\u200d 💋\u200d 👨🏼👨🏼\u200d 🦱🎫🥻🙆🏿\u200d ♂️👩🏼\u200d ❤️\u200d 💋\u200d 👨🏼👴🏿💪🏻💂🏿\u200d ♂️🛌🌚🏈👩🏻\u200d 🤝\u200d 👨🏽🛀🏾👋🏾🧑🏼\u200d 🤝\u200d 🧑🏻🏫✋🏼" ,
57+ func TestEmoji (t * testing.T ) {
58+ for _ , tc := range []struct {
59+ name string
60+ gen Generator
61+ expect string
62+ }{
63+ {"Emoji13" , Emoji13 , "💙🏂🏽🧑🏽\u200d 🦱🤙🏾🧗🏿\u200d ♀️🧑🏻\u200d 🤝\u200d 🧑🏻🐭🚵🏿🚴🏿🏠💇🏾\u200d ♂️💁🏻🙍🏾\u200d ♂️👩🏾\u200d 🦲🧑🏿\u200d 🤝\u200d 🧑🏼✨🖐🏿🎮🔑🏔️🔹🇩🇲💇🏼\u200d ♀️🕶️🧙🏼🫕👳🏽\u200d ♀️👩🏻\u200d 💻👰🏿\u200d ♀️🇲🇻🔃🖖🏻🧛🏿\u200d ♂️👩🏼\u200d 🤝\u200d 👩🏻🧚🏿🇧🇦🇹🇻🇱🇹🍆🧑🏻\u200d 🤝\u200d 🧑🏾🌲👨🏼\u200d 🦼🏌🏻\u200d ♂️👨\u200d 🚀😸👰🏽\u200d ♀️🦖#️⃣👴🏼💂🏻🏌️\u200d ♂️💲🐗🥇↘️👰🇨🇷👈🏽🦸🏿\u200d ♂️🗺️🇭🇺🇯🇴🚣🏻👷🏽\u200d ♂️🧖🏿🇬🇭🤙🏿🥾🤪⛹🏻👩🏻\u200d 🌾☸️🧨▶️🐎🧑🏻\u200d 🤝\u200d 🧑🏾👨🏼\u200d 🤝\u200d 👨🏿🏆🕙🏆🏃🏻\u200d ♂️🤿👨🏿\u200d ⚕️🧑🏾🤛🏼🏋🏿🧑🏽\u200d 🏭👮🏼\u200d ♀️🙅🏾\u200d ♂️Ⓜ️🧘🏾☑️⛴️🎙️🚭🦸🏻\u200d ♂️🥷🏻📙👨🏾\u200d ⚖️🍤" },
64+ {"Emoji15" , Emoji15 , "➡️🦸🏼\u200d ♂️👩🏾\u200d 🦳📱✍🏻🪣👨🏾\u200d 🌾🤩🤵🏽\u200d ♂️👮🏼🧗🏾\u200d ♂️👷🏾\u200d ♀️🧝🏾\u200d ♂️👔🟨↗️🕵🏽👦🏽🏃🏽\u200d ♂️🦶🤾🏿\u200d ♂️⛺👮🏿👇🏽👳🏿🌀🦿👈🏽🏄🏽\u200d ♀️🧑🏻\u200d 🦰🔃🫣🏪🪿🧗🏽👃8️⃣👩🏿\u200d 🦰🇹🇦👮🏼\u200d ♂️👨🏼\u200d ❤️\u200d 👨🏿🧑🏿\u200d 🦱🤸🏽\u200d ♂️🛫👩🏻\u200d 🦰👩🏽\u200d ❤️\u200d 💋\u200d 👨🏾🦶🏾㊗️👩🏼\u200d 🎤💁🏻\u200d ♂️🧑🏿\u200d 🤝\u200d 🧑🏻🚶🏻\u200d ♂️👨🏿\u200d ⚖️🔟👨🏿\u200d 🤝\u200d 👨🏾👨\u200d 👩\u200d 👦🧝🏽\u200d ♀️🔽🙋🏿\u200d ♂️🧑🏼👩🏾\u200d 🍼💆🏻\u200d ♂️👩🏿\u200d 🦽🐀💂🏻\u200d ♀️🆑🍠🥸🤚🏾🚶🏻\u200d ♂️🇦🇲💙👐💪🏾🫁👱🏻🧒🏿🧢🐖👨🏿\u200d ✈️🦀🎅👨🏾\u200d ❤️\u200d 💋\u200d 👨🏼👨🏼\u200d 🦱🎫🥻🙆🏿\u200d ♂️👩🏼\u200d ❤️\u200d 💋\u200d 👨🏼👴🏿💪🏻💂🏿\u200d ♂️🛌🌚🏈👩🏻\u200d 🤝\u200d 👨🏽🛀🏾👋🏾🧑🏼\u200d 🤝\u200d 🧑🏻🏫✋🏼" },
12765 } {
128- pass , err := Repeat (Emoji15 , "" , size ).Password (tr )
129- if ! assert .NoError (t , err ) {
130- continue
131- }
132-
133- assert .Equal (t , expect , pass )
134- assert .Equal (t , size , countEmojiInString (Emoji15 .(* embeddedGenerator ).list , pass ),
135- "countEmojiInString(%q)" , pass )
136- assert .Truef (t , utf8 .ValidString (pass ),
137- "utf8.ValidString(%q)" , pass )
66+ tc := tc
67+ t .Run (tc .name , func (t * testing.T ) {
68+ const size = 100
69+
70+ tr := newTestRand ()
71+ pass , err := Repeat (tc .gen , "" , size ).Password (tr )
72+ require .NoError (t , err )
73+
74+ assert .Equal (t , tc .expect , pass )
75+ assert .Equal (t , size , countEmojiInString (tc .gen .(* embeddedGenerator ).list , pass ),
76+ "countEmojiInString(%q)" , pass )
77+ assert .Truef (t , utf8 .ValidString (pass ),
78+ "utf8.ValidString(%q)" , pass )
79+
80+ allEmojiValid (t , tc .gen .(* embeddedGenerator ).list )
81+ })
13882 }
139-
140- allEmojiValid (t , Emoji15 .(* embeddedGenerator ).list )
14183}
14284
14385func countEmojiInString (list []string , s string ) int {
0 commit comments