def test_wrong_length(self): X = grammar.TypeExpression('X') composite_type = grammar.CompositeType('C', ['foo', 'bar']) with self.assertRaisesRegex(TypeError, '1'): composite_type[X] composite_type = grammar.CompositeType('C', ['foo']) with self.assertRaisesRegex(TypeError, '2'): composite_type[X, X]
def test_immutable(self): # If this test fails, then the hiearchy has been rearranged and the # properties tested for `_TypeBase` should be tested for # this class. # - Your Friendly Dead Man's Switch self.assertIsInstance(grammar.CompositeType('Example', ('foo', )), grammar._TypeBase)
def test_apply_fields(self): X = grammar.TypeExpression('X') Example = grammar.CompositeType('Example', ('foo', )) result = Example._apply_fields_((X, )) self.assertEqual(result.fields, (X, )) self.assertEqual(result.name, 'Example') self.assertIsInstance(result, grammar.TypeExpression)
def test_and(self): with self.assertRaisesRegex(TypeError, 'intersect'): grammar.CompositeType('Example', ('foo', )) & None
def test_or(self): with self.assertRaisesRegex(TypeError, 'union'): grammar.CompositeType('Example', ('foo', )) | None
def test_mod(self): with self.assertRaisesRegex(TypeError, 'predicate'): grammar.CompositeType('Example', ('foo', )) % None
def test_field_sanity(self): with self.assertRaisesRegex(ValueError, 'empty'): grammar.CompositeType('Example', ())
def test_validate_intersection_w_composite_type(self): X = grammar.TypeExpression('X') with self.assertRaisesRegex(TypeError, 'incomplete'): X._validate_intersection_( grammar.CompositeType('A', field_names=('X', )))
def test_nested_expression(self): X = grammar.TypeExpression('X') C = grammar.CompositeType('C', ['foo', 'bar']) self.assertEqual(repr(C[X, C[C[X, X], X]]), 'C[X, C[C[X, X], X]]')
def test_iter_symbols(self): Example = grammar.CompositeType('Example', ('foo', )) self.assertEqual(list(Example.iter_symbols()), ['Example'])
def test_validate_field_w_nonsense(self): Example = grammar.CompositeType('Example', ('foo', )) with self.assertRaisesRegex(TypeError, 'Ellipsis'): Example._validate_field_('foo', Ellipsis)
def test_validate_field_w_comptype(self): Example = grammar.CompositeType('Example', ('foo', )) with self.assertRaisesRegex(TypeError, 'Incomplete'): Example._validate_field_('foo', Example)
def test_validate_field_w_typeexp(self): Example = grammar.CompositeType('Example', ('foo', )) # Check that no error is raised: Example._validate_field_('foo', grammar.TypeExpression('X'))
def test_repr(self): self.assertEqual(repr(grammar.CompositeType('Example', ('foo', ))), 'Example[{foo}]') self.assertEqual(repr(grammar.CompositeType('Example', ('f', 'b'))), 'Example[{f}, {b}]')