package hep.aida.ref.test.jaida; import hep.aida.ref.AidaUtils; import java.util.HashMap; import java.util.Map; import java.util.Random; import junit.framework.TestCase; /** * * @author tonyj * @version $Id: TestOptions.java 10546 2007-02-21 23:39:01Z duns $ */ public class TestOptions extends TestCase { public TestOptions(String testName) { super(testName); } public void testOptionsParsing() { String tests[] = { "a= b ;c = d ", "a=\"Some Options\",c= \"My , Funny Value\" ", "testCase", " ", null, "username=,password=,sql=\"select * from Gooddata\",url=\"jdbc:odbc:DRIVER={Microsoft Access Driver (*.mdb)};DBQ=C:\\Documents and Settings\\tonyj\\My Documents\\mq.mdb\",driver=sun.jdbc.odbc.JdbcOdbcDriver", "a=b, hep.aida.ref.sql.user=test" }; int count[] = { 2, 2, 1, 0, 0, 5, 2}; for (int i=0; i<tests.length; i++) { Map result = AidaUtils.parseOptions(tests[i]); assertEquals(result.size(),count[i]); switch (i) { case 0: assertEquals(result.get("a"),"b"); assertEquals(result.get("c"),"d"); break; case 1: assertEquals(result.get("a"), "Some Options"); assertEquals(result.get("c"),"My , Funny Value"); break; case 2: assertEquals(result.get("testCase"),"true"); break; case 5: assertEquals(result.get("username"),""); assertEquals(result.get("url"),"jdbc:odbc:DRIVER={Microsoft Access Driver (*.mdb)};DBQ=C:\\Documents and Settings\\tonyj\\My Documents\\mq.mdb"); break; case 6: assertEquals(result.get("hep.aida.ref.sql.user"),"test"); break; default: } } } public void testOptionsParsing2() { Random r = new Random(); int n = 1000; int max = 100; Map in = new HashMap(); StringBuffer options = new StringBuffer(max*n); for (int i=0; i<n; i++) { int size = r.nextInt(max); StringBuffer buf = new StringBuffer(size); for (int j=0; j<size; j++) { char c = (char) (32+ r.nextInt(64)); if (c != '"') buf.append(c); } in.put("key"+i, buf.toString()); options.append("key"); options.append(i); options.append("=\""); options.append(buf); options.append("\""); options.append(";"); } Map out = AidaUtils.parseOptions(options.toString()); assertEquals(in,out); } public void testOptionsParsing3() { String options = "annotation.xAxis=date, annotation.customOverlay=hep.aida.ref.plotter.adapter.TimeHistoryOverlay"; String[] array = AidaUtils.parseString(options); assertEquals(array.length,2); assertEquals(array[0], "annotation.xAxis=date"); assertEquals(array[1], "annotation.customOverlay=hep.aida.ref.plotter.adapter.TimeHistoryOverlay"); String path = "/hist/dir1/subdir/h11"; String name = AidaUtils.parseName(path); String dir = AidaUtils.parseDirName(path); assertEquals(name,"h11"); assertEquals(dir,"/hist/dir1/subdir/"); path = "/dir0/"; name = AidaUtils.parseName(path); dir = AidaUtils.parseDirName(path); assertEquals(name,""); assertEquals(dir,"/dir0/"); path = "/hist1D"; name = AidaUtils.parseName(path); dir = AidaUtils.parseDirName(path); assertEquals(name,"hist1D"); assertEquals(dir,"/"); path = "hist1D"; name = AidaUtils.parseName(path); dir = AidaUtils.parseDirName(path); assertEquals(name,"hist1D"); assertEquals(dir,""); path = "/hist/dir1/subdir/"; name = AidaUtils.parseName(path); dir = AidaUtils.parseDirName(path); assertEquals(name,""); assertEquals(dir,"/hist/dir1/subdir/"); } }