Example #1
0
 def test_dict_concrete_and_generic_key_type(self):
     s = Schema({ "name": str, int: str })
     self.assertEqual({ "name": "Peter", 1: "one" },
             s.validate({ "name": "Peter", 1: "one" }))
     with self.assertRaises(SchemaError):
         s.validate({ 1: "one", 2: "two" })     # Missing "name"
     with self.assertRaises(SchemaError):
         s.validate({ "name": "Peter", 1: 1})   # Invalid value
     with self.assertRaises(SchemaError):
         s.validate({ "name": "Peter", "1": 1}) # Invalid key
Example #2
0
 def test_dict_generic_key_type(self):
     # A dictionary that maps string to numbers
     s = Schema({ str: int })
     self.assertEqual({}, s.validate({}))
     self.assertEqual({ "a": 1, "b": 2 }).validate({ "a": 1, "b": 2})
     with self.assertRaises(SchemaError):
         s.validate({ 1: 1 })     # Wrong key
     with self.assertRaises(SchemaError):
         s.validate({ "a": "a" }) # Wrong value
Example #3
0
 def test_nested_match(self):
     s = Schema({"uid": StringMatch(r"[a-z][a-z_]+")})
     self.assertEqual({ "uid": "jdoe" }, s.validate({ "uid": "jdoe" }))
Example #4
0
 def test_optional_precedes_type(self):
     s = Schema({ "a": Optional(int, default=42), str: 22 })
     self.assertEqual({ "a": 42, "b": 22 }, s.validate({ "b": 22 }))
Example #5
0
 def test_optional_default_value(self):
     s = Schema({ "value": Optional(int, default=42) })
     self.assertEqual({ "value": 42 }, s.validate({}))
     self.assertEqual({ "value": 10 }, s.validate({ "value": 10 }))
Example #6
0
 def test_nested_schema(self):
     s = Schema({ "value": Schema(int) })
     self.assertEqual({ "value": 4 }, s.validate({ "value": 4 }))
     with self.assertRaises(SchemaError):
         s.validate({ "value": "invalid value" })