sql92selectortest.java

来自「java开源的企业总线.xmlBlaster」· Java 代码 · 共 748 行 · 第 1/3 页

JAVA
748
字号
      // query 0      queries.add("age BETWEEN 10 AND 40 OR city BETWEEN 'Amsterdam' AND 'Paris' OR amount BETWEEN 10.0 AND 2000.0");      /*  helper                 0  0  0, 0  0  1, 0  1  0, 0  1  1, 1  0  0  1  0  1  1  1  0  1  1  1  */      results.add(new boolean[] {f||f||f, f||f||t, f||t||f, f||t||t, t||f||f, t||f||t, t||t||f, t||t||t });      // query 1      queries.add("age BETWEEN 10 AND 40 AND city BETWEEN 'Amsterdam' AND 'Paris' AND amount BETWEEN 10.0 AND 2000.0");      /*  helper                 0  0  0, 0  0  1, 0  1  0, 0  1  1, 1  0  0  1  0  1  1  1  0  1  1  1  */      results.add(new boolean[] {f&&f&&f, f&&f&&t, f&&t&&f, f&&t&&t, t&&f&&f, t&&f&&t, t&&t&&f, t&&t&&t });      // query 2      queries.add("(age BETWEEN 10 AND 40) AND (city BETWEEN 'Amsterdam' AND 'Paris') AND (amount BETWEEN 10.0 AND 2000.0)");      /*  helper                 0  0  0, 0  0  1, 0  1  0, 0  1  1, 1  0  0  1  0  1  1  1  0  1  1  1  */      results.add(new boolean[] {f&&f&&f, f&&f&&t, f&&t&&f, f&&t&&t, t&&f&&f, t&&f&&t, t&&t&&f, t&&t&&t });      // query 3      queries.add("age BETWEEN 23 AND 23 OR city BETWEEN 'London' AND 'London' OR amount BETWEEN 10.0 AND 2000.0");      /*  helper                 0  0  0, 0  0  1, 0  1  0, 0  1  1, 1  0  0  1  0  1  1  1  0  1  1  1  */      results.add(new boolean[] {f||f||f, f||f||t, f||t||f, f||t||t, t||f||f, t||f||t, t||t||f, t||t||t });      // query 4      queries.add("age BETWEEN 30 AND 10 OR city BETWEEN 'London' AND 'London' OR amount BETWEEN 10.0 AND 2000.0");      /*  helper                 0  0  0, 0  0  1, 0  1  0, 0  1  1, 0  0  0  0  0  1  0  1  0  1  1  1  */      results.add(new boolean[] {f||f||f, f||f||t, f||t||f, f||t||t, f||f||f, f||f||t, f||t||f, f||t||t });      // query 5      queries.add("age BETWEEN 23 AND 23 OR city BETWEEN 'Amsteram' AND 'Caslano' OR amount BETWEEN 10.0 AND 2000.0");      /*  helper                 0  0  0, 0  0  1, 0  0  0, 0  0  1, 1  0  0  1  0  1  1  0  0  1  0  1  */      results.add(new boolean[] {f||f||f, f||f||t, f||f||f, f||f||t, t||f||f, t||f||t, t||f||f, t||f||t });      this.querySet = (String[])queries.toArray(new String[queries.size()]);      this.resultSet = (boolean[][])results.toArray(new boolean[results.size()][]);      // here the real testing is performed (the algorithm is the same for all tests)      selectorPerformTest();   }   /**    * Tests the LIKE statements.      * For each data there must be a boolean value telling if the result is true or false    */   public void testLikeOps() {      ArrayList queries = new ArrayList();      ArrayList results = new ArrayList();      boolean t = true;      boolean f = false;            // query 0      queries.add("age=23 OR city LIKE 'L%n' OR amount BETWEEN 10.0 AND 2000.0");      /*  helper                 0  0  0, 0  0  1, 0  1  0, 0  1  1, 1  0  0  1  0  1  1  1  0  1  1  1  */      results.add(new boolean[] {f||f||f, f||f||t, f||t||f, f||t||t, t||f||f, t||f||t, t||t||f, t||t||t });      // query 1      queries.add("age=23 OR city LIKE 'L%x' OR amount BETWEEN 10.0 AND 2000.0");      /*  helper                 0  0  0, 0  0  1, 0  0  0, 0  0  1, 1  0  0  1  0  1  1  0  0  1  0  1  */      results.add(new boolean[] {f||f||f, f||f||t, f||f||f, f||f||t, t||f||f, t||f||t, t||f||f, t||f||t });      // query 2      queries.add("age=23 OR city LIKE 'L%n' ESCAPE '\\' OR amount BETWEEN 10.0 AND 2000.0");      /*  helper                 0  0  0, 0  0  1, 0  1  0, 0  1  1, 1  0  0  1  0  1  1  1  0  1  1  1  */      results.add(new boolean[] {f||f||f, f||f||t, f||t||f, f||t||t, t||f||f, t||f||t, t||t||f, t||t||t });      // query 3      queries.add("age=23 OR city NOT LIKE 'L%n' OR amount BETWEEN 10.0 AND 2000.0");      /*  helper                 0  1  0, 0  1  1, 0  0  0, 0  f  1, 1  1  0  1  t  1  1  0  0  1  0  1  */      results.add(new boolean[] {f||t||f, f||t||t, f||f||f, f||f||t, t||t||f, t||t||t, t||f||f, t||f||t });      // query 4      queries.add("age=23 OR city NOT LIKE 'L%n' ESCAPE '\\' OR amount BETWEEN 10.0 AND 2000.0");      /*  helper                 0  1  0, 0  1  1, 0  0  0, 0  f  1, 1  1  0  1  t  1  1  0  0  1  0  1  */      results.add(new boolean[] {f||t||f, f||t||t, f||f||f, f||f||t, t||t||f, t||t||t, t||f||f, t||f||t });      // query 5      queries.add("age=23 OR city LIKE 'Lo_d_n' OR amount BETWEEN 10.0 AND 2000.0");      /*  helper                 0  0  0, 0  0  1, 0  1  0, 0  1  1, 1  0  0  1  0  1  1  1  0  1  1  1  */      results.add(new boolean[] {f||f||f, f||f||t, f||t||f, f||t||t, t||f||f, t||f||t, t||t||f, t||t||t });      // query 6      queries.add("age=23 OR city LIKE 'Lo_d_x' OR amount BETWEEN 10.0 AND 2000.0");      /*  helper                 0  0  0, 0  0  1, 0  0  0, 0  0  1, 1  0  0  1  0  1  1  0  0  1  0  1  */      results.add(new boolean[] {f||f||f, f||f||t, f||f||f, f||f||t, t||f||f, t||f||t, t||f||f, t||f||t });      // query 7      queries.add("age=23 OR city LIKE 'Lo_d_n' ESCAPE '\\' OR amount BETWEEN 10.0 AND 2000.0");      /*  helper                 0  0  0, 0  0  1, 0  1  0, 0  1  1, 1  0  0  1  0  1  1  1  0  1  1  1  */      results.add(new boolean[] {f||f||f, f||f||t, f||t||f, f||t||t, t||f||f, t||f||t, t||t||f, t||t||t });      // query 8      queries.add("age=23 OR city NOT LIKE 'Lo_d_n' OR amount BETWEEN 10.0 AND 2000.0");      /*  helper                 0  1  0, 0  1  1, 0  0  0, 0  f  1, 1  1  0  1  t  1  1  0  0  1  0  1  */      results.add(new boolean[] {f||t||f, f||t||t, f||f||f, f||f||t, t||t||f, t||t||t, t||f||f, t||f||t });      // query 9      queries.add("age=23 OR city NOT LIKE 'Lo_d_n' ESCAPE '\\' OR amount BETWEEN 10.0 AND 2000.0");      /*  helper                 0  1  0, 0  1  1, 0  0  0, 0  f  1, 1  1  0  1  t  1  1  0  0  1  0  1  */      results.add(new boolean[] {f||t||f, f||t||t, f||f||f, f||f||t, t||t||f, t||t||t, t||f||f, t||f||t });      this.querySet = (String[])queries.toArray(new String[queries.size()]);      this.resultSet = (boolean[][])results.toArray(new boolean[results.size()][]);      // here the real testing is performed (the algorithm is the same for all tests)      selectorPerformTest();   }   /**    * Tests the REGEX statements.      * For each data there must be a boolean value telling if the result is true or false    */   public void testRegexOps() {      ArrayList queries = new ArrayList();      ArrayList results = new ArrayList();      boolean t = true;      boolean f = false;            // query 0      queries.add("age=23 OR city REGEX 'L.*n' OR amount BETWEEN 10.0 AND 2000.0");      /*  helper                 0  0  0, 0  0  1, 0  1  0, 0  1  1, 1  0  0  1  0  1  1  1  0  1  1  1  */      results.add(new boolean[] {f||f||f, f||f||t, f||t||f, f||t||t, t||f||f, t||f||t, t||t||f, t||t||t });      // query 1      queries.add("age=23 OR city REGEX 'L\\Dn\\Son' OR amount BETWEEN 10.0 AND 2000.0");      /*  helper                 0  0  0, 0  0  1, 0  1  0, 0  1  1, 1  0  0  1  0  1  1  1  0  1  1  1  */      results.add(new boolean[] {f||f||f, f||f||t, f||t||f, f||t||t, t||f||f, t||f||t, t||t||f, t||t||t });      // query 2      queries.add("age=23 OR city REGEX 'L[m-z]ndo[^z]' OR amount BETWEEN 10.0 AND 2000.0");      /*  helper                 0  0  0, 0  0  1, 0  1  0, 0  1  1, 1  0  0  1  0  1  1  1  0  1  1  1  */      results.add(new boolean[] {f||f||f, f||f||t, f||t||f, f||t||t, t||f||f, t||f||t, t||t||f, t||t||t });      // query 3      queries.add("age=23 OR city REGEX 'L.*x' OR amount BETWEEN 10.0 AND 2000.0");      /*  helper                 0  0  0, 0  0  1, 0  0  0, 0  0  1, 1  0  0  1  0  1  1  0  0  1  0  1  */      results.add(new boolean[] {f||f||f, f||f||t, f||f||f, f||f||t, t||f||f, t||f||t, t||f||f, t||f||t });      // query 4      queries.add("age=23 OR city REGEX 'Lo.d.n' OR amount BETWEEN 10.0 AND 2000.0");      /*  helper                 0  0  0, 0  0  1, 0  1  0, 0  1  1, 1  0  0  1  0  1  1  1  0  1  1  1  */      results.add(new boolean[] {f||f||f, f||f||t, f||t||f, f||t||t, t||f||f, t||f||t, t||t||f, t||t||t });      // query 5      queries.add("age=23 OR city REGEX 'Lo.d.x' OR amount BETWEEN 10.0 AND 2000.0");      /*  helper                 0  0  0, 0  0  1, 0  0  0, 0  0  1, 1  0  0  1  0  1  1  0  0  1  0  1  */      results.add(new boolean[] {f||f||f, f||f||t, f||f||f, f||f||t, t||f||f, t||f||t, t||f||f, t||f||t });      this.querySet = (String[])queries.toArray(new String[queries.size()]);      this.resultSet = (boolean[][])results.toArray(new boolean[results.size()][]);      // here the real testing is performed (the algorithm is the same for all tests)      selectorPerformTest();   }   /**    * These are the examples found in the JMS 1.1. specification    */   public void testLikeOpWrapper() {      try {         String pattern = "12%3";         LikeOpWrapper wrapper = new LikeOpWrapper(this.glob, pattern);                  assertEquals("wrong result with pattern '" + pattern + "' for '123'", true, wrapper.match("123"));         assertEquals("wrong result with pattern '" + pattern + "' for '12993'", true, wrapper.match("12993"));         assertEquals("wrong result with pattern '" + pattern + "' for '1234'", false, wrapper.match("1234"));         pattern = "l_se";         wrapper = new LikeOpWrapper(this.glob, pattern);         assertEquals("wrong result with pattern '" + pattern + "' for 'lose'", true, wrapper.match("lose"));         assertEquals("wrong result with pattern '" + pattern + "' for 'loose'", false, wrapper.match("loose"));         pattern = "\\_%";         wrapper = new LikeOpWrapper(this.glob, pattern, '\\');         assertEquals("wrong result with pattern '" + pattern + "' for '_foo'", true, wrapper.match("_foo"));         assertEquals("wrong result with pattern '" + pattern + "' for 'bar'", false, wrapper.match("bar"));      }      catch (XmlBlasterException ex) {         ex.printStackTrace();         assertTrue("an exception should not occur here " + ex.getMessage(), false);      }   }      /**    * <pre>    *  java org.xmlBlaster.test.classtest.Sql92SelectorTest    * </pre>    */   public static void main(String args[])   {      try {         Global global = new Global(args);         Sql92SelectorTest testSub = new Sql92SelectorTest(global, "Sql92SelectorTest");         if (global.getProperty().get("interactive", false)) {            testSub.setUp();            testSub.interactive();            return;         }         boolean doPerformance = global.getProperty().get("performance", false);                  testSub.setUp();         testSub.testLikeOpWrapper();         testSub.tearDown();         testSub.setUp();         testSub.testLogicalOps();         if (doPerformance) testSub.performanceCheck();         testSub.tearDown();         testSub.setUp();         testSub.testNullOps();         if (doPerformance) testSub.performanceCheck();         testSub.tearDown();               testSub.setUp();         testSub.testArithmeticOps();         if (doPerformance) testSub.performanceCheck();         testSub.tearDown();               testSub.setUp();         testSub.testInSetOps();         if (doPerformance) testSub.performanceCheck();         testSub.tearDown();               testSub.setUp();         testSub.testBetweenOps();         if (doPerformance) testSub.performanceCheck();         testSub.tearDown();               testSub.setUp();         testSub.testLikeOps();         if (doPerformance) testSub.performanceCheck();         testSub.tearDown();               testSub.setUp();         testSub.testRegexOps();         if (doPerformance) testSub.performanceCheck();         testSub.tearDown();            }      catch(Throwable e) {         e.printStackTrace();         //fail(e.toString());      }   }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?