<s> import unittest <EOL> import random <EOL> from operator import methodcaller <EOL> from babel import localedata <EOL> class MergeResolveTestCase ( unittest . TestCase ) : <EOL> def test_merge_items ( self ) : <EOL> d = { <NUM_LIT:1> : '<STR_LIT:foo>' , <NUM_LIT:3> : '<STR_LIT>' } <EOL> localedata . merge ( d , { <NUM_LIT:1> : '<STR_LIT>' , <NUM_LIT:2> : '<STR_LIT>' } ) <EOL> self . assertEqual ( { <NUM_LIT:1> : '<STR_LIT>' , <NUM_LIT:2> : '<STR_LIT>' , <NUM_LIT:3> : '<STR_LIT>' } , d ) <EOL> def test_merge_nested_dict ( self ) : <EOL> d1 = { '<STR_LIT:x>' : { '<STR_LIT:a>' : <NUM_LIT:1> , '<STR_LIT:b>' : <NUM_LIT:2> , '<STR_LIT:c>' : <NUM_LIT:3> } } <EOL> d2 = { '<STR_LIT:x>' : { '<STR_LIT:a>' : <NUM_LIT:1> , '<STR_LIT:b>' : <NUM_LIT:12> , '<STR_LIT:d>' : <NUM_LIT> } } <EOL> localedata . merge ( d1 , d2 ) <EOL> self . assertEqual ( { <EOL> '<STR_LIT:x>' : { '<STR_LIT:a>' : <NUM_LIT:1> , '<STR_LIT:b>' : <NUM_LIT:12> , '<STR_LIT:c>' : <NUM_LIT:3> , '<STR_LIT:d>' : <NUM_LIT> } <EOL> } , d1 ) <EOL> def test_merge_nested_dict_no_overlap ( self ) : <EOL> d1 = { '<STR_LIT:x>' : { '<STR_LIT:a>' : <NUM_LIT:1> , '<STR_LIT:b>' : <NUM_LIT:2> } } <EOL> d2 = { '<STR_LIT:y>' : { '<STR_LIT:a>' : <NUM_LIT:11> , '<STR_LIT:b>' : <NUM_LIT:12> } } <EOL> localedata . merge ( d1 , d2 ) <EOL> self . assertEqual ( { <EOL> '<STR_LIT:x>' : { '<STR_LIT:a>' : <NUM_LIT:1> , '<STR_LIT:b>' : <NUM_LIT:2> } , <EOL> '<STR_LIT:y>' : { '<STR_LIT:a>' : <NUM_LIT:11> , '<STR_LIT:b>' : <NUM_LIT:12> } <EOL> } , d1 ) <EOL> def test_merge_with_alias_and_resolve ( self ) : <EOL> alias = localedata . Alias ( '<STR_LIT:x>' ) <EOL> d1 = { <EOL> '<STR_LIT:x>' : { '<STR_LIT:a>' : <NUM_LIT:1> , '<STR_LIT:b>' : <NUM_LIT:2> , '<STR_LIT:c>' : <NUM_LIT:3> } , <EOL> '<STR_LIT:y>' : alias <EOL> } <EOL> d2 = { <EOL> '<STR_LIT:x>' : { '<STR_LIT:a>' : <NUM_LIT:1> , '<STR_LIT:b>' : <NUM_LIT:12> , '<STR_LIT:d>' : <NUM_LIT> } , <EOL> '<STR_LIT:y>' : { '<STR_LIT:b>' : <NUM_LIT> , '<STR_LIT:e>' : <NUM_LIT> } <EOL> } <EOL> localedata . merge ( d1 , d2 ) <EOL> self . assertEqual ( { <EOL> '<STR_LIT:x>' : { '<STR_LIT:a>' : <NUM_LIT:1> , '<STR_LIT:b>' : <NUM_LIT:12> , '<STR_LIT:c>' : <NUM_LIT:3> , '<STR_LIT:d>' : <NUM_LIT> } , <EOL> '<STR_LIT:y>' : ( alias , { '<STR_LIT:b>' : <NUM_LIT> , '<STR_LIT:e>' : <NUM_LIT> } ) <EOL> } , d1 ) <EOL> d = localedata . LocaleDataDict ( d1 ) <EOL> self . assertEqual ( { <EOL> '<STR_LIT:x>' : { '<STR_LIT:a>' : <NUM_LIT:1> , '<STR_LIT:b>' : <NUM_LIT:12> , '<STR_LIT:c>' : <NUM_LIT:3> , '<STR_LIT:d>' : <NUM_LIT> } , <EOL> '<STR_LIT:y>' : { '<STR_LIT:a>' : <NUM_LIT:1> , '<STR_LIT:b>' : <NUM_LIT> , '<STR_LIT:c>' : <NUM_LIT:3> , '<STR_LIT:d>' : <NUM_LIT> , '<STR_LIT:e>' : <NUM_LIT> } <EOL> } , dict ( d . items ( ) ) ) <EOL> def test_load ( ) : <EOL> assert localedata . load ( '<STR_LIT>' ) [ '<STR_LIT>' ] [ '<STR_LIT>' ] == '<STR_LIT>' <EOL> assert localedata . load ( '<STR_LIT>' ) is localedata . load ( '<STR_LIT>' ) <EOL> def test_merge ( ) : <EOL> d = { <NUM_LIT:1> : '<STR_LIT:foo>' , <NUM_LIT:3> : '<STR_LIT>' } <EOL> localedata . merge ( d , { <NUM_LIT:1> : '<STR_LIT>' , <NUM_LIT:2> : '<STR_LIT>' } ) <EOL> assert d == { <NUM_LIT:1> : '<STR_LIT>' , <NUM_LIT:2> : '<STR_LIT>' , <NUM_LIT:3> : '<STR_LIT>' } <EOL> def test_locale_identification ( ) : <EOL> for l in localedata . locale_identifiers ( ) : <EOL> assert localedata . exists ( l ) <EOL> def test_unique_ids ( ) : <EOL> all_ids = localedata . locale_identifiers ( ) <EOL> assert len ( all_ids ) == len ( set ( all_ids ) ) <EOL> lower_case_ids = list ( map ( methodcaller ( '<STR_LIT>' ) , all_ids ) ) <EOL> assert len ( lower_case_ids ) == len ( set ( lower_case_ids ) ) <EOL> def test_mixedcased_locale ( ) : <EOL> for l in localedata . locale_identifiers ( ) : <EOL> locale_id = '<STR_LIT>' . join ( [ <EOL> methodcaller ( random . choice ( [ '<STR_LIT>' , '<STR_LIT>' ] ) ) ( c ) for c in l ] ) <EOL> assert localedata . exists ( locale_id ) </s>
