Skip to content

Commit f18f9db

Browse files
committed
Add tests for immutable classes
1 parent bc6e367 commit f18f9db

File tree

1 file changed

+54
-0
lines changed

1 file changed

+54
-0
lines changed

python/tests/phonenumberutiltest.py

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)