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 + -
显示快捷键?