Another schema test

This commit is contained in:
Tony Garnock-Jones 2022-06-07 21:59:05 +02:00
parent 7ebe538c42
commit 2e8d53c779
1 changed files with 29 additions and 12 deletions

View File

@ -12,17 +12,34 @@ class BasicSchemaTests(unittest.TestCase):
def test_dictionary_literal(self): def test_dictionary_literal(self):
m = literal_schema( m = literal_schema(
's', 's',
meta.Schema( parse('''
version = meta.Version(), <schema {
embeddedType = meta.EmbeddedTypeName.false(), version: 1,
definitions = meta.Definitions({ embeddedType: #f,
Symbol('C'): meta.Definition.Pattern( definitions: {
meta.Pattern.CompoundPattern( C: <dict {"core": <lit true>}>
meta.CompoundPattern.dict( }
meta.DictionaryEntries({ }>
"core": meta.NamedSimplePattern.anonymous( '''))
meta.SimplePattern.lit(Symbol('true')))
}))))
})))
self.assertEqual(m.s.C.decode({'core': Symbol('true')}), m.s.C()) self.assertEqual(m.s.C.decode({'core': Symbol('true')}), m.s.C())
self.assertEqual(preserve(m.s.C()), {'core': Symbol('true')}) self.assertEqual(preserve(m.s.C()), {'core': Symbol('true')})
def test_alternation_of_dictionary_literal(self):
m = literal_schema(
's',
parse('''
<schema {
version: 1,
embeddedType: #f,
definitions: {
C: <or [
["notcore" <dict {"notcore": <lit true>}>]
["core" <dict {"core": <lit true>}>]
]>
}
}>
'''))
self.assertEqual(m.s.C.decode({'core': Symbol('true')}), m.s.C.core())
self.assertEqual(preserve(m.s.C.core()), {'core': Symbol('true')})
self.assertEqual(m.s.C.decode({'notcore': Symbol('true')}), m.s.C.notcore())
self.assertEqual(preserve(m.s.C.notcore()), {'notcore': Symbol('true')})