package org.openprovenance.prov.model; import junit.framework.TestCase; public class XMLNameTest extends TestCase { public XMLNameTest(String name) { super(name); } QualifiedNameUtils u=new QualifiedNameUtils(); boolean doEscape(String in, String out) { String val=u.escapeToXsdLocalName(in); System.err.println("Escape " + in + " " + val); assertTrue(u.is_NC_Name(out)); return val.equals(out); } boolean doUnescape(String out, String in) { String val=u.unescapeFromXsdLocalName(in); System.err.println("Unescape " + in + " " + val); return val.equals(out); } boolean doRT1(String in) { String val=u.unescapeFromXsdLocalName(u.escapeToXsdLocalName(in)); System.err.println("RT1 " + in + " " + val); return val.equals(in); } boolean doRT2(String in) { String val=u.escapeToXsdLocalName(u.unescapeFromXsdLocalName(in)); System.err.println("RT2 " + in + " " + val); return val.equals(in); } public void testEscape1 () { assertTrue(doEscape("abc","abc")); assertTrue(doEscape("abc01","abc01")); assertTrue(doEscape("01","_01")); assertTrue(doEscape("","_")); assertTrue(doEscape("_","___")); assertTrue(doEscape("a@b","a_40b")); assertTrue(doEscape("a~b","a_7Eb")); assertTrue(doEscape("a&b","a_26b")); assertTrue(doEscape("a+b","a_2Bb")); assertTrue(doEscape("a*b","a_2Ab")); assertTrue(doEscape("a#b","a_23b")); assertTrue(doEscape("a$b","a_24b")); assertTrue(doEscape("a!b","a_21b")); assertTrue(doEscape("a01bc","a01bc")); assertTrue(doEscape("a01/bc","a01_2Fbc")); assertTrue(doEscape("a01b\\c","a01b_5Cc")); assertTrue(doEscape("a01b=c","a01b_3Dc")); assertTrue(doEscape("a01b'c","a01b_27c")); assertTrue(doEscape("a01b(c","a01b_28c")); assertTrue(doEscape("a01b)c","a01b_29c")); assertTrue(doEscape("a01b,c","a01b_2Cc")); assertTrue(doEscape("a01b_c","a01b__c")); assertTrue(doEscape("a01b:c","a01b_3Ac")); assertTrue(doEscape("a01b;c","a01b_3Bc")); assertTrue(doEscape("a01b[c","a01b_5Bc")); assertTrue(doEscape("a01b]c","a01b_5Dc")); assertTrue(doEscape("a01b.c","a01b.c")); assertTrue(doEscape("a01bc.","a01bc.")); assertTrue(doEscape("='(),_:;[].@~","__3D_27_28_29_2C___3A_3B_5B_5D._40_7E")); assertTrue(doEscape("?a\\=b","__3Fa_5C_3Db")); assertTrue(doEscape("55348dff-4fcc-4ac2-ab56-641798c64400","_55348dff-4fcc-4ac2-ab56-641798c64400")); assertTrue(doEscape("À-ÖØ-öø-˿Ͱͽ","À-ÖØ-öø-˿Ͱͽ")); } public void testUnescape1 () { assertTrue(doUnescape("abc","abc")); assertTrue(doUnescape("abc01","abc01")); assertTrue(doUnescape("01","_01")); assertTrue(doUnescape("","_")); assertTrue(doUnescape("_","___")); assertTrue(doUnescape("a@b","a_40b")); assertTrue(doUnescape("a~b","a_7Eb")); assertTrue(doUnescape("a&b","a_26b")); assertTrue(doUnescape("a+b","a_2Bb")); assertTrue(doUnescape("a*b","a_2Ab")); assertTrue(doUnescape("a#b","a_23b")); assertTrue(doUnescape("a$b","a_24b")); assertTrue(doUnescape("a!b","a_21b")); assertTrue(doUnescape("a01bc","a01bc")); assertTrue(doUnescape("a01/bc","a01_2Fbc")); assertTrue(doUnescape("a01b\\c","a01b_5Cc")); assertTrue(doUnescape("a01b=c","a01b_3Dc")); assertTrue(doUnescape("a01b'c","a01b_27c")); assertTrue(doUnescape("a01b(c","a01b_28c")); assertTrue(doUnescape("a01b)c","a01b_29c")); assertTrue(doUnescape("a01b,c","a01b_2Cc")); assertTrue(doUnescape("a01b_c","a01b__c")); assertTrue(doUnescape("a01b:c","a01b_3Ac")); assertTrue(doUnescape("a01b;c","a01b_3Bc")); assertTrue(doUnescape("a01b[c","a01b_5Bc")); assertTrue(doUnescape("a01b]c","a01b_5Dc")); assertTrue(doUnescape("a01b.c","a01b.c")); assertTrue(doUnescape("='(),_:;[].@~","__3D_27_28_29_2C___3A_3B_5B_5D._40_7E")); assertTrue(doUnescape("?a\\=b","__3Fa_5C_3Db")); assertTrue(doUnescape("55348dff-4fcc-4ac2-ab56-641798c64400","_55348dff-4fcc-4ac2-ab56-641798c64400")); assertTrue(doUnescape("À-ÖØ-öø-˿Ͱͽ","À-ÖØ-öø-˿Ͱͽ")); } public void testRoundTripFromUnescaped1 () { assertTrue(doRT1("abc")); assertTrue(doRT1("abc01")); assertTrue(doRT1("01")); assertTrue(doRT1("")); assertTrue(doRT1("_")); assertTrue(doRT1("a@b")); assertTrue(doRT1("a~b")); assertTrue(doRT1("a&b")); assertTrue(doRT1("a+b")); assertTrue(doRT1("a*b")); assertTrue(doRT1("a#b")); assertTrue(doRT1("a$b")); assertTrue(doRT1("a!b")); assertTrue(doRT1("a01bc")); assertTrue(doRT1("a01/bc")); assertTrue(doRT1("a01b\\c")); assertTrue(doRT1("a01b=c")); assertTrue(doRT1("a01b'c")); assertTrue(doRT1("a01b(c")); assertTrue(doRT1("a01b)c")); assertTrue(doRT1("a01b,c")); assertTrue(doRT1("a01b_c")); assertTrue(doRT1("a01b:c")); assertTrue(doRT1("a01b;c")); assertTrue(doRT1("a01b[c")); assertTrue(doRT1("a01b]c")); assertTrue(doRT1("a01b.c")); assertTrue(doRT1("='(),_:;[].@~")); assertTrue(doRT1("?a\\=b")); assertTrue(doRT1("55348dff-4fcc-4ac2-ab56-641798c64400")); assertTrue(doRT1("À-ÖØ-öø-˿Ͱͽ")); } public void testRoundTripFromUnescaped2 () { assertTrue(doRT2("abc")); assertTrue(doRT2("abc01")); assertTrue(doRT2("_0001")); assertTrue(doRT2("_")); assertTrue(doRT2("___")); assertTrue(doRT2("a_40b")); assertTrue(doRT2("a_7Eb")); assertTrue(doRT2("a_26b")); assertTrue(doRT2("a_2Bb")); assertTrue(doRT2("a_2Ab")); assertTrue(doRT2("a_23b")); assertTrue(doRT2("a_24b")); assertTrue(doRT2("a_21b")); assertTrue(doRT2("a01bc")); assertTrue(doRT2("a01_2Fbc")); assertTrue(doRT2("a01b_5Cc")); assertTrue(doRT2("a01b_3Dc")); assertTrue(doRT2("a01b_27c")); assertTrue(doRT2("a01b_28c")); assertTrue(doRT2("a01b_29c")); assertTrue(doRT2("a01b_2Cc")); assertTrue(doRT2("a01b__c")); assertTrue(doRT2("a01b_3Ac")); assertTrue(doRT2("a01b_3Bc")); assertTrue(doRT2("a01b_5Bc")); assertTrue(doRT2("a01b_5Dc")); assertTrue(doRT2("a01b.c")); assertTrue(doRT2("_3D_27_28_29_2C___3A_3B_5B_5D._40_7E")); assertTrue(doRT2("_3Fa_5C_3Db")); assertTrue(doRT2("_55348dff-4fcc-4ac2-ab56-641798c64400")); assertTrue(doRT2("À-ÖØ-öø-˿Ͱͽ")); } }