+ InputsParser({'foo': []}, True).get_str('foo', 'bar')
+ for strictness in (False, True):
+ parser = InputsParser({'foo': ['baz']}, strictness)
+ self.assertEqual('baz', parser.get_str('foo', 'bar'))
+ parser = InputsParser({'foo': ['baz', 'quux']}, strictness)
+ self.assertEqual('baz', parser.get_str('foo', 'bar'))
+
+ def test_InputsParser_get_first_strings_starting(self) -> None:
+ """Test InputsParser.get_first_strings_starting [non-]strict."""
+ for strictness in (False, True):
+ parser = InputsParser({}, strictness)
+ self.assertEqual({},
+ parser.get_first_strings_starting(''))
+ parser = InputsParser({}, strictness)
+ self.assertEqual({},
+ parser.get_first_strings_starting('foo'))
+ parser = InputsParser({'foo': ['bar']}, strictness)
+ self.assertEqual({'foo': 'bar'},
+ parser.get_first_strings_starting(''))
+ parser = InputsParser({'x': ['y']}, strictness)
+ self.assertEqual({'x': 'y'},
+ parser.get_first_strings_starting('x'))
+ parser = InputsParser({'xx': ['y']}, strictness)
+ self.assertEqual({'xx': 'y'},
+ parser.get_first_strings_starting('x'))
+ parser = InputsParser({'xx': ['y']}, strictness)
+ self.assertEqual({},
+ parser.get_first_strings_starting('xxx'))
+ d = {'xxx': ['x'], 'xxy': ['y'], 'xyy': ['z']}
+ parser = InputsParser(d, strictness)
+ self.assertEqual({'xxx': 'x', 'xxy': 'y'},
+ parser.get_first_strings_starting('xx'))
+ d = {'xxx': ['x', 'y', 'z'], 'xxy': ['y', 'z']}
+ parser = InputsParser(d, strictness)
+ self.assertEqual({'xxx': 'x', 'xxy': 'y'},
+ parser.get_first_strings_starting('xx'))
+
+ def test_InputsParser_get_int(self) -> None:
+ """Test InputsParser.get_int on strict and non-strict."""
+ for strictness in (False, True):
+ with self.assertRaises(BadFormatException):
+ InputsParser({}, strictness).get_int('foo')
+ with self.assertRaises(BadFormatException):
+ InputsParser({'foo': []}, strictness).get_int('foo')
+ with self.assertRaises(BadFormatException):
+ InputsParser({'foo': ['']}, strictness).get_int('foo')
+ with self.assertRaises(BadFormatException):
+ InputsParser({'foo': ['bar']}, strictness).get_int('foo')
+ with self.assertRaises(BadFormatException):
+ InputsParser({'foo': ['0.1']}).get_int('foo')
+ parser = InputsParser({'foo': ['0']}, strictness)
+ self.assertEqual(0, parser.get_int('foo'))
+ parser = InputsParser({'foo': ['17', '23']}, strictness)
+ self.assertEqual(17, parser.get_int('foo'))
+
+ def test_InputsParser_get_int_or_none(self) -> None:
+ """Test InputsParser.get_int_or_none on strict and non-strict."""
+ for strictness in (False, True):
+ parser = InputsParser({}, strictness)
+ self.assertEqual(None, parser.get_int_or_none('foo'))
+ parser = InputsParser({'foo': []}, strictness)
+ self.assertEqual(None, parser.get_int_or_none('foo'))
+ parser = InputsParser({'foo': ['']}, strictness)
+ self.assertEqual(None, parser.get_int_or_none('foo'))
+ parser = InputsParser({'foo': ['0']}, strictness)
+ self.assertEqual(0, parser.get_int_or_none('foo'))
+ with self.assertRaises(BadFormatException):
+ InputsParser({'foo': ['None']},
+ strictness).get_int_or_none('foo')
+ with self.assertRaises(BadFormatException):
+ InputsParser({'foo': ['0.1']},
+ strictness).get_int_or_none('foo')
+ parser = InputsParser({'foo': ['23']}, strictness)
+ self.assertEqual(23, parser.get_int_or_none('foo'))
+
+ def test_InputsParser_get_float(self) -> None:
+ """Test InputsParser.get_float on strict and non-strict."""
+ for strictness in (False, True):
+ with self.assertRaises(BadFormatException):
+ InputsParser({}, strictness).get_float('foo')
+ with self.assertRaises(BadFormatException):
+ InputsParser({'foo': []}, strictness).get_float('foo')
+ with self.assertRaises(BadFormatException):
+ InputsParser({'foo': ['']}, strictness).get_float('foo')
+ with self.assertRaises(BadFormatException):
+ InputsParser({'foo': ['bar']}, strictness).get_float('foo')
+ parser = InputsParser({'foo': ['0']}, strictness)
+ self.assertEqual(0, parser.get_float('foo'))
+ parser = InputsParser({'foo': ['0.1']}, strictness)
+ self.assertEqual(0.1, parser.get_float('foo'))
+ parser = InputsParser({'foo': ['1.23', '456']}, strictness)
+ self.assertEqual(1.23, parser.get_float('foo'))
+
+ def test_InputsParser_get_all_str(self) -> None:
+ """Test InputsParser.get_all_str on strict and non-strict."""
+ for strictness in (False, True):
+ parser = InputsParser({}, strictness)
+ self.assertEqual([], parser.get_all_str('foo'))
+ parser = InputsParser({'foo': []}, strictness)
+ self.assertEqual([], parser.get_all_str('foo'))
+ parser = InputsParser({'foo': ['bar']}, strictness)
+ self.assertEqual(['bar'], parser.get_all_str('foo'))
+ parser = InputsParser({'foo': ['bar', 'baz']}, strictness)
+ self.assertEqual(['bar', 'baz'], parser.get_all_str('foo'))
+
+ def test_InputsParser_strict_get_all_int(self) -> None:
+ """Test InputsParser.get_all_int on strict and non-strict."""
+ for strictness in (False, True):
+ parser = InputsParser({}, strictness)
+ self.assertEqual([], parser.get_all_int('foo'))
+ parser = InputsParser({'foo': []}, strictness)
+ self.assertEqual([], parser.get_all_int('foo'))
+ parser = InputsParser({'foo': ['']}, strictness)
+ self.assertEqual([], parser.get_all_int('foo'))
+ parser = InputsParser({'foo': ['0']}, strictness)
+ self.assertEqual([0], parser.get_all_int('foo'))
+ parser = InputsParser({'foo': ['0', '17']}, strictness)
+ self.assertEqual([0, 17], parser.get_all_int('foo'))
+ parser = InputsParser({'foo': ['0.1', '17']}, strictness)
+ with self.assertRaises(BadFormatException):
+ parser.get_all_int('foo')
+ parser = InputsParser({'foo': ['None', '17']}, strictness)
+ with self.assertRaises(BadFormatException):
+ parser.get_all_int('foo')