class Test_Statement( unittest.TestCase ): def setUp( self ): self.field = Field( 'name', StringFieldType() ) self.field.setTransforms([ IFStatement( IsEqualCondition('if_test') ), SetTransform( 'if_test_valid' ), ELIFStatement( IsEqualCondition('elif_test') ), SetTransform( 'elif_test_valid' ), ELSEStatement, SetTransform( 'else_test_valid'), ENDIFStatement, ReturnTrueStatement ]) self.other_field = Field( 'name', StringFieldType() ) self.other_field.setTransforms([ IFNotStatement( IsEqualCondition('if_not_test') ), IFNotStatement( IsEqualCondition('if_if_not_test') ), SetTransform('if_if_not_test_valid'), ELIFNotStatement( IsEqualCondition('if_elif_not_test') ), SetTransform('if_elif_not_test_valid'), ENDIFStatement, ENDIFStatement, ReturnTrueStatement ]) def test_if( self ): self.field.setValue('if_test') self.field.run() self.assertEqual( self.field.getValue(), 'if_test_valid' ) def test_elif( self ): self.field.setValue('elif_test') self.field.run() self.assertEqual( self.field.getValue(), 'elif_test_valid' ) def test_else( self ): self.field.setValue('else_test') self.field.run() self.assertEqual( self.field.getValue(), 'else_test_valid' ) def test_if_not( self ): self.other_field.setValue('if_if_not_test') self.other_field.run() self.assertEqual( self.other_field.getValue(), 'if_elif_not_test_valid' ) def test_elif_not( self ): self.other_field.setValue('if_elif_not_test') self.other_field.run() self.assertEqual( self.other_field.getValue(), 'if_if_not_test_valid' )
class Test_Statement(unittest.TestCase): def setUp(self): self.field = Field('name', StringFieldType()) self.field.setTransforms([ IFStatement(IsEqualCondition('if_test')), SetTransform('if_test_valid'), ELIFStatement(IsEqualCondition('elif_test')), SetTransform('elif_test_valid'), ELSEStatement, SetTransform('else_test_valid'), ENDIFStatement, ReturnTrueStatement ]) self.other_field = Field('name', StringFieldType()) self.other_field.setTransforms([ IFNotStatement(IsEqualCondition('if_not_test')), IFNotStatement(IsEqualCondition('if_if_not_test')), SetTransform('if_if_not_test_valid'), ELIFNotStatement(IsEqualCondition('if_elif_not_test')), SetTransform('if_elif_not_test_valid'), ENDIFStatement, ENDIFStatement, ReturnTrueStatement ]) def test_if(self): self.field.setValue('if_test') self.field.run() self.assertEqual(self.field.getValue(), 'if_test_valid') def test_elif(self): self.field.setValue('elif_test') self.field.run() self.assertEqual(self.field.getValue(), 'elif_test_valid') def test_else(self): self.field.setValue('else_test') self.field.run() self.assertEqual(self.field.getValue(), 'else_test_valid') def test_if_not(self): self.other_field.setValue('if_if_not_test') self.other_field.run() self.assertEqual(self.other_field.getValue(), 'if_elif_not_test_valid') def test_elif_not(self): self.other_field.setValue('if_elif_not_test') self.other_field.run() self.assertEqual(self.other_field.getValue(), 'if_if_not_test_valid')
class Test_Transform(unittest.TestCase): def setUp(self): self.field = Field('string', StringFieldType()) def test_clean_transform(self): self.field.setValue( ' That is a good sentence, which is contains many english word! ') self.field.setTransforms([CleanTransform(replaces={'many': '1+'}) ]).run() self.assertEqual( self.field.getValue(), 'That is a good sentence which is contains 1+ english word') def test_converttype_transform_soft(self): self.field.setValue('2012-02-12') self.field.setFinalType(DateFieldType()) self.field.setTransforms([ConvertTypeTransform('Date')]).run() self.assertEqual(self.field.getValue(), datetime.date(2012, 2, 12)) def test_converttype_transform_soft_invalid(self): self.field.setValue('four miles') self.field.setFinalType(DateFieldType()) with self.assertRaises(FieldTypeError): self.field.setTransforms([ConvertTypeTransform('Date')]).run() def test_converttype_transform_hard(self): self.field.setValue('four miles') self.field.setFinalType(DateFieldType()) self.field.setTransforms([ConvertTypeTransform('Date', hard=True)]).run() self.assertIsNone(self.field.getValue()) def test_converttype_transform_hard_with_default(self): self.field.setValue('four miles') self.field.setFinalType(DateFieldType()) self.field.setTransforms([ ConvertTypeTransform('Date', hard=True, defaultValue=datetime.date.today()) ]).run() self.assertEqual(self.field.getValue(), datetime.date.today()) def test_homogenize_transform(self): self.field.setValue(u'árvíztűrőtükörfúrógépÁRVÍZTŰRŐTÜKÖRFÚRÓGÉP') self.field.setTransforms([HomogenizeTransform]).run() self.assertEqual(self.field.getValue(), 'arvizturotukorfurogeparvizturotukorfurogep') def test_lowercase_transform(self): self.field.setValue( u'That is a good sentence, which is contains many english word!') self.field.setTransforms([LowerCaseTransform]).run() self.assertEqual( self.field.getValue(), 'that is a good sentence, which is contains many english word!') def test_uppercase_transform(self): self.field.setValue( u'That is a good sentence, which is contains many english word!') self.field.setTransforms([UpperCaseTransform]).run() self.assertEqual( self.field.getValue(), 'THAT IS A GOOD SENTENCE, WHICH IS CONTAINS MANY ENGLISH WORD!') def test_strip_transform(self): self.field.setValue( u' That is a good sentence, which is contains many english word! ' ) self.field.setTransforms([StripTransform()]).run() self.assertEqual( self.field.getValue(), 'That is a good sentence, which is contains many english word!') def test_title_transform(self): self.field.setValue( u'That is a good sentence, which is contains many english word!') self.field.setTransforms([TitleTransform]).run() self.assertEqual( self.field.getValue(), 'That Is A Good Sentence, Which Is Contains Many English Word!') def test_stem_transform(self): self.field.setValue( u'contains hungarian members attractive sadness killing') self.field.setTransforms([StemTransform('English')]).run() self.assertEqual(self.field.getValue(), 'contain hungarian member attract sad kill') def test_set_transform(self): self.field.setTransforms( [SetTransform('That will be the final value')]).run() self.assertEqual(self.field.getValue(), 'That will be the final value') def test_set_transform_srintfs(self): self.field.setValue('Myself') self.field.setTransforms([SetTransform('%(self)s or the new string') ]).run() self.assertEqual(self.field.getValue(), 'Myself or the new string') def test_map_transform(self): self.field.setValue(u'Monkey') self.field.setTransforms([MapTransform({'monkey': 'animal'})]).run() self.assertEqual(self.field.getValue(), 'Monkey') def test_map_transform_ignore_case(self): self.field.setValue(u'Monkey') self.field.setTransforms( [MapTransform({'monkey': 'animal'}, ignorecase=True)]).run() self.assertEqual(self.field.getValue(), 'animal') def test_map_transform_not_used_else_value(self): self.field.setValue(u'monkey') self.field.setTransforms( [MapTransform({'monkey': 'animal'}, elseValue='other')]).run() self.assertEqual(self.field.getValue(), 'animal') def test_map_transform_used_else_value(self): self.field.setValue(u'Building') self.field.setTransforms( [MapTransform({'monkey': 'animal'}, elseValue='other')]).run() self.assertEqual(self.field.getValue(), 'other') def test_map_transform_used_else_clear(self): self.field.setValue(u'Building') self.field.setTransforms( [MapTransform({'monkey': 'animal'}, elseClear=True)]).run() self.assertIsNone(self.field.getValue()) def test_replace_by_regexp(self): self.field.setValue(u'2012-04-20') self.field.setTransforms([ ReplaceByRegexpTransform(regexp='^([0-9]{4}-[0-9]{2})-[0-9]{2}$', to='$1') ]).run() self.assertEqual(self.field.getValue(), '2012-04') def test_remove_words_by_source(self): sourceRecords = [ FieldSet( [Field('name', StringFieldType(), defaultValue='killing')]), FieldSet( [Field('name', StringFieldType(), defaultValue='sadness')]), FieldSet( [Field('name', StringFieldType(), defaultValue='hungarian')]) ] self.field.setValue( u'contains hungarian members attractive sadness killing') self.field.setTransforms([RemoveWordsBySourceTransform(sourceRecords) ]).run() self.assertEqual(self.field.getValue(), 'contains members attractive') def test_replace_words_by_source(self): sourceRecords = [ FieldSet([ Field('from', StringFieldType(), defaultValue='killing'), Field('to', StringFieldType(), defaultValue='born') ]), FieldSet([ Field('from', StringFieldType(), defaultValue='sadness'), Field('to', StringFieldType(), defaultValue='happyness') ]), FieldSet([ Field('from', StringFieldType(), defaultValue='hungarian'), Field('to', StringFieldType(), defaultValue='anywhere else') ]) ] self.field.setValue( u'contains hungarian members attractive sadness killing') self.field.setTransforms( [ReplaceWordsBySourceTransform(sourceRecords, join='from')]).run() self.assertEqual( self.field.getValue(), 'contains anywhere else members attractive happyness born') def test_split_transform_first(self): self.field.setValue( u'contains hungarian members attractive sadness killing') self.field.setTransforms([SplitTransform('0')]).run() self.assertEqual(self.field.getValue(), 'contains') def test_split_transform_last(self): self.field.setValue( u'contains hungarian members attractive sadness killing') self.field.setTransforms([SplitTransform('-1')]).run() self.assertEqual(self.field.getValue(), 'killing') def test_split_transform_interval(self): self.field.setValue( u'contains hungarian members attractive sadness killing') self.field.setTransforms([SplitTransform('1:-1')]).run() self.assertEqual(self.field.getValue(), 'hungarian members attractive sadness')
class Test_Transform( unittest.TestCase ): def setUp( self ): self.field = Field( 'string', StringFieldType() ) def test_clean_transform( self ): self.field.setValue(' That is a good sentence, which is contains many english word! ') self.field.setTransforms([ CleanTransform( replaces = { 'many': '1+' } ) ]).run() self.assertEqual( self.field.getValue(), 'That is a good sentence which is contains 1+ english word' ) def test_converttype_transform_soft( self ): self.field.setValue('2012-02-12') self.field.setFinalType( DateFieldType() ) self.field.setTransforms([ ConvertTypeTransform( 'Date' ) ]).run() self.assertEqual( self.field.getValue(), datetime.date( 2012, 2, 12 ) ) def test_converttype_transform_soft_invalid( self ): self.field.setValue('four miles') self.field.setFinalType( DateFieldType() ) with self.assertRaises( FieldTypeError ): self.field.setTransforms([ ConvertTypeTransform( 'Date' ) ]).run() def test_converttype_transform_hard( self ): self.field.setValue('four miles') self.field.setFinalType( DateFieldType() ) self.field.setTransforms([ ConvertTypeTransform( 'Date', hard = True ) ]).run() self.assertIsNone( self.field.getValue() ) def test_converttype_transform_hard_with_default( self ): self.field.setValue('four miles') self.field.setFinalType( DateFieldType() ) self.field.setTransforms([ ConvertTypeTransform( 'Date', hard = True, defaultValue = datetime.date.today() ) ]).run() self.assertEqual( self.field.getValue(), datetime.date.today() ) def test_homogenize_transform( self ): self.field.setValue(u'árvíztűrőtükörfúrógépÁRVÍZTŰRŐTÜKÖRFÚRÓGÉP') self.field.setTransforms([ HomogenizeTransform ]).run() self.assertEqual( self.field.getValue(), 'arvizturotukorfurogeparvizturotukorfurogep' ) def test_lowercase_transform( self ): self.field.setValue(u'That is a good sentence, which is contains many english word!') self.field.setTransforms([ LowerCaseTransform ]).run() self.assertEqual( self.field.getValue(), 'that is a good sentence, which is contains many english word!' ) def test_uppercase_transform( self ): self.field.setValue(u'That is a good sentence, which is contains many english word!') self.field.setTransforms([ UpperCaseTransform ]).run() self.assertEqual( self.field.getValue(), 'THAT IS A GOOD SENTENCE, WHICH IS CONTAINS MANY ENGLISH WORD!' ) def test_strip_transform( self ): self.field.setValue(u' That is a good sentence, which is contains many english word! ') self.field.setTransforms([ StripTransform() ]).run() self.assertEqual( self.field.getValue(), 'That is a good sentence, which is contains many english word!' ) def test_title_transform( self ): self.field.setValue(u'That is a good sentence, which is contains many english word!') self.field.setTransforms([ TitleTransform ]).run() self.assertEqual( self.field.getValue(), 'That Is A Good Sentence, Which Is Contains Many English Word!' ) def test_stem_transform( self ): self.field.setValue(u'contains hungarian members attractive sadness killing') self.field.setTransforms([ StemTransform( 'English' ) ]).run() self.assertEqual( self.field.getValue(), 'contain hungarian member attract sad kill' ) def test_set_transform( self ): self.field.setTransforms([ SetTransform( 'That will be the final value' ) ]).run() self.assertEqual( self.field.getValue(), 'That will be the final value' ) def test_set_transform_srintfs( self ): self.field.setValue('Myself') self.field.setTransforms([ SetTransform( '%(self)s or the new string' ) ]).run() self.assertEqual( self.field.getValue(), 'Myself or the new string' ) def test_map_transform( self ): self.field.setValue(u'Monkey') self.field.setTransforms([ MapTransform({ 'monkey': 'animal' }) ]).run() self.assertEqual( self.field.getValue(), 'Monkey' ) def test_map_transform_ignore_case( self ): self.field.setValue(u'Monkey') self.field.setTransforms([ MapTransform({ 'monkey': 'animal' }, ignorecase = True ) ]).run() self.assertEqual( self.field.getValue(), 'animal' ) def test_map_transform_not_used_else_value( self ): self.field.setValue(u'monkey') self.field.setTransforms([ MapTransform({ 'monkey': 'animal' }, elseValue = 'other' ) ]).run() self.assertEqual( self.field.getValue(), 'animal' ) def test_map_transform_used_else_value( self ): self.field.setValue(u'Building') self.field.setTransforms([ MapTransform({ 'monkey': 'animal' }, elseValue = 'other' ) ]).run() self.assertEqual( self.field.getValue(), 'other' ) def test_map_transform_used_else_clear( self ): self.field.setValue(u'Building') self.field.setTransforms([ MapTransform({ 'monkey': 'animal' }, elseClear = True ) ]).run() self.assertIsNone( self.field.getValue() ) def test_replace_by_regexp( self ): self.field.setValue(u'2012-04-20') self.field.setTransforms([ ReplaceByRegexpTransform( regexp = '^([0-9]{4}-[0-9]{2})-[0-9]{2}$', to = '$1' ) ]).run() self.assertEqual( self.field.getValue(), '2012-04' ) def test_remove_words_by_source( self ): sourceRecords = [ FieldSet([ Field( 'name', StringFieldType(), defaultValue = 'killing' ) ]), FieldSet([ Field( 'name', StringFieldType(), defaultValue = 'sadness' ) ]), FieldSet([ Field( 'name', StringFieldType(), defaultValue = 'hungarian' ) ]) ] self.field.setValue(u'contains hungarian members attractive sadness killing') self.field.setTransforms([ RemoveWordsBySourceTransform( sourceRecords ) ]).run() self.assertEqual( self.field.getValue(), 'contains members attractive' ) def test_replace_words_by_source( self ): sourceRecords = [ FieldSet([ Field( 'from', StringFieldType(), defaultValue = 'killing' ), Field( 'to', StringFieldType(), defaultValue = 'born' ) ]), FieldSet([ Field( 'from', StringFieldType(), defaultValue = 'sadness' ), Field( 'to', StringFieldType(), defaultValue = 'happyness' ) ]), FieldSet([ Field( 'from', StringFieldType(), defaultValue = 'hungarian' ), Field( 'to', StringFieldType(), defaultValue = 'anywhere else' ) ]) ] self.field.setValue(u'contains hungarian members attractive sadness killing') self.field.setTransforms([ ReplaceWordsBySourceTransform( sourceRecords, join = 'from' ) ]).run() self.assertEqual( self.field.getValue(), 'contains anywhere else members attractive happyness born' ) def test_split_transform_first( self ): self.field.setValue(u'contains hungarian members attractive sadness killing') self.field.setTransforms([ SplitTransform( '0' ) ]).run() self.assertEqual( self.field.getValue(), 'contains' ) def test_split_transform_last( self ): self.field.setValue(u'contains hungarian members attractive sadness killing') self.field.setTransforms([ SplitTransform( '-1' ) ]).run() self.assertEqual( self.field.getValue(), 'killing' ) def test_split_transform_interval( self ): self.field.setValue(u'contains hungarian members attractive sadness killing') self.field.setTransforms([ SplitTransform( '1:-1' ) ]).run() self.assertEqual( self.field.getValue(), 'hungarian members attractive sadness' )