1aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin/* GENERATED SOURCE. DO NOT MODIFY. */ 2f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert// © 2016 and later: Unicode, Inc. and others. 3f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert// License & terms of use: http://www.unicode.org/copyright.html#License 4aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin/* 5aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin ******************************************************************************* 6aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin * Copyright (C) 2009, International Business Machines Corporation and * 7aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin * others. All Rights Reserved. * 8aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin ******************************************************************************* 9aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin */ 10aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffinpackage android.icu.dev.test.stringprep; 11aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 12f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubertimport org.junit.Test; 13f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert 14aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffinimport android.icu.dev.test.TestFmwk; 15aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffinimport android.icu.text.StringPrep; 16aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffinimport android.icu.text.StringPrepParseException; 17aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 18aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin/** 19aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin * @author Michael Ow 20aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin * 21aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin */ 22aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffinpublic class TestStringPrepProfiles extends TestFmwk { 23aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin /* 24aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin * The format of the test cases should be the following: 25aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin * { 26aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin * Profile name 27aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin * src string1 28aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin * expected result1 29aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin * src string2 30aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin * expected result2 31aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin * ... 32aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin * } 33aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin * 34aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin * *Note: For expected failures add FAIL to beginning of the source string and for expected result use "FAIL". 35aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin */ 36aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin private static String[][] testCases = { 37aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin { 38aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin "RFC4013_SASLPREP", 39aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin "user:\u00A0\u0AC6\u1680\u00ADpassword1", 40aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin "user: \u0AC6 password1" 41aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin }, 42aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin { 43aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin "RFC4011_MIB", 44aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin "Policy\u034F\u200DBase\u0020d\u1806\u200C", 45aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin "PolicyBase d" 46aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin }, 47aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin { 48aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin "RFC4505_TRACE", 49aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin "Anony\u0020\u00A0mous\u3000\u0B9D\u034F\u00AD", 50aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin "Anony\u0020\u00A0mous\u3000\u0B9D\u034F\u00AD" 51aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin }, 52aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin { 53aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin "RFC4518_LDAP", 54aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin "Ldap\uFB01\u00ADTest\u0020\u00A0\u2062ing", 55aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin "LdapfiTest ing" 56aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin }, 57aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin { 58aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin "RFC4518_LDAP_CI", 59aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin "Ldap\uFB01\u00ADTest\u0020\u00A0\u2062ing12345", 60aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin "ldapfitest ing12345" 61aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin }, 62aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin { 63aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin "RFC3920_RESOURCEPREP", 64aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin "ServerXM\u2060\uFE00\uFE09PP s p ", 65aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin "ServerXMPP s p " 66aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin }, 67aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin { 68aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin "RFC3920_NODEPREP", 69aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin "Server\u200DXMPPGreEK\u03D0", 70aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin "serverxmppgreek\u03B2" 71aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin }, 72aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin { 73aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin "RFC3722_ISCSI", 74aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin "InternetSmallComputer\uFB01\u0032\u2075Interface", 75aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin "internetsmallcomputerfi25interface", 76aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin "FAILThisShouldFailBecauseOfThis\u002F", 77aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin "FAIL" 78aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin }, 79aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin { 80aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin "RFC3530_NFS4_CS_PREP", 81aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin "\u00ADUser\u2060Name@ \u06DDDOMAIN.com", 82aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin "UserName@ \u06DDDOMAIN.com" 83aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin }, 84aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin { 85aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin "RFC3530_NFS4_CS_PREP_CI", 86aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin "\u00ADUser\u2060Name@ \u06DDDOMAIN.com", 87aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin "username@ \u06DDdomain.com" 88aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin }, 89aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin { 90aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin "RFC3530_NFS4_CIS_PREP", 91aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin "AA\u200C\u200D @@DomAin.org", 92aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin "aa @@domain.org" 93aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin }, 94aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin { 95aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin "RFC3530_NFS4_MIXED_PREP_PREFIX", 96aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin "PrefixUser \u007F\uFB01End", 97aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin "PrefixUser \u007FfiEnd" 98aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin }, 99aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin { 100aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin "RFC3530_NFS4_MIXED_PREP_SUFFIX", 101aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin "SuffixDomain \u007F\uFB01EnD", 102aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin "suffixdomain \u007Ffiend" 103aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 104aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin }; 105aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 106aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin private int getOptionFromProfileName(String profileName) { 107aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (profileName.equals("RFC4013_SASLPREP")) { 108aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin return StringPrep.RFC4013_SASLPREP; 109aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } else if (profileName.equals("RFC4011_MIB")) { 110aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin return StringPrep.RFC4011_MIB; 111aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } else if (profileName.equals("RFC4505_TRACE")) { 112aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin return StringPrep.RFC4505_TRACE; 113aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } else if (profileName.equals("RFC4518_LDAP")) { 114aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin return StringPrep.RFC4518_LDAP; 115aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } else if (profileName.equals("RFC4518_LDAP_CI")) { 116aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin return StringPrep.RFC4518_LDAP_CI; 117aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } else if (profileName.equals("RFC3920_RESOURCEPREP")) { 118aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin return StringPrep.RFC3920_RESOURCEPREP; 119aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } else if (profileName.equals("RFC3920_NODEPREP")) { 120aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin return StringPrep.RFC3920_NODEPREP; 121aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } else if (profileName.equals("RFC3722_ISCSI")) { 122aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin return StringPrep.RFC3722_ISCSI; 123aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } else if (profileName.equals("RFC3530_NFS4_CS_PREP")) { 124aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin return StringPrep.RFC3530_NFS4_CS_PREP; 125aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } else if (profileName.equals("RFC3530_NFS4_CS_PREP_CI")) { 126aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin return StringPrep.RFC3530_NFS4_CS_PREP_CI; 127aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } else if (profileName.equals("RFC3530_NFS4_CIS_PREP")) { 128aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin return StringPrep.RFC3530_NFS4_CIS_PREP; 129aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } else if (profileName.equals("RFC3530_NFS4_MIXED_PREP_PREFIX")) { 130aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin return StringPrep.RFC3530_NFS4_MIXED_PREP_PREFIX; 131aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } else if (profileName.equals("RFC3530_NFS4_MIXED_PREP_SUFFIX")) { 132aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin return StringPrep.RFC3530_NFS4_MIXED_PREP_SUFFIX; 133aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 134aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 135aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin // Should not happen. 136aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin return -1; 137aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 138aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 139f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert @Test 140aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin public void TestProfiles() { 141aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin String profileName = null; 142aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin StringPrep sprep = null; 143aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin String result = null; 144aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin String src = null; 145aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin String expected = null; 146aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 147aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin for (int i = 0; i < testCases.length; i++) { 148aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin for (int j = 0; j < testCases[i].length; j++) { 149aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (j == 0) { 150aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin profileName = testCases[i][j]; 151aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 152aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin sprep = StringPrep.getInstance(getOptionFromProfileName(profileName)); 153aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } else { 154aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin src = testCases[i][j]; 155aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin expected = testCases[i][++j]; 156aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin try { 157aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin result = sprep.prepare(src, StringPrep.ALLOW_UNASSIGNED); 158aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (src.startsWith("FAIL")) { 159aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin errln("Failed: Expected error for Test[" + i +"] Profile: " + profileName); 160aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } else if (!result.equals(expected)) { 161aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin errln("Failed: Test[" + i + "] Result string does not match expected string for StringPrep test for profile: " + profileName); 162aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 163aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } catch (StringPrepParseException ex) { 164aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (!src.startsWith("FAIL")) { 165aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin errln("Failed: Test[" + i + "] StringPrep profile " + profileName + " got error: " + ex); 166aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 167aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 168aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 169aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 170aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 171aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 172aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin} 173