def test_normalised_form(self):
     feature1 = SuprasegmentalFeature(self.bfm, 'anterior')
     character = SuprasegmentalCharacter(self.bfm, 'n')
     character.set_feature_value(feature1, HAS_FEATURE)
     self.assertEqual(character.normalised_form,
                      NormalisedForm('{0}{1}'.format(SNFM, HAS_FEATURE)))
     # Adding a feature changes the normalised form.
     feature2 = SuprasegmentalFeature(self.bfm, 'dental')
     # All features must have a value.
     self.assertRaises(InvalidCharacterError, getattr, character,
                       'normalised_form')
     character.set_feature_value(feature2, NOT_HAS_FEATURE)
     self.assertEqual(
         character.normalised_form,
         NormalisedForm('{0}{1}{2}'.format(SNFM, HAS_FEATURE,
                                           NOT_HAS_FEATURE)))
     # The order of the normalised form feature values is
     # alphabetical by feature name.
     feature3 = SuprasegmentalFeature(self.bfm, 'consonantal')
     character.set_feature_value(feature3, HAS_FEATURE)
     self.assertEqual(
         character.normalised_form,
         NormalisedForm('{0}{1}{1}{2}'.format(SNFM, HAS_FEATURE,
                                              NOT_HAS_FEATURE)))
     # Renaming a feature may change the normalised form.
     feature3.name = 'vocalic'
     self.assertEqual(
         character.normalised_form,
         NormalisedForm('{0}{1}{2}{1}'.format(SNFM, HAS_FEATURE,
                                              NOT_HAS_FEATURE)))
     # Changing a feature value changes the normalised form.
     character.set_feature_value(feature1, INAPPLICABLE_FEATURE)
     self.assertEqual(
         character.normalised_form,
         NormalisedForm('{0}{3}{2}{1}'.format(SNFM, HAS_FEATURE,
                                              NOT_HAS_FEATURE,
                                              INAPPLICABLE_FEATURE)))
     # Removing a feature value changes the normalised form.
     feature3.delete()
     self.assertEqual(
         character.normalised_form,
         NormalisedForm('{0}{2}{1}'.format(SNFM, NOT_HAS_FEATURE,
                                           INAPPLICABLE_FEATURE)))
     # Adding a feature of a different type does not change the
     # normalised form.
     feature4 = BaseFeature(self.bfm, 'syllabic')
     self.assertEqual(
         character.normalised_form,
         NormalisedForm('{0}{2}{1}'.format(SNFM, NOT_HAS_FEATURE,
                                           INAPPLICABLE_FEATURE)))
Beispiel #2
0
 def test_name(self):
     feature = BaseFeature(self.bfm, 'voiced')
     self.assertEqual(feature.name, 'voiced')
     # Feature names can be set.
     feature.name = 'vocalic'
     self.assertEqual(feature.name, 'vocalic')
     # Feature names must be unique across all features in a binary
     # features model.
     feature2 = SuprasegmentalFeature(self.bfm, 'consonantal')
     self.assertRaises(InvalidFeatureError, setattr, feature2, 'name',
                       'vocalic')
     # Setting the name to the existing name should not raise an error.
     feature2.name = 'consonantal'
     self.assertEqual(feature2.name, 'consonantal')
Beispiel #3
0
 def test_name (self):
     feature = BaseFeature(self.bfm, 'voiced')
     self.assertEqual(feature.name, 'voiced')
     # Feature names can be set.
     feature.name = 'vocalic'
     self.assertEqual(feature.name, 'vocalic')
     # Feature names must be unique across all features in a binary
     # features model.
     feature2 = SuprasegmentalFeature(self.bfm, 'consonantal')
     self.assertRaises(InvalidFeatureError, setattr, feature2, 'name',
                       'vocalic')
     # Setting the name to the existing name should not raise an error.
     feature2.name = 'consonantal'
     self.assertEqual(feature2.name, 'consonantal')
 def test_normalised_form (self):
     feature1 = SuprasegmentalFeature(self.bfm, 'anterior')
     character = SuprasegmentalCharacter(self.bfm, 'n')
     character.set_feature_value(feature1, HAS_FEATURE)
     self.assertEqual(character.normalised_form, NormalisedForm(
             '{0}{1}'.format(SNFM, HAS_FEATURE)))
     # Adding a feature changes the normalised form.
     feature2 = SuprasegmentalFeature(self.bfm, 'dental')
     # All features must have a value.
     self.assertRaises(InvalidCharacterError, getattr, character,
                       'normalised_form')
     character.set_feature_value(feature2, NOT_HAS_FEATURE)
     self.assertEqual(character.normalised_form, NormalisedForm(
             '{0}{1}{2}'.format(SNFM, HAS_FEATURE, NOT_HAS_FEATURE)))
     # The order of the normalised form feature values is
     # alphabetical by feature name.
     feature3 = SuprasegmentalFeature(self.bfm, 'consonantal')
     character.set_feature_value(feature3, HAS_FEATURE)
     self.assertEqual(character.normalised_form, NormalisedForm(
             '{0}{1}{1}{2}'.format(SNFM, HAS_FEATURE, NOT_HAS_FEATURE)))
     # Renaming a feature may change the normalised form.
     feature3.name = 'vocalic'
     self.assertEqual(character.normalised_form, NormalisedForm(
             '{0}{1}{2}{1}'.format(SNFM, HAS_FEATURE, NOT_HAS_FEATURE)))
     # Changing a feature value changes the normalised form.
     character.set_feature_value(feature1, INAPPLICABLE_FEATURE)
     self.assertEqual(character.normalised_form, NormalisedForm(
             '{0}{3}{2}{1}'.format(SNFM, HAS_FEATURE, NOT_HAS_FEATURE,
                                   INAPPLICABLE_FEATURE)))
     # Removing a feature value changes the normalised form.
     feature3.delete()
     self.assertEqual(character.normalised_form, NormalisedForm(
             '{0}{2}{1}'.format(SNFM, NOT_HAS_FEATURE,
                                INAPPLICABLE_FEATURE)))
     # Adding a feature of a different type does not change the
     # normalised form.
     feature4 = BaseFeature(self.bfm, 'syllabic')
     self.assertEqual(character.normalised_form, NormalisedForm(
             '{0}{2}{1}'.format(SNFM, NOT_HAS_FEATURE,
                                INAPPLICABLE_FEATURE)))