package org.openprovenance.prov.model; import junit.framework.TestCase; public class QualifiedNameTest extends TestCase { public QualifiedNameTest(String name) { super(name); } QualifiedNameUtils u=new QualifiedNameUtils(); boolean doEscape(String in, String out) { String val=u.escapeProvLocalName(in); System.err.println("Escape " + in + " " + val); assertTrue(u.patternExactMatch(out)); return val.equals(out); } boolean doUnescape(String out, String in) { String val=u.unescapeProvLocalName(in); System.err.println("Unescape " + in + " " + val); assertTrue(u.patternExactMatch(in)); return val.equals(out); } boolean doEscapeUnicode(String in, String out) { String val=u.escapeUnicode(in); System.err.println("Escape Unicode " + in + " " + val); return val.equals(out); } boolean doUnescapeUnicode(String out, String in) { String val=u.unescapeUnicode(in); System.err.println("Unescape " + in + " " + val); return val.equals(out); } boolean doRT1(String in) { String val=u.unescapeProvLocalName(u.escapeProvLocalName(in)); System.err.println("RT1 " + in + " " + val); return val.equals(in); } boolean doRT2(String in) { String val=u.escapeProvLocalName(u.unescapeProvLocalName(in)); System.err.println("RT2 " + in + " " + val); assertTrue(u.patternExactMatch(in)); return val.equals(in); } public void testEscape1 () { assertTrue(doEscape("a01bc","a01bc")); // assertTrue(doEscape("a01b\\c","a01b\\c")); assertTrue(doEscape("a01b=c","a01b\\=c")); assertTrue(doEscape("a01b'c","a01b\\'c")); assertTrue(doEscape("a01b(c","a01b\\(c")); assertTrue(doEscape("a01b)c","a01b\\)c")); assertTrue(doEscape("a01b,c","a01b\\,c")); assertTrue(doEscape("a01b-c","a01b-c")); assertTrue(doEscape("a01b:c","a01b\\:c")); assertTrue(doEscape("a01b;c","a01b\\;c")); assertTrue(doEscape("a01b[c","a01b\\[c")); assertTrue(doEscape("a01b]c","a01b\\]c")); assertTrue(doEscape("a01b.c","a01b.c")); assertTrue(doEscape("a01bc.","a01bc\\.")); assertTrue(doEscape("-","\\-")); //assertTrue(doEscape("a01b<.>c","a01b%3C\\.%3Ec")); assertTrue(doEscape("='(),-:;[].a","\\=\\'\\(\\)\\,-\\:\\;\\[\\].a")); assertTrue(doEscape("?a=b","?a\\=b")); assertTrue(doEscape("55348dff-4fcc-4ac2-ab56-641798c64400","55348dff-4fcc-4ac2-ab56-641798c64400")); assertTrue(doEscape("news/world-asia-17507976","news/world-asia-17507976")); assertTrue(doEscape("À-ÖØ-öø-˿Ͱͽ","À-ÖØ-öø-˿Ͱͽ")); } public void testUnescape1 () { assertTrue(doUnescape("a01bc","a01bc")); // assertTrue(doUnescape("a01b\\c","a01b\\c")); assertTrue(doUnescape("a01b=c","a01b\\=c")); assertTrue(doUnescape("a01b'c","a01b\\'c")); assertTrue(doUnescape("a01b(c","a01b\\(c")); assertTrue(doUnescape("a01b)c","a01b\\)c")); assertTrue(doUnescape("a01b,c","a01b\\,c")); assertTrue(doUnescape("a01b-c","a01b-c")); assertTrue(doUnescape("a01b:c","a01b\\:c")); assertTrue(doUnescape("a01b;c","a01b\\;c")); assertTrue(doUnescape("a01b[c","a01b\\[c")); assertTrue(doUnescape("a01b]c","a01b\\]c")); assertTrue(doUnescape("a01b.c","a01b\\.c")); assertTrue(doUnescape("a01b.c","a01b.c")); assertTrue(doUnescape("a01bc.","a01bc\\.")); //assertTrue(doUnescape("a01b<.>c","a01b%3C\\.%3Ec")); assertTrue(doUnescape("='(),-:;[].","\\=\\'\\(\\)\\,-\\:\\;\\[\\]\\.")); assertTrue(doUnescape("?a=b","?a\\=b")); assertTrue(doUnescape("55348dff-4fcc-4ac2-ab56-641798c64400","55348dff-4fcc-4ac2-ab56-641798c64400")); assertTrue(doUnescape("À-ÖØ-öø-˿Ͱͽ","À-ÖØ-öø-˿Ͱͽ")); } public void testRoundTripFromUnescaped () { assertTrue(doRT1("a01bc")); 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("='(),-:;[].")); assertTrue(doRT1("?a=b")); //assertTrue(doRT1("a01b<.>c")); assertTrue(doRT1("55348dff-4fcc-4ac2-ab56-641798c64400")); assertTrue(doRT1("news/world-asia1-17507976")); assertTrue(doRT1("À-ÖØ-öø-˿Ͱͽ")); assertTrue(doRT1("application/6/subject/byURI/smartshare%2Fdirk/")); } public void testRoundTripFromEscaped () { assertTrue(doRT2("a01bc")); assertTrue(doRT2("a01b\\=c")); assertTrue(doRT2("a01b\\'c")); assertTrue(doRT2("a01b\\(c")); assertTrue(doRT2("a01b\\)c")); assertTrue(doRT2("a01b\\,c")); assertTrue(doRT2("a01b-c")); assertTrue(doRT2("a01b\\:c")); assertTrue(doRT2("a01b\\;c")); assertTrue(doRT2("a01b\\[c")); assertTrue(doRT2("a01b\\]c")); assertTrue(doRT2("a01b.c")); //assertTrue(doRT2("a01b%3C\\.%3Ec")); assertTrue(doRT2("\\=\\'\\(\\)\\,-\\:\\;\\[\\].a")); assertTrue(doRT2("?a\\=b")); assertTrue(doRT2("55348dff-4fcc-4ac2-ab56-641798c64400")); assertTrue(doRT2("foo?a\\=1")); assertTrue(doRT2("\\-")); assertTrue(doRT2("?fred\\=fish20soup")); assertTrue(doRT2("?fred\\=fish%20soup")); assertTrue(doRT2("news/world-asia-17507976")); assertTrue(doRT2("À-ÖØ-öø-˿Ͱͽ")); } public void testPattern1() { assertTrue(u.patternExactMatch("/@~&+*?#$!")); assertTrue(u.patternExactMatch("ab")); assertTrue(u.patternExactMatch("01")); assertFalse(u.patternExactMatch(".")); assertFalse(u.patternExactMatch("01.")); assertFalse(u.patternExactMatch("01[]b")); assertTrue(u.patternExactMatch("abc\\[\\]b")); } public void testEscapeUnicode1 () { assertTrue(doEscapeUnicode("À-ÖØ-öø-˿Ͱͽ","À-ÖØ-öø-\\u02FF\\u0370\\u037D")); } public void testUnescapeUnicode1 () { assertTrue(doUnescapeUnicode("À-ÖØ-öø-˿Ͱͽ","À-ÖØ-öø-\\u02FF\\u0370\\u037D")); } }