88from subprocess import getstatusoutput
99
1010prg = './password.py'
11+ words = '../inputs/words.txt'
1112
1213
1314# --------------------------------------------------
1415def test_exists ():
1516 """exists"""
1617
1718 assert os .path .isfile (prg )
19+ assert os .path .isfile (words )
1820
1921
2022# --------------------------------------------------
@@ -43,7 +45,7 @@ def test_bad_num():
4345
4446 bad = random_string ()
4547 flag = '-n' if random .choice ([0 , 1 ]) else '--num'
46- rv , out = getstatusoutput (f'{ prg } { flag } { bad } ' )
48+ rv , out = getstatusoutput (f'{ prg } { flag } { bad } { words } ' )
4749 assert rv != 0
4850 assert re .search (f"invalid int value: '{ bad } '" , out )
4951
@@ -54,7 +56,7 @@ def test_bad_num_words():
5456
5557 bad = random_string ()
5658 flag = '-w' if random .choice ([0 , 1 ]) else '--num_words'
57- rv , out = getstatusoutput (f'{ prg } { flag } { bad } ' )
59+ rv , out = getstatusoutput (f'{ prg } { flag } { bad } { words } ' )
5860 assert rv != 0
5961 assert re .search (f"invalid int value: '{ bad } '" , out )
6062
@@ -65,7 +67,18 @@ def test_bad_min_word_len():
6567
6668 bad = random_string ()
6769 flag = '-m' if random .choice ([0 , 1 ]) else '--min_word_len'
68- rv , out = getstatusoutput (f'{ prg } { flag } { bad } ' )
70+ rv , out = getstatusoutput (f'{ prg } { flag } { bad } { words } ' )
71+ assert rv != 0
72+ assert re .search (f"invalid int value: '{ bad } '" , out )
73+
74+
75+ # --------------------------------------------------
76+ def test_bad_max_word_len ():
77+ """Dies on bad max_word_len"""
78+
79+ bad = random_string ()
80+ flag = '-m' if random .choice ([0 , 1 ]) else '--max_word_len'
81+ rv , out = getstatusoutput (f'{ prg } { flag } { bad } { words } ' )
6982 assert rv != 0
7083 assert re .search (f"invalid int value: '{ bad } '" , out )
7184
@@ -76,11 +89,76 @@ def test_bad_seed():
7689
7790 bad = random_string ()
7891 flag = '-s' if random .choice ([0 , 1 ]) else '--seed'
79- rv , out = getstatusoutput (f'{ prg } { flag } { bad } ' )
92+ rv , out = getstatusoutput (f'{ prg } { flag } { bad } { words } ' )
8093 assert rv != 0
8194 assert re .search (f"invalid int value: '{ bad } '" , out )
8295
8396
97+ # --------------------------------------------------
98+ def test_defaults ():
99+ """Test"""
100+
101+ rv , out = getstatusoutput (f'{ prg } -s 1 { words } ' )
102+ assert rv == 0
103+ assert out .strip () == '\n ' .join ([
104+ 'DuniteBoonLociDefat' , 'WegaTitmalUnplatSatire' , 'IdeanClipsVitiArriet'
105+ ])
106+
107+
108+ # --------------------------------------------------
109+ def test_num ():
110+ """Test"""
111+
112+ rv , out = getstatusoutput (f'{ prg } -s 1 -n 1 { words } ' )
113+ assert rv == 0
114+ assert out .strip () == 'DuniteBoonLociDefat'
115+
116+
117+ # --------------------------------------------------
118+ def test_num_words ():
119+ """Test"""
120+
121+ rv , out = getstatusoutput (f'{ prg } -s 1 -w 2 { words } ' )
122+ assert rv == 0
123+ assert out .strip () == '\n ' .join (['DuniteBoon' , 'LociDefat' , 'WegaTitmal' ])
124+
125+
126+ # --------------------------------------------------
127+ def test_min_word_len ():
128+ """Test"""
129+
130+ rv , out = getstatusoutput (f'{ prg } -s 1 -m 5 { words } ' )
131+ assert rv == 0
132+ assert out .strip () == '\n ' .join ([
133+ 'CarneyRapperWabenoUndine' , 'BabaiFarerBugleOnlepy' ,
134+ 'UnbittMinnyNatalSkanda'
135+ ])
136+
137+
138+ # --------------------------------------------------
139+ def test_max_word_len ():
140+ """Test"""
141+
142+ rv , out = getstatusoutput (f'{ prg } -s 1 -x 10 { words } ' )
143+ assert rv == 0
144+ assert out .strip () == '\n ' .join ([
145+ 'DicemanYardwandBoeberaKismetic' , 'CubiculumTilsitSnowcapSuer' ,
146+ 'ProhasteHaddockChristmasyTenonitis'
147+ ])
148+
149+
150+ # --------------------------------------------------
151+ def test_l33t ():
152+ """Test"""
153+
154+ rv , out = getstatusoutput (f'{ prg } -s 1 -l { words } ' )
155+ assert rv == 0
156+ assert out .strip () == '\n ' .join ([
157+ 'DUn1Teb0onloCiDef4T/' , 'Weg4TiTm@LuNPl4T54+1r3_' ,
158+ 'iD3@Ncl1P5v1+14rrie+/'
159+ ])
160+
161+
84162# --------------------------------------------------
85163def random_string ():
86164 """generate a random string"""
0 commit comments