X-Git-Url: https://plomlompom.com/repos/%7B%7Bprefix%7D%7D/copy_free?a=blobdiff_plain;f=tests%2Fmisc.py;h=a27f0d0a1f8c0a3330be0e6c6906e3a7d6d53fd2;hb=refs%2Fheads%2Fmaster;hp=d49870fcce0a81179e03461e48bb5b1bb570cae9;hpb=30538b26b3af74041fb6c907c2c142d8f2c11a0e;p=plomtask diff --git a/tests/misc.py b/tests/misc.py index d49870f..a6df2e5 100644 --- a/tests/misc.py +++ b/tests/misc.py @@ -8,101 +8,152 @@ from plomtask.exceptions import BadFormatException class TestsSansServer(TestCase): """Tests that do not require DB setup or a server.""" - def test_InputsParser_non_strict(self) -> None: - """Test behavior of non-strict (= params) InputsParser.""" - params = InputsParser({}, False) - self.assertEqual('', params.get_str('foo')) - params = InputsParser({}, False) - self.assertEqual('bar', params.get_str('foo', 'bar')) - params = InputsParser({'foo': []}, False) - self.assertEqual('bar', params.get_str('foo', 'bar')) - params = InputsParser({'foo': ['baz']}, False) - self.assertEqual('baz', params.get_str('foo', 'bar')) - params = InputsParser({}, False) - self.assertEqual(None, params.get_int_or_none('foo')) - params = InputsParser({'foo': []}, False) - self.assertEqual(None, params.get_int_or_none('foo')) - params = InputsParser({'foo': ['']}, False) - self.assertEqual(None, params.get_int_or_none('foo')) - params = InputsParser({'foo': ['0']}, False) - self.assertEqual(0, params.get_int_or_none('foo')) + def test_InputsParser_get_str_or_fail(self) -> None: + """Test InputsParser.get_str.""" + parser = InputsParser({}) with self.assertRaises(BadFormatException): - InputsParser({'foo': ['None']}, False).get_int_or_none('foo') + parser.get_str_or_fail('foo') + self.assertEqual('bar', parser.get_str_or_fail('foo', 'bar')) + parser = InputsParser({'foo': []}) with self.assertRaises(BadFormatException): - InputsParser({'foo': ['0.1']}, False).get_int_or_none('foo') - params = InputsParser({'foo': ['23']}, False) - self.assertEqual(23, params.get_int_or_none('foo')) + parser.get_str_or_fail('foo') + self.assertEqual('bar', parser.get_str_or_fail('foo', 'bar')) + parser = InputsParser({'foo': ['baz']}) + self.assertEqual('baz', parser.get_str_or_fail('foo', 'bar')) + parser = InputsParser({'foo': ['baz', 'quux']}) + self.assertEqual('baz', parser.get_str_or_fail('foo', 'bar')) - def test_InputsParser_strict(self) -> None: - """Test behavior of strict (= postvars) InputsParser.""" - self.assertEqual([], - InputsParser({}).get_all_str('foo')) - self.assertEqual([], - InputsParser({'foo': []}).get_all_str('foo')) - self.assertEqual(['bar'], - InputsParser({'foo': ['bar']}).get_all_str('foo')) - self.assertEqual(['bar', 'baz'], - InputsParser({'foo': ['bar', 'baz']}). - get_all_str('foo')) - self.assertEqual([], - InputsParser({}).get_all_int('foo')) - self.assertEqual([], - InputsParser({'foo': []}).get_all_int('foo')) - self.assertEqual([], - InputsParser({'foo': ['']}).get_all_int('foo')) - self.assertEqual([0], - InputsParser({'foo': ['0']}).get_all_int('foo')) - self.assertEqual([0, 17], - InputsParser({'foo': ['0', '17']}). - get_all_int('foo')) - with self.assertRaises(BadFormatException): - InputsParser({'foo': ['0.1', '17']}).get_all_int('foo') - with self.assertRaises(BadFormatException): - InputsParser({'foo': ['None', '17']}).get_all_int('foo') - with self.assertRaises(BadFormatException): - InputsParser({}).get_str('foo') + def test_InputsParser_get_str(self) -> None: + """Test InputsParser.get_str.""" + parser = InputsParser({}) + self.assertEqual(None, parser.get_str('foo')) + self.assertEqual('bar', parser.get_str('foo', 'bar')) + parser = InputsParser({'foo': []}) + self.assertEqual(None, parser.get_str('foo')) + self.assertEqual('bar', parser.get_str('foo', 'bar')) + parser = InputsParser({'foo': ['baz']}) + self.assertEqual('baz', parser.get_str('foo', 'bar')) + parser = InputsParser({'foo': ['baz', 'quux']}) + self.assertEqual('baz', parser.get_str('foo', 'bar')) + + def test_InputsParser_get_all_of_key_prefixed(self) -> None: + """Test InputsParser.get_all_of_key_prefixed.""" + parser = InputsParser({}) + self.assertEqual({}, + parser.get_all_of_key_prefixed('')) + self.assertEqual({}, + parser.get_all_of_key_prefixed('foo')) + parser = InputsParser({'foo': ['bar']}) + self.assertEqual({'foo': ['bar']}, + parser.get_all_of_key_prefixed('')) + parser = InputsParser({'x': ['y', 'z']}) + self.assertEqual({'': ['y', 'z']}, + parser.get_all_of_key_prefixed('x')) + parser = InputsParser({'xx': ['y', 'Z']}) + self.assertEqual({'x': ['y', 'Z']}, + parser.get_all_of_key_prefixed('x')) + parser = InputsParser({'xx': ['y']}) + self.assertEqual({}, + parser.get_all_of_key_prefixed('xxx')) + parser = InputsParser({'xxx': ['x'], 'xxy': ['y'], 'xyy': ['z']}) + self.assertEqual({'x': ['x'], 'y': ['y']}, + parser.get_all_of_key_prefixed('xx')) + parser = InputsParser({'xxx': ['x', 'y'], 'xxy': ['y', 'z']}) + self.assertEqual({'x': ['x', 'y'], 'y': ['y', 'z']}, + parser.get_all_of_key_prefixed('xx')) + + def test_InputsParser_get_int_or_none(self) -> None: + """Test InputsParser.get_int_or_none.""" + parser = InputsParser({}) + self.assertEqual(None, parser.get_int_or_none('foo')) + parser = InputsParser({'foo': []}) + self.assertEqual(None, parser.get_int_or_none('foo')) + parser = InputsParser({'foo': ['']}) + self.assertEqual(None, parser.get_int_or_none('foo')) + parser = InputsParser({'foo': ['0']}) + self.assertEqual(0, parser.get_int_or_none('foo')) with self.assertRaises(BadFormatException): - InputsParser({'foo': []}).get_str('foo') - self.assertEqual('bar', - InputsParser({'foo': ['bar']}).get_str('foo')) - self.assertEqual('', - InputsParser({'foo': ['', 'baz']}).get_str('foo')) + InputsParser({'foo': ['None']}).get_int_or_none('foo') with self.assertRaises(BadFormatException): - InputsParser({}).get_int('foo') + InputsParser({'foo': ['0.1']}).get_int_or_none('foo') + parser = InputsParser({'foo': ['23']}) + self.assertEqual(23, parser.get_int_or_none('foo')) + + def test_InputsParser_get_float_or_fail(self) -> None: + """Test InputsParser.get_float_or_fail.""" with self.assertRaises(BadFormatException): - InputsParser({'foo': []}).get_int('foo') + InputsParser({}).get_float_or_fail('foo') with self.assertRaises(BadFormatException): - InputsParser({'foo': ['']}).get_int('foo') + InputsParser({'foo': ['']}).get_float_or_fail('foo') with self.assertRaises(BadFormatException): - InputsParser({'foo': ['bar']}).get_int('foo') + InputsParser({'foo': ['bar']}).get_float_or_fail('foo') + parser = InputsParser({'foo': ['0']}) + self.assertEqual(0, parser.get_float_or_fail('foo')) + parser = InputsParser({'foo': ['0.1']}) + self.assertEqual(0.1, parser.get_float_or_fail('foo')) + parser = InputsParser({'foo': ['1.23', '456']}) + self.assertEqual(1.23, parser.get_float_or_fail('foo')) with self.assertRaises(BadFormatException): - InputsParser({'foo': ['0.1']}).get_int('foo') - self.assertEqual(0, - InputsParser({'foo': ['0']}).get_int('foo')) - self.assertEqual(17, - InputsParser({'foo': ['17', '23']}).get_int('foo')) + InputsParser({}).get_float_or_fail('foo') with self.assertRaises(BadFormatException): - InputsParser({}).get_float('foo') + InputsParser({'foo': []}).get_float_or_fail('foo') + + def test_InputsParser_get_bool(self) -> None: + """Test InputsParser.get_bool.""" + self.assertEqual(0, InputsParser({}).get_bool('foo')) + self.assertEqual(0, InputsParser({'val': ['foo']}).get_bool('foo')) + self.assertEqual(0, InputsParser({'val': ['True']}).get_bool('foo')) + self.assertEqual(0, InputsParser({'foo': []}).get_bool('foo')) + self.assertEqual(0, InputsParser({'foo': ['None']}).get_bool('foo')) + self.assertEqual(0, InputsParser({'foo': ['0']}).get_bool('foo')) + self.assertEqual(0, InputsParser({'foo': ['']}).get_bool('foo')) + self.assertEqual(0, InputsParser({'foo': ['bar']}).get_bool('foo')) + self.assertEqual(0, InputsParser({'foo': ['bar', + 'baz']}).get_bool('foo')) + self.assertEqual(0, InputsParser({'foo': ['False']}).get_bool('foo')) + self.assertEqual(1, InputsParser({'foo': ['true']}).get_bool('foo')) + self.assertEqual(1, InputsParser({'foo': ['True']}).get_bool('foo')) + self.assertEqual(1, InputsParser({'foo': ['1']}).get_bool('foo')) + self.assertEqual(1, InputsParser({'foo': ['on']}).get_bool('foo')) + + def test_InputsParser_get_all_str(self) -> None: + """Test InputsParser.get_all_str.""" + parser = InputsParser({}) + self.assertEqual([], parser.get_all_str('foo')) + parser = InputsParser({'foo': []}) + self.assertEqual([], parser.get_all_str('foo')) + parser = InputsParser({'foo': ['bar']}) + self.assertEqual(['bar'], parser.get_all_str('foo')) + parser = InputsParser({'foo': ['bar', 'baz']}) + self.assertEqual(['bar', 'baz'], parser.get_all_str('foo')) + + def test_InputsParser_get_all_int(self) -> None: + """Test InputsParser.get_all_int.""" + parser = InputsParser({}) + self.assertEqual([], parser.get_all_int('foo')) + parser = InputsParser({'foo': []}) + self.assertEqual([], parser.get_all_int('foo')) + parser = InputsParser({'foo': ['']}) + parser.get_all_int('foo') with self.assertRaises(BadFormatException): - InputsParser({'foo': []}).get_float('foo') + parser.get_all_int('foo', fail_on_empty=True) + parser = InputsParser({'foo': ['0']}) + self.assertEqual([0], parser.get_all_int('foo')) + parser = InputsParser({'foo': ['0', '17']}) + self.assertEqual([0, 17], parser.get_all_int('foo')) + parser = InputsParser({'foo': ['0.1', '17']}) with self.assertRaises(BadFormatException): - InputsParser({'foo': ['']}).get_float('foo') + parser.get_all_int('foo') + parser = InputsParser({'foo': ['None', '17']}) with self.assertRaises(BadFormatException): - InputsParser({'foo': ['bar']}).get_float('foo') - self.assertEqual(0, - InputsParser({'foo': ['0']}).get_float('foo')) - self.assertEqual(0.1, - InputsParser({'foo': ['0.1']}).get_float('foo')) - self.assertEqual(1.23, - InputsParser({'foo': ['1.23', '456']}). - get_float('foo')) + parser.get_all_int('foo') class TestsWithServer(TestCaseWithServer): """Tests against our HTTP server/handler (and database).""" def test_do_GET(self) -> None: - """Test / redirect, and unknown targets failing.""" + """Test GET / redirect, and unknown targets failing.""" self.conn.request('GET', '/') self.check_redirect('/day') self.check_get('/foo', 404)