209
209
def test_text_ui_get_boolean(self):
210
stdin = StringIO("y\nyes with garbage\n"
211
"yes\nn\nnot an answer\n"
210
stdin = StringIO("y\n" # True
212
"yes with garbage\nY\n" # True
213
"not an answer\nno\n" # False
214
"I'm sure!\nyes\n" # True
216
217
stdout = StringIO()
217
218
stderr = StringIO()
218
219
factory = TextUIFactory(stdin, stdout, stderr)
219
220
self.assertEqual(True, factory.get_boolean(""))
220
self.assertEqual(True, factory.get_boolean(""))
221
self.assertEqual(False, factory.get_boolean(""))
222
self.assertEqual(False, factory.get_boolean(""))
223
self.assertEqual(False, factory.get_boolean(""))
224
self.assertEqual(True, factory.get_boolean(""))
221
self.assertEqual(False, factory.get_boolean(""))
222
self.assertEqual(True, factory.get_boolean(""))
223
self.assertEqual(False, factory.get_boolean(""))
224
self.assertEqual(True, factory.get_boolean(""))
225
self.assertEqual(False, factory.get_boolean(""))
225
226
self.assertEqual("foo\n", factory.stdin.read())
226
227
# stdin should be empty
227
228
self.assertEqual('', factory.stdin.readline())
341
342
self.assertEqual(uif.get_username('Enter your user name'), 'mbp')
342
343
self.assertEqual(uif.get_password('Password for %(host)s', host='example.com'),
347
class TestBoolFromString(tests.TestCase):
349
def assertIsTrue(self, s, accepted_values=None):
350
res = _mod_ui.bool_from_string(s, accepted_values=accepted_values)
351
self.assertEquals(True, res)
353
def assertIsFalse(self, s, accepted_values=None):
354
res = _mod_ui.bool_from_string(s, accepted_values=accepted_values)
355
self.assertEquals(False, res)
357
def assertIsNone(self, s, accepted_values=None):
358
res = _mod_ui.bool_from_string(s, accepted_values=accepted_values)
359
self.assertIs(None, res)
361
def test_know_valid_values(self):
362
self.assertIsTrue('true')
363
self.assertIsFalse('false')
364
self.assertIsTrue('1')
365
self.assertIsFalse('0')
366
self.assertIsTrue('on')
367
self.assertIsFalse('off')
368
self.assertIsTrue('yes')
369
self.assertIsFalse('no')
370
self.assertIsTrue('y')
371
self.assertIsFalse('n')
372
# Also try some case variations
373
self.assertIsTrue('True')
374
self.assertIsFalse('False')
375
self.assertIsTrue('On')
376
self.assertIsFalse('Off')
377
self.assertIsTrue('ON')
378
self.assertIsFalse('OFF')
379
self.assertIsTrue('oN')
380
self.assertIsFalse('oFf')
382
def test_invalid_values(self):
383
self.assertIsNone(None)
384
self.assertIsNone('doubt')
385
self.assertIsNone('frue')
386
self.assertIsNone('talse')
387
self.assertIsNone('42')
389
def test_provided_values(self):
390
av = dict(y=True, n=False, yes=True, no=False)
391
self.assertIsTrue('y', av)
392
self.assertIsTrue('Y', av)
393
self.assertIsTrue('Yes', av)
394
self.assertIsFalse('n', av)
395
self.assertIsFalse('N', av)
396
self.assertIsFalse('No', av)
397
self.assertIsNone('1', av)
398
self.assertIsNone('0', av)
399
self.assertIsNone('on', av)
400
self.assertIsNone('off', av)