def test_object_caching (self): # Creating a Character with the same IPA form as an existing # Character must return the existing Character, if both are # associated with the same BinaryFeaturesModel. character1 = BaseCharacter(self.bfm, 'a') character2 = BaseCharacter(self.bfm, 'a') self.assertEqual(character1, character2) character3 = BaseCharacter(self.bfm, 'b') self.assertNotEqual(character1, character3) bfm2 = BinaryFeaturesModel() character4 = BaseCharacter(bfm2, 'a') self.assertNotEqual(character1, character4) # It is an error to create a Character with the same IPA form # but of a different type (subclass). self.assertRaises(InvalidCharacterError, DiacriticCharacter, self.bfm, 'a') # Initialising of the Character should happen only once. feature = BaseFeature(self.bfm, 'voiced') character1.set_feature_value(feature, HAS_FEATURE) self.assertEqual(character1.get_feature_value(feature), HAS_FEATURE) character5 = BaseCharacter(self.bfm, 'a') self.assertEqual(character1.get_feature_value(feature), HAS_FEATURE) character6 = DiacriticCharacter(self.bfm, 'c') character6.set_feature_value(feature, HAS_FEATURE) self.assertEqual(character6.get_feature_value(feature), HAS_FEATURE) character7 = DiacriticCharacter(self.bfm, 'c') self.assertEqual(character6.get_feature_value(feature), HAS_FEATURE) character8 = SpacingCharacter(self.bfm, 'd') character8.set_feature_value(feature, HAS_FEATURE) self.assertEqual(character8.get_feature_value(feature), HAS_FEATURE) character9 = SpacingCharacter(self.bfm, 'd') self.assertEqual(character8.get_feature_value(feature), HAS_FEATURE) character10 = SuprasegmentalCharacter(self.bfm, 'e') feature2 = SuprasegmentalFeature(self.bfm, 'syllabic') character10.set_feature_value(feature2, HAS_FEATURE) self.assertEqual(character10.get_feature_value(feature2), HAS_FEATURE) character11 = SuprasegmentalCharacter(self.bfm, 'e') self.assertEqual(character10.get_feature_value(feature2), HAS_FEATURE)
def test_object_caching(self): # Creating a Character with the same IPA form as an existing # Character must return the existing Character, if both are # associated with the same BinaryFeaturesModel. character1 = BaseCharacter(self.bfm, 'a') character2 = BaseCharacter(self.bfm, 'a') self.assertEqual(character1, character2) character3 = BaseCharacter(self.bfm, 'b') self.assertNotEqual(character1, character3) bfm2 = BinaryFeaturesModel() character4 = BaseCharacter(bfm2, 'a') self.assertNotEqual(character1, character4) # It is an error to create a Character with the same IPA form # but of a different type (subclass). self.assertRaises(InvalidCharacterError, DiacriticCharacter, self.bfm, 'a') # Initialising of the Character should happen only once. feature = BaseFeature(self.bfm, 'voiced') character1.set_feature_value(feature, HAS_FEATURE) self.assertEqual(character1.get_feature_value(feature), HAS_FEATURE) character5 = BaseCharacter(self.bfm, 'a') self.assertEqual(character1.get_feature_value(feature), HAS_FEATURE) character6 = DiacriticCharacter(self.bfm, 'c') character6.set_feature_value(feature, HAS_FEATURE) self.assertEqual(character6.get_feature_value(feature), HAS_FEATURE) character7 = DiacriticCharacter(self.bfm, 'c') self.assertEqual(character6.get_feature_value(feature), HAS_FEATURE) character8 = SpacingCharacter(self.bfm, 'd') character8.set_feature_value(feature, HAS_FEATURE) self.assertEqual(character8.get_feature_value(feature), HAS_FEATURE) character9 = SpacingCharacter(self.bfm, 'd') self.assertEqual(character8.get_feature_value(feature), HAS_FEATURE) character10 = SuprasegmentalCharacter(self.bfm, 'e') feature2 = SuprasegmentalFeature(self.bfm, 'syllabic') character10.set_feature_value(feature2, HAS_FEATURE) self.assertEqual(character10.get_feature_value(feature2), HAS_FEATURE) character11 = SuprasegmentalCharacter(self.bfm, 'e') self.assertEqual(character10.get_feature_value(feature2), HAS_FEATURE)