@@ -2217,6 +2217,60 @@ def testMetadataEquality(self):
22172217 self .assertNotEqual (metadata1 , "" )
22182218 self .assertNotEqual (metadata1 , 123 )
22192219
2220+ def testFrozenPhoneNumberImmutable (self ):
2221+ number = PhoneNumber (country_code = 39 , national_number = 236618300L , italian_leading_zero = True )
2222+ frozen1 = FrozenPhoneNumber (country_code = 39 , national_number = 236618300L , italian_leading_zero = True )
2223+ frozen2 = FrozenPhoneNumber (number )
2224+ self .assertEqual (number , frozen1 )
2225+ self .assertEqual (frozen1 , frozen2 )
2226+ number .country_code = 999
2227+ self .assertNotEqual (number , frozen1 )
2228+ try :
2229+ frozen1 .country_code = 999
2230+ self .fail ("Expected exception on __setattr__" )
2231+ except TypeError :
2232+ pass
2233+ try :
2234+ del frozen2 .country_code
2235+ self .fail ("Expected exception on __delattr__" )
2236+ except TypeError :
2237+ pass
2238+
2239+ def testMetadataImmutable (self ):
2240+ desc = PhoneNumberDesc (national_number_pattern = "\\ d{4,8}" )
2241+ nf = NumberFormat (pattern = r'\d{3}' , format = r'\1' , leading_digits_pattern = ['1' ])
2242+ metadata = PhoneMetadata ("XY" , preferred_international_prefix = u'9123' , register = False )
2243+ try :
2244+ desc .national_number_pattern = ""
2245+ self .fail ("Expected exception on __setattr__" )
2246+ except TypeError :
2247+ pass
2248+ try :
2249+ del desc .national_number_pattern
2250+ self .fail ("Expected exception on __delattr__" )
2251+ except TypeError :
2252+ pass
2253+ try :
2254+ nf .pattern = ""
2255+ self .fail ("Expected exception on __setattr__" )
2256+ except TypeError :
2257+ pass
2258+ try :
2259+ del nf .pattern
2260+ self .fail ("Expected exception on __delattr__" )
2261+ except TypeError :
2262+ pass
2263+ try :
2264+ metadata .id = None
2265+ self .fail ("Expected exception on __setattr__" )
2266+ except TypeError :
2267+ pass
2268+ try :
2269+ del metadata .id
2270+ self .fail ("Expected exception on __delattr__" )
2271+ except TypeError :
2272+ pass
2273+
22202274 def testMetadataAsString (self ):
22212275 # Python version extra tests for string conversions
22222276 metadata = PhoneMetadata .region_metadata ["AU" ]
0 commit comments