def test_listexpander_map( self ): static_source = StaticSource( FieldSet([ Field( 'city', StringFieldType() ), Field( 'geometry', ListFieldType() ), Field( 'latitude', FloatFieldType() ), Field( 'longitude', FloatFieldType() ) ], FieldMap({ 'city': 0, 'geometry': 1 })) ) static_source.setResource([ [ 'Balatonlelle', [[17.6874552,46.7871465],[17.6865955,46.7870049],[17.6846158,46.7866786],[17.6834977,46.7864944],[17.6822251,46.7862847],[17.6815319,46.7861705],[17.6811473,46.7861071],[17.6795989,46.785852],[17.6774482,46.7854976],[17.6739061,46.7849139],[17.6729351,46.7847539],[17.6720789,46.7846318]] ], [ 'Balatonlelle', [[17.6871206,46.7880197],[17.6874552,46.7871465]] ], [ 'Balatonboglar', "[[17.6709959,46.7843474],[17.6710995,46.7840514],[17.6711443,46.7838791],[17.6711725,46.7837746],[17.6713146,46.7831483]]" ] ]) expand = ListExpanderExpand( static_source, 'geometry', expanderMap = { 'latitude': 1, 'longitude': 0 } ).initialize() records = [ r for r in expand.getRecords() ] self.assertEqual( len( records ), 19 ) self.assertEqual( records[10].getField('city').getValue(), 'Balatonlelle' ) self.assertEqual( records[10].getField('latitude').getValue(), 46.7847539 ) self.assertEqual( records[-1].getField('city').getValue(), 'Balatonboglar' ) self.assertEqual( records[-1].getField('longitude').getValue(), 17.6713146 )
def setUp(self): self.fs = FieldSet([ Field('id', IntegerFieldType(), defaultValue=1, key=True), Field('name', StringFieldType(), defaultValue='John doe'), Field('email', StringFieldType(), key=True), Field('birth_date', DateFieldType(), field_final_type=StringFieldType()), Field('favourite_number', FloatFieldType()), Field('created', DateTimeFieldType(), defaultValue='2013-04-04 18:44:32'), Field('updated', DateTimeFieldType(), defaultValue='2013-04-04 18:44:32') ]) self.fm = FieldMap({ 'id': 0, 'name': 1, 'email': 2, 'birth_date': 3, 'favourite_number': 4, 'created': 5, 'updated': 6, 'not_existing_field_name': 6 })
def setUp( self ): self.integer_field = Field( 'integer', IntegerFieldType(), defaultValue = 4 ) self.float_field = Field( 'float', FloatFieldType(), defaultValue = 4.32 ) self.date_field = Field( 'date', DateFieldType(), defaultValue = '2013-02-05' ) self.string_field = Field( 'string', StringFieldType(), defaultValue = 'test' ) self.empty_int_field = Field( 'integer_empty', IntegerFieldType() ) self.empty_str_field = Field( 'string_empty', StringFieldType(), defaultValue = '' )
def test_float_field_type( self ): ft = FloatFieldType() with self.assertRaises( FieldTypeError ): ft.getValue( 'invalid' ) self.assertEqual( ft.getValue( 4.1232 ), 4.1232 ) self.assertEqual( ft.getValue('4.1232'), 4.1232 ) self.assertEqual( ft.getValue('4,1232'), 4.1232 ) self.assertEqual( ft.getValue('3'), 3.0 ) self.assertIsNone( ft.getValue( None ) )
def test_field_type_convert_to_boolean( self ): fs = BooleanFieldType() self.assertTrue( fs.getValue( BooleanFieldType().getValue( True ) ) ) self.assertTrue( fs.getValue( DateFieldType().getValue( datetime.date.today() ) ) ) self.assertTrue( fs.getValue( DateTimeFieldType().getValue( datetime.datetime.now() ) ) ) self.assertTrue( fs.getValue( FloatFieldType().getValue( 4.32112 ) ) ) self.assertTrue( fs.getValue( IntegerFieldType().getValue( 5 ) ) ) self.assertTrue( fs.getValue( StringFieldType().getValue('test') ) ) self.assertTrue( fs.getValue( TextFieldType().getValue('test') ) ) self.assertIsNone( fs.getValue( None ) )
def test_melt( self ): static_source = StaticSource( FieldSet([ Field( 'first', StringFieldType() ), Field( 'height', FloatFieldType() ), Field( 'last', StringFieldType() ), Field( 'weight', IntegerFieldType() ), Field( 'iq', IntegerFieldType() ), Field( 'quantity', StringFieldType() ), Field( 'value', FloatFieldType() ) ], FieldMap({ 'first': 0, 'height': 1, 'last': 2, 'weight': 3, 'iq': 4 })) ) static_source.setResource([ ['John',5.5,'Doe',130,102], ['Mary',6.0,'Bo',150,98] ]) expand = MeltExpand( static_source, fieldNames = ['first','last'], valueFieldName = 'value', labelFieldName = 'quantity' ).initialize() records = [ r for r in expand.getRecords() ] self.assertEqual( len( records ), 6 ) self.assertEqual( len( records[0].getFieldNames() ), 4) self.assertEqual( records[-1].getField('first').getValue(), 'Mary' ) self.assertEqual( records[-1].getField('last').getValue(), 'Bo' ) self.assertEqual( records[-1].getField('quantity').getValue(), 'height' ) self.assertEqual( records[-1].getField('value').getValue(), 6.0 )
def test_field_type_convert_to_text( self ): fs = TextFieldType() self.assertEqual( fs.getValue( BooleanFieldType().getValue( True ) ), 'True' ) self.assertEqual( fs.getValue( BooleanFieldType().getValue( False ) ), 'False' ) self.assertEqual( fs.getValue( DateFieldType().getValue( datetime.date( 2013, 2, 3 ) ) ), '2013-02-03' ) self.assertEqual( fs.getValue( DateTimeFieldType().getValue( datetime.datetime( 2013, 4, 4, 16, 06, 58, 929515 ) ) ), '2013-04-04 16:06:58.929515' ) self.assertEqual( fs.getValue( FloatFieldType().getValue( 4.232 ) ), '4.232' ) self.assertEqual( fs.getValue( IntegerFieldType().getValue( 5 ) ), '5' ) self.assertEqual( fs.getValue( StringFieldType().getValue('text') ), 'text' ) self.assertEqual( fs.getValue( TextFieldType().getValue('text') ), 'text' ) self.assertIsNone( fs.getValue( None ) )
def test_field_type_convert_to_integer( self ): fs = IntegerFieldType() with self.assertRaises( FieldTypeError ): fs.getValue( DateFieldType().getValue('2013-02-03') ) with self.assertRaises( FieldTypeError ): fs.getValue( DateFieldType().getValue('2013-04-04 16:06:58.929515') ) with self.assertRaises( FieldTypeError ): fs.getValue( StringFieldType().getValue('test') ) with self.assertRaises( FieldTypeError ): fs.getValue( TextFieldType().getValue('test') ) self.assertEqual( fs.getValue( BooleanFieldType().getValue( True ) ), 1 ) self.assertEqual( fs.getValue( BooleanFieldType().getValue( False ) ), 0 ) self.assertEqual( fs.getValue( FloatFieldType().getValue( 4.232 ) ), 4 ) self.assertEqual( fs.getValue( IntegerFieldType().getValue( 5 ) ), 5 ) self.assertEqual( fs.getValue( StringFieldType().getValue('5') ), 5 ) self.assertEqual( fs.getValue( TextFieldType().getValue('5') ), 5 ) self.assertIsNone( fs.getValue( None ) )
def test_field_type_convert_to_datetime( self ): fs = DateTimeFieldType() with self.assertRaises( FieldTypeError ): fs.getValue( BooleanFieldType().getValue( True ) ) with self.assertRaises( FieldTypeError ): fs.getValue( FloatFieldType().getValue( 4.32112 ) ) with self.assertRaises( FieldTypeError ): fs.getValue( IntegerFieldType().getValue( 5 ) ) with self.assertRaises( FieldTypeError ): fs.getValue( StringFieldType().getValue('test') ) with self.assertRaises( FieldTypeError ): fs.getValue( TextFieldType().getValue('test') ) self.assertEqual( fs.getValue( DateFieldType().getValue('2013-04-04 16:06:58.929515') ), datetime.datetime( 2013, 4, 4 ) ) self.assertEqual( fs.getValue( DateTimeFieldType().getValue( datetime.datetime( 2013, 4, 4, 16, 06, 58, 929515 ) ) ), datetime.datetime( 2013, 4, 4, 16, 06, 58, 929515 ) ) self.assertEqual( fs.getValue( StringFieldType().getValue('2013-04-04 16:06:58.929515') ), datetime.datetime( 2013, 4, 4, 16, 06, 58, 929515 ) ) self.assertEqual( fs.getValue( TextFieldType().getValue('2013-04-04 16:06:58.929515') ), datetime.datetime( 2013, 4, 4, 16, 06, 58, 929515 ) ) self.assertIsNone( fs.getValue( None ) )
def test_field_type_convert_to_date( self ): fs = DateFieldType() with self.assertRaises( FieldTypeError ): fs.getValue( BooleanFieldType().getValue( True ) ) with self.assertRaises( FieldTypeError ): fs.getValue( FloatFieldType().getValue( 4.32112 ) ) with self.assertRaises( FieldTypeError ): fs.getValue( IntegerFieldType().getValue( 5 ) ) with self.assertRaises( FieldTypeError ): fs.getValue( StringFieldType().getValue('test') ) with self.assertRaises( FieldTypeError ): fs.getValue( TextFieldType().getValue('test') ) self.assertEqual( fs.getValue( DateFieldType().getValue( datetime.date.today() ) ), datetime.date.today() ) self.assertEqual( fs.getValue( DateTimeFieldType().getValue( datetime.datetime.now() ) ), datetime.date.today() ) self.assertEqual( fs.getValue( StringFieldType().getValue('2013-02-03') ), datetime.date( 2013, 2, 3 ) ) self.assertEqual( fs.getValue( TextFieldType().getValue('2013-02-03') ), datetime.date( 2013, 2, 3 ) ) self.assertIsNone( fs.getValue( None ) )
def test_is_in_source_condition( self ): false_source_records = [ FieldSet([ Field( 'integer', IntegerFieldType(), defaultValue = 1 ), Field( 'float', FloatFieldType(), defaultValue = 4.2 ), Field( 'date', DateFieldType(), defaultValue = '2012-02-04' ) ]), FieldSet([ Field( 'integer', IntegerFieldType(), defaultValue = 2 ), Field( 'float', FloatFieldType(), defaultValue = 4.3 ), Field( 'date', DateFieldType(), defaultValue = '2012-02-05' ) ]), FieldSet([ Field( 'integer', IntegerFieldType(), defaultValue = 3 ), Field( 'float', FloatFieldType(), defaultValue = 4.4 ), Field( 'date', DateFieldType(), defaultValue = '2012-02-06' ) ]) ] self.assertFalse( IsInSourceCondition( false_source_records, 'integer' ).getResult( self.integer_field ) ) self.assertFalse( IsInSourceCondition( false_source_records, 'float' ).getResult( self.float_field ) ) self.assertFalse( IsInSourceCondition( false_source_records, 'date' ).getResult( self.date_field ) ) true_source_records = [ FieldSet([ Field( 'integer', IntegerFieldType(), defaultValue = 3 ), Field( 'float', FloatFieldType(), defaultValue = 4.31 ), Field( 'date', DateFieldType(), defaultValue = '2012-02-04' ) ]), FieldSet([ Field( 'integer', IntegerFieldType(), defaultValue = 4 ), Field( 'float', FloatFieldType(), defaultValue = 4.32 ), Field( 'date', DateFieldType(), defaultValue = '2013-02-05' ) ]), FieldSet([ Field( 'integer', IntegerFieldType(), defaultValue = 5 ), Field( 'float', FloatFieldType(), defaultValue = 4.33 ), Field( 'date', DateFieldType(), defaultValue = '2012-02-06' ) ]) ] self.assertTrue( IsInSourceCondition( true_source_records, 'integer' ).getResult( self.integer_field ) ) self.assertTrue( IsInSourceCondition( true_source_records, 'float' ).getResult( self.float_field ) ) self.assertTrue( IsInSourceCondition( true_source_records, 'date' ).getResult( self.date_field ) )
def test_field_type_convert_to_float( self ): fs = FloatFieldType() with self.assertRaises( FieldTypeError ): fs.getValue( DateFieldType().getValue('2013-02-03') ) with self.assertRaises( FieldTypeError ): fs.getValue( DateFieldType().getValue('2013-04-04 16:06:58.929515') ) with self.assertRaises( FieldTypeError ): fs.getValue( StringFieldType().getValue('test') ) with self.assertRaises( FieldTypeError ): fs.getValue( TextFieldType().getValue('test') ) self.assertEqual( fs.getValue( BooleanFieldType().getValue( True ) ), 1.0 ) self.assertEqual( fs.getValue( BooleanFieldType().getValue( False ) ), 0.0 ) self.assertEqual( fs.getValue( FloatFieldType().getValue( 4.232 ) ), 4.232 ) self.assertEqual( fs.getValue( IntegerFieldType().getValue( 5 ) ), 5.0 ) self.assertEqual( fs.getValue( StringFieldType().getValue('5.232') ), 5.232 ) self.assertEqual( fs.getValue( TextFieldType().getValue('5.232') ), 5.232 ) self.assertIsNone( fs.getValue( None ) )