10aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root/* 20aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root * Copyright (C) 2011 The Android Open Source Project 30aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root * 40aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root * Licensed under the Apache License, Version 2.0 (the "License"); 50aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root * you may not use this file except in compliance with the License. 60aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root * You may obtain a copy of the License at 70aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root * 80aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root * http://www.apache.org/licenses/LICENSE-2.0 90aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root * 100aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root * Unless required by applicable law or agreed to in writing, software 110aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root * distributed under the License is distributed on an "AS IS" BASIS, 120aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 130aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root * See the License for the specific language governing permissions and 140aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root * limitations under the License. 150aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root */ 160aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 170aaa0d931716e9f57a1d84d795fab2df75092756Kenny Rootpackage android.content.pm; 180aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 190aaa0d931716e9f57a1d84d795fab2df75092756Kenny Rootimport android.os.Parcel; 200aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 210aaa0d931716e9f57a1d84d795fab2df75092756Kenny Rootimport java.util.Random; 220aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 230aaa0d931716e9f57a1d84d795fab2df75092756Kenny Rootpublic class VerifierDeviceIdentityTest extends android.test.AndroidTestCase { 240aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root private static final long TEST_1 = 0x7A5F00FF5A55AAA5L; 250aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 260aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root private static final String TEST_1_ENCODED = "HUXY-A75N-FLKV-F"; 270aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 28a0f264e1afa3c0a00a5af0db362f884b122d978dKenny Root private static final String TEST_1_ENCODED_LOWERCASE = "huxy-a75n-flkv-f"; 29a0f264e1afa3c0a00a5af0db362f884b122d978dKenny Root 300aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root private static final long TEST_2 = 0x5A05FF5A05F0A555L; 310aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 320aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root private static final long TEST_MAXVALUE = Long.MAX_VALUE; 330aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 340aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root private static final String TEST_MAXVALUE_ENCODED = "H777-7777-7777-7"; 350aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 360aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root private static final long TEST_MINVALUE = Long.MIN_VALUE; 370aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 380aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root private static final String TEST_MINVALUE_ENCODED = "IAAA-AAAA-AAAA-A"; 390aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 400aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root private static final long TEST_ZERO = 0L; 410aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 420aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root private static final String TEST_ZERO_ENCODED = "AAAA-AAAA-AAAA-A"; 430aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 440aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root private static final long TEST_NEGONE = -1L; 450aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 460aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root private static final String TEST_NEGONE_ENCODED = "P777-7777-7777-7"; 470aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 480aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root private static final String TEST_OVERFLOW_ENCODED = "QAAA-AAAA-AAAA-A"; 490aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 50a0f264e1afa3c0a00a5af0db362f884b122d978dKenny Root private static final String TEST_SUBSTITUTION_CORRECTED = "OIIO-IIOO-IOOI-I"; 51a0f264e1afa3c0a00a5af0db362f884b122d978dKenny Root 52a0f264e1afa3c0a00a5af0db362f884b122d978dKenny Root private static final String TEST_SUBSTITUTION_UNCORRECTED = "0110-1100-1001-1"; 53a0f264e1afa3c0a00a5af0db362f884b122d978dKenny Root 540aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root public void testVerifierDeviceIdentity_Equals_Success() { 550aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root VerifierDeviceIdentity id1 = new VerifierDeviceIdentity(TEST_1); 560aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root VerifierDeviceIdentity id2 = new VerifierDeviceIdentity(TEST_1); 570aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 580aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root assertTrue("The two VerifierDeviceIdentity instances should be equal", id1.equals(id2)); 590aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root } 600aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 610aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root public void testVerifierDeviceIdentity_Equals_Failure() { 620aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root VerifierDeviceIdentity id1 = new VerifierDeviceIdentity(TEST_1); 630aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root VerifierDeviceIdentity id2 = new VerifierDeviceIdentity(TEST_2); 640aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 650aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root assertFalse("The two VerifierDeviceIdentity instances should be unique", id1.equals(id2)); 660aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root } 670aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 680aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root public void testVerifierDeviceIdentity_HashCode() { 690aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root VerifierDeviceIdentity id1 = new VerifierDeviceIdentity(TEST_1); 700aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 710aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root assertEquals("The VerifierDeviceIdentity should have the same hashcode as its identity", 720aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root (int) TEST_1, id1.hashCode()); 730aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root } 740aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 750aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root public void testVerifierDeviceIdentity_ToString_Success() { 760aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root VerifierDeviceIdentity id1 = new VerifierDeviceIdentity(TEST_1); 770aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 780aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root assertEquals("The identity should encode correctly to the expected Base 32 string", 790aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root TEST_1_ENCODED, id1.toString()); 800aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root } 810aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 820aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root public void testVerifierDeviceIdentity_ToString_Largest() { 830aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root VerifierDeviceIdentity id1 = new VerifierDeviceIdentity(TEST_MAXVALUE); 840aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 850aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root assertEquals("The identity should encode correctly to the expected Base 32 string", 860aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root TEST_MAXVALUE_ENCODED, id1.toString()); 870aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root } 880aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 890aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root public void testVerifierDeviceIdentity_ToString_Zero() { 900aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root VerifierDeviceIdentity id1 = new VerifierDeviceIdentity(TEST_ZERO); 910aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 920aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root assertEquals("The identity should encode correctly to the expected Base 32 string", 930aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root TEST_ZERO_ENCODED, id1.toString()); 940aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root } 950aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 960aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root public void testVerifierDeviceIdentity_ToString_NegOne() { 970aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root VerifierDeviceIdentity id1 = new VerifierDeviceIdentity(TEST_NEGONE); 980aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 990aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root assertEquals("The identity should encode correctly to the expected Base 32 string", 1000aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root TEST_NEGONE_ENCODED, id1.toString()); 1010aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root } 1020aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 1030aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root public void testVerifierDeviceIdentity_ToString_MinValue() { 1040aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root VerifierDeviceIdentity id1 = new VerifierDeviceIdentity(TEST_MINVALUE); 1050aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 1060aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root assertEquals("The identity should encode correctly to the expected Base 32 string", 1070aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root TEST_MINVALUE_ENCODED, id1.toString()); 1080aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root } 1090aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 1100aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root public void testVerifierDeviceIdentity_Parcel_ReadNegative() { 1110aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root VerifierDeviceIdentity id1 = new VerifierDeviceIdentity(TEST_MINVALUE); 1120aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 1130aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root Parcel parcel = Parcel.obtain(); 1140aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root parcel.writeLong(TEST_MINVALUE); 1150aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root parcel.setDataPosition(0); 1160aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 1170aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root VerifierDeviceIdentity id2 = VerifierDeviceIdentity.CREATOR.createFromParcel(parcel); 1180aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 1190aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root assertEquals("Parcel created should match expected value", id1, id2); 1200aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root } 1210aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 1220aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root public void testVerifierDeviceIdentity_Parcel_Read_Pass() { 1230aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root VerifierDeviceIdentity id1 = new VerifierDeviceIdentity(TEST_1); 1240aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 1250aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root Parcel parcel = Parcel.obtain(); 1260aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root id1.writeToParcel(parcel, 0); 1270aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root parcel.setDataPosition(0); 1280aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 1290aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root VerifierDeviceIdentity id2 = VerifierDeviceIdentity.CREATOR.createFromParcel(parcel); 1300aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 1310aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root assertEquals("Original identity and parceled identity should be the same", id1, id2); 1320aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root } 1330aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 134a0f264e1afa3c0a00a5af0db362f884b122d978dKenny Root @SuppressWarnings("serial") 1350aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root private static class MockRandom extends Random { 1360aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root private long mNextLong; 1370aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 1380aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root public MockRandom() { 1390aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root } 1400aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 1410aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root public void setNextLong(long nextLong) { 1420aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root mNextLong = nextLong; 1430aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root } 1440aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 1450aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root @Override 1460aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root public long nextLong() { 1470aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root return mNextLong; 1480aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root } 1490aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root } 1500aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 1510aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root public void testVerifierDeviceIdentity_Generate_MinValue() { 1520aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root VerifierDeviceIdentity id1 = new VerifierDeviceIdentity(TEST_MINVALUE); 1530aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 1540aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root MockRandom random = new MockRandom(); 1550aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root random.setNextLong(Long.MIN_VALUE); 1560aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root VerifierDeviceIdentity id2 = VerifierDeviceIdentity.generate(random); 1570aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 1580aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root assertEquals("Identity created from Long.MIN_VALUE and one created from return from RNG" 1590aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root + " should be the same", id1, id2); 1600aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root } 1610aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 1620aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root public void testVerifierDeviceIdentity_Generate_Random() { 1630aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root VerifierDeviceIdentity id1 = new VerifierDeviceIdentity(TEST_1); 1640aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 1650aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root MockRandom random = new MockRandom(); 1660aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root random.setNextLong(TEST_1); 1670aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root VerifierDeviceIdentity id2 = VerifierDeviceIdentity.generate(random); 1680aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 1690aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root assertEquals("Identity should end up being same when coming from RNG", id1, id2); 1700aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root } 1710aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 1720aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root public void testVerifierDeviceIdentity_Parse_Normal() { 1730aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root VerifierDeviceIdentity id1 = new VerifierDeviceIdentity(TEST_1); 1740aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 1750aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root VerifierDeviceIdentity id2 = VerifierDeviceIdentity.parse(TEST_1_ENCODED); 1760aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 1770aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root assertEquals("Parsed device identity should have the same value as original identity", 1780aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root id1, id2); 1790aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root } 1800aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 1810aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root public void testVerifierDeviceIdentity_Parse_MaxValue() { 1820aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root VerifierDeviceIdentity id1 = new VerifierDeviceIdentity(TEST_MAXVALUE); 1830aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 1840aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root VerifierDeviceIdentity id2 = VerifierDeviceIdentity.parse(TEST_MAXVALUE_ENCODED); 1850aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 1860aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root assertEquals("Original max value and parsed max value should be equal", id1, id2); 1870aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root } 1880aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 1890aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root public void testVerifierDeviceIdentity_Parse_TooShort() { 1900aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root try { 191a0f264e1afa3c0a00a5af0db362f884b122d978dKenny Root VerifierDeviceIdentity.parse("AAAA-AAAA-AAAA-"); 1920aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root fail("Parsing should fail when device identifier is too short"); 1930aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root } catch (IllegalArgumentException e) { 1940aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root // success 1950aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root } 1960aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root } 1970aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 1980aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root public void testVerifierDeviceIdentity_Parse_WayTooShort() { 1990aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root try { 200a0f264e1afa3c0a00a5af0db362f884b122d978dKenny Root VerifierDeviceIdentity.parse("----------------"); 2010aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root fail("Parsing should fail when device identifier is too short"); 2020aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root } catch (IllegalArgumentException e) { 2030aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root // success 2040aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root } 2050aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root } 2060aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 2070aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root public void testVerifierDeviceIdentity_Parse_TooLong() { 2080aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root try { 209a0f264e1afa3c0a00a5af0db362f884b122d978dKenny Root VerifierDeviceIdentity.parse("AAAA-AAAA-AAAA-AA"); 2100aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root fail("Parsing should fail when device identifier is too long"); 2110aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root } catch (IllegalArgumentException e) { 2120aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root // success 2130aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root } 2140aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root } 2150aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 2160aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root public void testVerifierDeviceIdentity_Parse_Overflow() { 2170aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root try { 218a0f264e1afa3c0a00a5af0db362f884b122d978dKenny Root VerifierDeviceIdentity.parse(TEST_OVERFLOW_ENCODED); 2190aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root fail("Parsing should fail when the value will overflow"); 2200aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root } catch (IllegalArgumentException e) { 2210aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root // success 2220aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root } 2230aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root } 224a0f264e1afa3c0a00a5af0db362f884b122d978dKenny Root 225a0f264e1afa3c0a00a5af0db362f884b122d978dKenny Root public void testVerifierDeviceIdentity_Parse_SquashToUppercase() { 226a0f264e1afa3c0a00a5af0db362f884b122d978dKenny Root VerifierDeviceIdentity id1 = new VerifierDeviceIdentity(TEST_1); 227a0f264e1afa3c0a00a5af0db362f884b122d978dKenny Root 228a0f264e1afa3c0a00a5af0db362f884b122d978dKenny Root VerifierDeviceIdentity id2 = VerifierDeviceIdentity.parse(TEST_1_ENCODED_LOWERCASE); 229a0f264e1afa3c0a00a5af0db362f884b122d978dKenny Root 230a0f264e1afa3c0a00a5af0db362f884b122d978dKenny Root assertEquals("Lowercase should parse to be the same as uppercase", id1, id2); 231a0f264e1afa3c0a00a5af0db362f884b122d978dKenny Root 232a0f264e1afa3c0a00a5af0db362f884b122d978dKenny Root assertEquals("Substituted identity should render to the same string", 233a0f264e1afa3c0a00a5af0db362f884b122d978dKenny Root id1.toString(), id2.toString()); 234a0f264e1afa3c0a00a5af0db362f884b122d978dKenny Root } 235a0f264e1afa3c0a00a5af0db362f884b122d978dKenny Root 236a0f264e1afa3c0a00a5af0db362f884b122d978dKenny Root public void testVerifierDeviceIdentity_Parse_1I_And_0O_Substitution() { 237a0f264e1afa3c0a00a5af0db362f884b122d978dKenny Root VerifierDeviceIdentity id1 = VerifierDeviceIdentity.parse(TEST_SUBSTITUTION_CORRECTED); 238a0f264e1afa3c0a00a5af0db362f884b122d978dKenny Root 239a0f264e1afa3c0a00a5af0db362f884b122d978dKenny Root VerifierDeviceIdentity id2 = VerifierDeviceIdentity.parse(TEST_SUBSTITUTION_UNCORRECTED); 240a0f264e1afa3c0a00a5af0db362f884b122d978dKenny Root 241a0f264e1afa3c0a00a5af0db362f884b122d978dKenny Root assertEquals("Substitution should replace 0 with O and 1 with I", id1, id2); 242a0f264e1afa3c0a00a5af0db362f884b122d978dKenny Root 243a0f264e1afa3c0a00a5af0db362f884b122d978dKenny Root assertEquals("Substituted identity should render to the same string", 244a0f264e1afa3c0a00a5af0db362f884b122d978dKenny Root id1.toString(), id2.toString()); 245a0f264e1afa3c0a00a5af0db362f884b122d978dKenny Root } 2460aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root} 247