def test_match(self): # test matches as well as groupdict aliasing. one = Matcher('values-{android_locale}/strings.xml') self.assertEqual( one.match('values-de/strings.xml'), { 'android_locale': 'de', 'locale': 'de' } ) self.assertEqual( one.match('values-de-rDE/strings.xml'), { 'android_locale': 'de-rDE', 'locale': 'de-DE' } ) self.assertEqual( one.match('values-b+sr+Latn/strings.xml'), { 'android_locale': 'b+sr+Latn', 'locale': 'sr-Latn' } ) self.assertEqual( one.with_env( {'locale': 'de'} ).match('values-de/strings.xml'), { 'android_locale': 'de', 'locale': 'de' } ) self.assertEqual( one.with_env( {'locale': 'de-DE'} ).match('values-de-rDE/strings.xml'), { 'android_locale': 'de-rDE', 'locale': 'de-DE' } ) self.assertEqual( one.with_env( {'locale': 'sr-Latn'} ).match('values-b+sr+Latn/strings.xml'), { 'android_locale': 'b+sr+Latn', 'locale': 'sr-Latn' } )
def test_prefix(self): one = Matcher('values-{android_locale}/strings.xml') self.assertEqual( one.with_env({ 'locale': 'de' }).prefix, 'values-de/strings.xml') self.assertEqual( one.with_env({ 'locale': 'de-DE' }).prefix, 'values-de-rDE/strings.xml') self.assertEqual( one.with_env({ 'locale': 'sr-Latn' }).prefix, 'values-b+sr+Latn/strings.xml') self.assertEqual(one.prefix, 'values-')
def test_mismatch(self): # test failed matches one = Matcher('values-{android_locale}/strings.xml') self.assertIsNone( one.with_env({ 'locale': 'de' }).match('values-fr.xml')) self.assertIsNone( one.with_env({ 'locale': 'de-DE' }).match('values-de-DE.xml')) self.assertIsNone( one.with_env({ 'locale': 'sr-Latn' }).match('values-sr-Latn.xml')) self.assertIsNone( Matcher('{android_locale}/{android_locale}').match( 'b+sr+Latn/de-rDE'))
def test_prefix(self): one = Matcher('values-{android_locale}/strings.xml') self.assertEqual( one.with_env({'locale': 'de'}).prefix, 'values-de/strings.xml' ) self.assertEqual( one.with_env({'locale': 'de-DE'}).prefix, 'values-de-rDE/strings.xml' ) self.assertEqual( one.with_env({'locale': 'sr-Latn'}).prefix, 'values-b+sr+Latn/strings.xml' ) self.assertEqual( one.prefix, 'values-' )
def test_aliases(self): # test legacy locale code mapping # he <-> iw, id <-> in, yi <-> ji one = Matcher('values-{android_locale}/strings.xml') for legacy, standard in six.iteritems(ANDROID_STANDARD_MAP): self.assertDictEqual( one.match('values-{}/strings.xml'.format(legacy)), { 'android_locale': legacy, 'locale': standard }) self.assertEqual( one.with_env({ 'locale': standard }).prefix, 'values-{}/strings.xml'.format(legacy))
def test_mismatch(self): # test failed matches one = Matcher('values-{android_locale}/strings.xml') self.assertIsNone( one.with_env({'locale': 'de'}).match( 'values-fr.xml' ) ) self.assertIsNone( one.with_env({'locale': 'de-DE'}).match( 'values-de-DE.xml' ) ) self.assertIsNone( one.with_env({'locale': 'sr-Latn'}).match( 'values-sr-Latn.xml' ) ) self.assertIsNone( Matcher('{android_locale}/{android_locale}').match( 'b+sr+Latn/de-rDE' ) )
def test_aliases(self): # test legacy locale code mapping # he <-> iw, id <-> in, yi <-> ji one = Matcher('values-{android_locale}/strings.xml') for legacy, standard in six.iteritems(ANDROID_STANDARD_MAP): self.assertDictEqual( one.match('values-{}/strings.xml'.format(legacy)), { 'android_locale': legacy, 'locale': standard } ) self.assertEqual( one.with_env({'locale': standard}).prefix, 'values-{}/strings.xml'.format(legacy) )