Ejemplo n.º 1
0
    def test_schema_string(self):
        sch = Schema(SchemaField('foo', 'int64'),
                     SchemaField('bar', 'double', key=True),
                     SchemaField('baz', 'int32'))

        self.assertEqual(len(sch), 3)
        self.assertEqual(sch.schema_string, 'foo:int64,bar*:double,baz:int32')

        sch.schema_string = 'one*:int64,two:int64,three:double,four:int64'

        self.assertEqual(sch.schema_string,
                         'one*:int64,two:int64,three:double,four:int64')
        self.assertEqual(len(sch), 4)
        self.assertEqual(sch.fields['one'].name, 'one')
        self.assertEqual(sch.fields['one'].type, 'int64')
        self.assertEqual(sch.fields['one'].key, True)
        self.assertEqual(sch.fields['two'].name, 'two')
        self.assertEqual(sch.fields['two'].type, 'int64')
        self.assertEqual(sch.fields['two'].key, False)
        self.assertEqual(sch.fields['three'].name, 'three')
        self.assertEqual(sch.fields['three'].type, 'double')
        self.assertEqual(sch.fields['three'].key, False)
        self.assertEqual(sch.fields['four'].name, 'four')
        self.assertEqual(sch.fields['four'].type, 'int64')
        self.assertEqual(sch.fields['four'].key, False)

        sch.schema_string = 'one*:int64,two'

        self.assertEqual(len(sch), 2)
        self.assertEqual(sch.fields['one'].name, 'one')
        self.assertEqual(sch.fields['one'].type, 'int64')
        self.assertEqual(sch.fields['one'].key, True)
        self.assertEqual(sch.fields['two'].name, 'two')
        self.assertEqual(sch.fields['two'].type, 'inherit')
        self.assertEqual(sch.fields['two'].key, False)
Ejemplo n.º 2
0
    def test_copy(self):
        field = SchemaField('foo', 'int64', key='true')

        # Use method
        fcopy = field.copy()
        self.assertTrue(field is not fcopy)
        self.assertEqual(field.name, fcopy.name) 
        self.assertEqual(field.type, fcopy.type) 
        self.assertEqual(field.key, fcopy.key) 

        # Use method with deep=True
        fcopy = field.copy(deep=True)
        self.assertTrue(field is not fcopy)
        self.assertEqual(field.name, fcopy.name) 
        self.assertEqual(field.type, fcopy.type) 
        self.assertEqual(field.key, fcopy.key) 

        # Use copy.copy
        fcopy = copy.copy(field)
        self.assertTrue(field is not fcopy)
        self.assertEqual(field.name, fcopy.name) 
        self.assertEqual(field.type, fcopy.type) 
        self.assertEqual(field.key, fcopy.key) 

        # Use copy.deepcopy
        fcopy = copy.deepcopy(field)
        self.assertTrue(field is not fcopy)
        self.assertEqual(field.name, fcopy.name) 
        self.assertEqual(field.type, fcopy.type) 
        self.assertEqual(field.key, fcopy.key) 
Ejemplo n.º 3
0
    def test_copy(self):
        field = SchemaField('foo', 'int64', key='true')

        # Use method
        fcopy = field.copy()
        self.assertTrue(field is not fcopy)
        self.assertEqual(field.name, fcopy.name)
        self.assertEqual(field.type, fcopy.type)
        self.assertEqual(field.key, fcopy.key)

        # Use method with deep=True
        fcopy = field.copy(deep=True)
        self.assertTrue(field is not fcopy)
        self.assertEqual(field.name, fcopy.name)
        self.assertEqual(field.type, fcopy.type)
        self.assertEqual(field.key, fcopy.key)

        # Use copy.copy
        fcopy = copy.copy(field)
        self.assertTrue(field is not fcopy)
        self.assertEqual(field.name, fcopy.name)
        self.assertEqual(field.type, fcopy.type)
        self.assertEqual(field.key, fcopy.key)

        # Use copy.deepcopy
        fcopy = copy.deepcopy(field)
        self.assertTrue(field is not fcopy)
        self.assertEqual(field.name, fcopy.name)
        self.assertEqual(field.type, fcopy.type)
        self.assertEqual(field.key, fcopy.key)
Ejemplo n.º 4
0
 def test_init(self):
     sch = Schema(SchemaField('a', 'int64'),
                  SchemaField('b', 'double', key=True),
                  SchemaField('c', 'int32'))
     self.assertEqual(list(sch.keys()), ['a', 'b', 'c'])
     self.assertEqual([x.type for x in sch.values()],
                      ['int64', 'double', 'int32'])
     self.assertEqual([x.key for x in sch.values()], [False, True, False])
Ejemplo n.º 5
0
    def test_mapping_methods(self):
        sch = Schema()
        sch.schema_string = 'foo*:double,bar:int64,baz:int32'

        self.assertEqual(sch['foo'].name, 'foo')
        self.assertEqual(sch['foo'].type, 'double')
        self.assertEqual(sch['foo'].key, True)

        sch['foo'] = SchemaField('foo', 'int64', key=False)
        self.assertEqual(sch['foo'].name, 'foo')
        self.assertEqual(sch['foo'].type, 'int64')
        self.assertEqual(sch['foo'].key, False)

        self.assertEqual(sch.schema_string, 'foo:int64,bar:int64,baz:int32')
        del sch['foo']
        self.assertEqual(sch.schema_string, 'bar:int64,baz:int32')

        self.assertEqual(len(list(sch)), 2)
        for i, item in enumerate(sch):
            if i == 0:
                self.assertEqual(item, 'bar')
            elif i == 1:
                self.assertEqual(item, 'baz')

        self.assertEqual(len(sch), 2)
Ejemplo n.º 6
0
    def test_from_xml(self):
        field = SchemaField.from_xml('<field name="foo" type="int64" />')
        self.assertEqual(field.name, 'foo')
        self.assertEqual(field.type, 'int64')
        self.assertEqual(field.key, False)

        field = SchemaField.from_xml('<field name="foo" type="int64" key="true" />')
        self.assertEqual(field.name, 'foo')
        self.assertEqual(field.type, 'int64')
        self.assertEqual(field.key, True)

        field = SchemaField.from_xml(xml.new_elem('field', attrib=dict(name='foo',
                                                                       type='int32',
                                                                       key=True)))
        self.assertEqual(field.name, 'foo')
        self.assertEqual(field.type, 'int32')
        self.assertEqual(field.key, True)
Ejemplo n.º 7
0
 def test_to_element(self):
     field = SchemaField.from_xml('<field name="foo" type="int64" />')
     field = field.to_element()
     self.assertEqual(field.tag, 'field')
     self.assertEqual(field.attrib, {
         'type': 'int64',
         'name': 'foo',
         'key': 'false'
     })
Ejemplo n.º 8
0
    def test_from_xml(self):
        field = SchemaField.from_xml('<field name="foo" type="int64" />')
        self.assertEqual(field.name, 'foo')
        self.assertEqual(field.type, 'int64')
        self.assertEqual(field.key, False)

        field = SchemaField.from_xml(
            '<field name="foo" type="int64" key="true" />')
        self.assertEqual(field.name, 'foo')
        self.assertEqual(field.type, 'int64')
        self.assertEqual(field.key, True)

        field = SchemaField.from_xml(
            xml.new_elem('field',
                         attrib=dict(name='foo', type='int32', key=True)))
        self.assertEqual(field.name, 'foo')
        self.assertEqual(field.type, 'int32')
        self.assertEqual(field.key, True)
Ejemplo n.º 9
0
    def test_init(self):
        field = SchemaField('a', 'int64', key='true')
        self.assertEqual(field.name, 'a')
        self.assertEqual(field.type, 'int64')
        self.assertTrue(field.key is True)

        field = SchemaField('a', 'int64', key='false')
        self.assertEqual(field.name, 'a')
        self.assertEqual(field.type, 'int64')
        self.assertTrue(field.key is False)

        field = SchemaField('a', 'int64', key=1)
        self.assertEqual(field.name, 'a')
        self.assertEqual(field.type, 'int64')
        self.assertTrue(field.key is True)

        field = SchemaField('a', 'int64', key=0)
        self.assertEqual(field.name, 'a')
        self.assertEqual(field.type, 'int64')
        self.assertTrue(field.key is False)
Ejemplo n.º 10
0
 def test_to_xml(self):
     field = SchemaField.from_xml('<field name="foo" type="int64" />')
     field = field.to_xml()
     self.assertEqual(field, '<field key="false" name="foo" type="int64" />')
Ejemplo n.º 11
0
 def test_to_element(self):
     field = SchemaField.from_xml('<field name="foo" type="int64" />')
     field = field.to_element()
     self.assertEqual(field.tag, 'field')
     self.assertEqual(field.attrib, {'type': 'int64', 'name': 'foo', 'key': 'false'})
Ejemplo n.º 12
0
    def test_repr(self):
        field = SchemaField('foo', 'int64', key='true')
        self.assertEqual(repr(field), 'foo*:int64')

        field = SchemaField('foo', 'int64', key='false')
        self.assertEqual(repr(field), 'foo:int64')
Ejemplo n.º 13
0
 def test_to_xml(self):
     field = SchemaField.from_xml('<field name="foo" type="int64" />')
     field = field.to_xml()
     self.assertEqual(field,
                      '<field key="false" name="foo" type="int64" />')