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; 20bdbde55592792efe350acd6a46733f439f6a3f3dAurimas Liutikasimport android.support.test.filters.LargeTest; 210aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 220aaa0d931716e9f57a1d84d795fab2df75092756Kenny Rootimport java.util.Random; 230aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 24bdbde55592792efe350acd6a46733f439f6a3f3dAurimas Liutikas@LargeTest 250aaa0d931716e9f57a1d84d795fab2df75092756Kenny Rootpublic class VerifierDeviceIdentityTest extends android.test.AndroidTestCase { 260aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root private static final long TEST_1 = 0x7A5F00FF5A55AAA5L; 270aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 280aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root private static final String TEST_1_ENCODED = "HUXY-A75N-FLKV-F"; 290aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 30a0f264e1afa3c0a00a5af0db362f884b122d978dKenny Root private static final String TEST_1_ENCODED_LOWERCASE = "huxy-a75n-flkv-f"; 31a0f264e1afa3c0a00a5af0db362f884b122d978dKenny Root 320aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root private static final long TEST_2 = 0x5A05FF5A05F0A555L; 330aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 340aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root private static final long TEST_MAXVALUE = Long.MAX_VALUE; 350aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 360aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root private static final String TEST_MAXVALUE_ENCODED = "H777-7777-7777-7"; 370aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 380aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root private static final long TEST_MINVALUE = Long.MIN_VALUE; 390aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 400aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root private static final String TEST_MINVALUE_ENCODED = "IAAA-AAAA-AAAA-A"; 410aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 420aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root private static final long TEST_ZERO = 0L; 430aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 440aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root private static final String TEST_ZERO_ENCODED = "AAAA-AAAA-AAAA-A"; 450aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 460aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root private static final long TEST_NEGONE = -1L; 470aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 480aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root private static final String TEST_NEGONE_ENCODED = "P777-7777-7777-7"; 490aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 500aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root private static final String TEST_OVERFLOW_ENCODED = "QAAA-AAAA-AAAA-A"; 510aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 52a0f264e1afa3c0a00a5af0db362f884b122d978dKenny Root private static final String TEST_SUBSTITUTION_CORRECTED = "OIIO-IIOO-IOOI-I"; 53a0f264e1afa3c0a00a5af0db362f884b122d978dKenny Root 54a0f264e1afa3c0a00a5af0db362f884b122d978dKenny Root private static final String TEST_SUBSTITUTION_UNCORRECTED = "0110-1100-1001-1"; 55a0f264e1afa3c0a00a5af0db362f884b122d978dKenny Root 560aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root public void testVerifierDeviceIdentity_Equals_Success() { 570aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root VerifierDeviceIdentity id1 = new VerifierDeviceIdentity(TEST_1); 580aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root VerifierDeviceIdentity id2 = new VerifierDeviceIdentity(TEST_1); 590aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 600aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root assertTrue("The two VerifierDeviceIdentity instances should be equal", id1.equals(id2)); 610aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root } 620aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 630aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root public void testVerifierDeviceIdentity_Equals_Failure() { 640aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root VerifierDeviceIdentity id1 = new VerifierDeviceIdentity(TEST_1); 650aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root VerifierDeviceIdentity id2 = new VerifierDeviceIdentity(TEST_2); 660aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 670aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root assertFalse("The two VerifierDeviceIdentity instances should be unique", id1.equals(id2)); 680aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root } 690aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 700aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root public void testVerifierDeviceIdentity_HashCode() { 710aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root VerifierDeviceIdentity id1 = new VerifierDeviceIdentity(TEST_1); 720aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 730aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root assertEquals("The VerifierDeviceIdentity should have the same hashcode as its identity", 740aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root (int) TEST_1, id1.hashCode()); 750aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root } 760aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 770aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root public void testVerifierDeviceIdentity_ToString_Success() { 780aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root VerifierDeviceIdentity id1 = new VerifierDeviceIdentity(TEST_1); 790aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 800aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root assertEquals("The identity should encode correctly to the expected Base 32 string", 810aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root TEST_1_ENCODED, id1.toString()); 820aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root } 830aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 840aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root public void testVerifierDeviceIdentity_ToString_Largest() { 850aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root VerifierDeviceIdentity id1 = new VerifierDeviceIdentity(TEST_MAXVALUE); 860aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 870aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root assertEquals("The identity should encode correctly to the expected Base 32 string", 880aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root TEST_MAXVALUE_ENCODED, id1.toString()); 890aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root } 900aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 910aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root public void testVerifierDeviceIdentity_ToString_Zero() { 920aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root VerifierDeviceIdentity id1 = new VerifierDeviceIdentity(TEST_ZERO); 930aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 940aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root assertEquals("The identity should encode correctly to the expected Base 32 string", 950aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root TEST_ZERO_ENCODED, id1.toString()); 960aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root } 970aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 980aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root public void testVerifierDeviceIdentity_ToString_NegOne() { 990aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root VerifierDeviceIdentity id1 = new VerifierDeviceIdentity(TEST_NEGONE); 1000aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 1010aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root assertEquals("The identity should encode correctly to the expected Base 32 string", 1020aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root TEST_NEGONE_ENCODED, id1.toString()); 1030aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root } 1040aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 1050aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root public void testVerifierDeviceIdentity_ToString_MinValue() { 1060aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root VerifierDeviceIdentity id1 = new VerifierDeviceIdentity(TEST_MINVALUE); 1070aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 1080aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root assertEquals("The identity should encode correctly to the expected Base 32 string", 1090aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root TEST_MINVALUE_ENCODED, id1.toString()); 1100aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root } 1110aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 1120aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root public void testVerifierDeviceIdentity_Parcel_ReadNegative() { 1130aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root VerifierDeviceIdentity id1 = new VerifierDeviceIdentity(TEST_MINVALUE); 1140aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 1150aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root Parcel parcel = Parcel.obtain(); 1160aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root parcel.writeLong(TEST_MINVALUE); 1170aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root parcel.setDataPosition(0); 1180aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 1190aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root VerifierDeviceIdentity id2 = VerifierDeviceIdentity.CREATOR.createFromParcel(parcel); 1200aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 1210aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root assertEquals("Parcel created should match expected value", id1, id2); 1220aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root } 1230aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 1240aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root public void testVerifierDeviceIdentity_Parcel_Read_Pass() { 1250aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root VerifierDeviceIdentity id1 = new VerifierDeviceIdentity(TEST_1); 1260aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 1270aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root Parcel parcel = Parcel.obtain(); 1280aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root id1.writeToParcel(parcel, 0); 1290aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root parcel.setDataPosition(0); 1300aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 1310aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root VerifierDeviceIdentity id2 = VerifierDeviceIdentity.CREATOR.createFromParcel(parcel); 1320aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 1330aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root assertEquals("Original identity and parceled identity should be the same", id1, id2); 1340aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root } 1350aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 136a0f264e1afa3c0a00a5af0db362f884b122d978dKenny Root @SuppressWarnings("serial") 1370aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root private static class MockRandom extends Random { 1380aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root private long mNextLong; 1390aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 1400aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root public MockRandom() { 1410aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root } 1420aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 1430aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root public void setNextLong(long nextLong) { 1440aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root mNextLong = nextLong; 1450aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root } 1460aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 1470aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root @Override 1480aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root public long nextLong() { 1490aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root return mNextLong; 1500aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root } 1510aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root } 1520aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 1530aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root public void testVerifierDeviceIdentity_Generate_MinValue() { 1540aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root VerifierDeviceIdentity id1 = new VerifierDeviceIdentity(TEST_MINVALUE); 1550aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 1560aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root MockRandom random = new MockRandom(); 1570aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root random.setNextLong(Long.MIN_VALUE); 1580aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root VerifierDeviceIdentity id2 = VerifierDeviceIdentity.generate(random); 1590aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 1600aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root assertEquals("Identity created from Long.MIN_VALUE and one created from return from RNG" 1610aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root + " should be the same", id1, id2); 1620aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root } 1630aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 1640aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root public void testVerifierDeviceIdentity_Generate_Random() { 1650aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root VerifierDeviceIdentity id1 = new VerifierDeviceIdentity(TEST_1); 1660aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 1670aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root MockRandom random = new MockRandom(); 1680aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root random.setNextLong(TEST_1); 1690aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root VerifierDeviceIdentity id2 = VerifierDeviceIdentity.generate(random); 1700aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 1710aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root assertEquals("Identity should end up being same when coming from RNG", id1, id2); 1720aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root } 1730aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 1740aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root public void testVerifierDeviceIdentity_Parse_Normal() { 1750aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root VerifierDeviceIdentity id1 = new VerifierDeviceIdentity(TEST_1); 1760aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 1770aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root VerifierDeviceIdentity id2 = VerifierDeviceIdentity.parse(TEST_1_ENCODED); 1780aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 1790aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root assertEquals("Parsed device identity should have the same value as original identity", 1800aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root id1, id2); 1810aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root } 1820aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 1830aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root public void testVerifierDeviceIdentity_Parse_MaxValue() { 1840aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root VerifierDeviceIdentity id1 = new VerifierDeviceIdentity(TEST_MAXVALUE); 1850aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 1860aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root VerifierDeviceIdentity id2 = VerifierDeviceIdentity.parse(TEST_MAXVALUE_ENCODED); 1870aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 1880aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root assertEquals("Original max value and parsed max value should be equal", id1, id2); 1890aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root } 1900aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 1910aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root public void testVerifierDeviceIdentity_Parse_TooShort() { 1920aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root try { 193a0f264e1afa3c0a00a5af0db362f884b122d978dKenny Root VerifierDeviceIdentity.parse("AAAA-AAAA-AAAA-"); 1940aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root fail("Parsing should fail when device identifier is too short"); 1950aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root } catch (IllegalArgumentException e) { 1960aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root // success 1970aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root } 1980aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root } 1990aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 2000aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root public void testVerifierDeviceIdentity_Parse_WayTooShort() { 2010aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root try { 202a0f264e1afa3c0a00a5af0db362f884b122d978dKenny Root VerifierDeviceIdentity.parse("----------------"); 2030aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root fail("Parsing should fail when device identifier is too short"); 2040aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root } catch (IllegalArgumentException e) { 2050aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root // success 2060aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root } 2070aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root } 2080aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 2090aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root public void testVerifierDeviceIdentity_Parse_TooLong() { 2100aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root try { 211a0f264e1afa3c0a00a5af0db362f884b122d978dKenny Root VerifierDeviceIdentity.parse("AAAA-AAAA-AAAA-AA"); 2120aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root fail("Parsing should fail when device identifier is too long"); 2130aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root } catch (IllegalArgumentException e) { 2140aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root // success 2150aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root } 2160aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root } 2170aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root 2180aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root public void testVerifierDeviceIdentity_Parse_Overflow() { 2190aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root try { 220a0f264e1afa3c0a00a5af0db362f884b122d978dKenny Root VerifierDeviceIdentity.parse(TEST_OVERFLOW_ENCODED); 2210aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root fail("Parsing should fail when the value will overflow"); 2220aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root } catch (IllegalArgumentException e) { 2230aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root // success 2240aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root } 2250aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root } 226a0f264e1afa3c0a00a5af0db362f884b122d978dKenny Root 227a0f264e1afa3c0a00a5af0db362f884b122d978dKenny Root public void testVerifierDeviceIdentity_Parse_SquashToUppercase() { 228a0f264e1afa3c0a00a5af0db362f884b122d978dKenny Root VerifierDeviceIdentity id1 = new VerifierDeviceIdentity(TEST_1); 229a0f264e1afa3c0a00a5af0db362f884b122d978dKenny Root 230a0f264e1afa3c0a00a5af0db362f884b122d978dKenny Root VerifierDeviceIdentity id2 = VerifierDeviceIdentity.parse(TEST_1_ENCODED_LOWERCASE); 231a0f264e1afa3c0a00a5af0db362f884b122d978dKenny Root 232a0f264e1afa3c0a00a5af0db362f884b122d978dKenny Root assertEquals("Lowercase should parse to be the same as uppercase", id1, id2); 233a0f264e1afa3c0a00a5af0db362f884b122d978dKenny Root 234a0f264e1afa3c0a00a5af0db362f884b122d978dKenny Root assertEquals("Substituted identity should render to the same string", 235a0f264e1afa3c0a00a5af0db362f884b122d978dKenny Root id1.toString(), id2.toString()); 236a0f264e1afa3c0a00a5af0db362f884b122d978dKenny Root } 237a0f264e1afa3c0a00a5af0db362f884b122d978dKenny Root 238a0f264e1afa3c0a00a5af0db362f884b122d978dKenny Root public void testVerifierDeviceIdentity_Parse_1I_And_0O_Substitution() { 239a0f264e1afa3c0a00a5af0db362f884b122d978dKenny Root VerifierDeviceIdentity id1 = VerifierDeviceIdentity.parse(TEST_SUBSTITUTION_CORRECTED); 240a0f264e1afa3c0a00a5af0db362f884b122d978dKenny Root 241a0f264e1afa3c0a00a5af0db362f884b122d978dKenny Root VerifierDeviceIdentity id2 = VerifierDeviceIdentity.parse(TEST_SUBSTITUTION_UNCORRECTED); 242a0f264e1afa3c0a00a5af0db362f884b122d978dKenny Root 243a0f264e1afa3c0a00a5af0db362f884b122d978dKenny Root assertEquals("Substitution should replace 0 with O and 1 with I", id1, id2); 244a0f264e1afa3c0a00a5af0db362f884b122d978dKenny Root 245a0f264e1afa3c0a00a5af0db362f884b122d978dKenny Root assertEquals("Substituted identity should render to the same string", 246a0f264e1afa3c0a00a5af0db362f884b122d978dKenny Root id1.toString(), id2.toString()); 247a0f264e1afa3c0a00a5af0db362f884b122d978dKenny Root } 2480aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root} 249