?? criteriatest.java
字號:
package org.apache.torque.util;/* * Copyright 2001-2004 The Apache Software Foundation. * * Licensed under the Apache License, Version 2.0 (the "License") * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */import java.util.Calendar;import java.util.Date;import java.util.List;import org.apache.commons.configuration.BaseConfiguration;import org.apache.commons.configuration.Configuration;import org.apache.torque.BaseTestCase;import org.apache.torque.TorqueException;import org.apache.torque.adapter.DBFactory;/** * Test class for Criteria. * * @author <a href="mailto:celkins@scardini.com">Christopher Elkins</a> * @author <a href="mailto:sam@neurogrid.com">Sam Joseph</a> * @version $Id: CriteriaTest.java,v 1.24 2005/05/08 15:56:49 tfischer Exp $ */public class CriteriaTest extends BaseTestCase{ /** The criteria to use in the test. */ private Criteria c; /** * Creates a new instance. * * @param name the name of the test to run */ public CriteriaTest(String name) { super(name); } /** * Initializes the criteria. */ public void setUp() { super.setUp(); c = new Criteria(); } /** * Test basic adding of strings. */ public void testAddString() { final String table = "myTable"; final String column = "myColumn"; final String value = "myValue"; // Add the string c.add(table, column, (Object) value); // Verify that the key exists assertTrue(c.containsKey(table, column)); // Verify that what we get out is what we put in assertTrue(c.getString(table, column).equals(value)); } /** * test various properties of Criterion and nested criterion */ public void testNestedCriterion() { final String table2 = "myTable2"; final String column2 = "myColumn2"; final String value2 = "myValue2"; final String table3 = "myTable3"; final String column3 = "myColumn3"; final String value3 = "myValue3"; final String table4 = "myTable4"; final String column4 = "myColumn4"; final String value4 = "myValue4"; final String table5 = "myTable5"; final String column5 = "myColumn5"; final String value5 = "myValue5"; Criteria.Criterion crit2 = c.getNewCriterion(table2, column2, (Object) value2, Criteria.EQUAL); Criteria.Criterion crit3 = c.getNewCriterion(table3, column3, (Object) value3, Criteria.EQUAL); Criteria.Criterion crit4 = c.getNewCriterion(table4, column4, (Object) value4, Criteria.EQUAL); Criteria.Criterion crit5 = c.getNewCriterion(table5, column5, (Object) value5, Criteria.EQUAL); crit2.and(crit3).or(crit4.and(crit5)); String expect = "((myTable2.myColumn2='myValue2' " + "AND myTable3.myColumn3='myValue3') " + "OR (myTable4.myColumn4='myValue4' " + "AND myTable5.myColumn5='myValue5'))"; String result = crit2.toString(); assertEquals(expect, result); Criteria.Criterion crit6 = c.getNewCriterion(table2, column2, (Object) value2, Criteria.EQUAL); Criteria.Criterion crit7 = c.getNewCriterion(table3, column3, (Object) value3, Criteria.EQUAL); Criteria.Criterion crit8 = c.getNewCriterion(table4, column4, (Object) value4, Criteria.EQUAL); Criteria.Criterion crit9 = c.getNewCriterion(table5, column5, (Object) value5, Criteria.EQUAL); crit6.and(crit7).or(crit8).and(crit9); expect = "(((myTable2.myColumn2='myValue2' " + "AND myTable3.myColumn3='myValue3') " + "OR myTable4.myColumn4='myValue4') " + "AND myTable5.myColumn5='myValue5')"; result = crit6.toString(); assertEquals(expect, result); // should make sure we have tests for all possibilities Criteria.Criterion[] crita = crit2.getAttachedCriterion(); assertEquals(crit2, crita[0]); assertEquals(crit3, crita[1]); assertEquals(crit4, crita[2]); assertEquals(crit5, crita[3]); List tables = crit2.getAllTables(); assertEquals(crit2.getTable(), tables.get(0)); assertEquals(crit3.getTable(), tables.get(1)); assertEquals(crit4.getTable(), tables.get(2)); assertEquals(crit5.getTable(), tables.get(3)); // simple confirmations that equality operations work assertTrue(crit2.hashCode() == crit2.hashCode()); assertEquals(crit2.toString(), crit2.toString()); } /** * Tests <= and =>. */ public void testBetweenCriterion() { Criteria.Criterion cn1 = c.getNewCriterion( "INVOICE.COST", new Integer(1000), Criteria.GREATER_EQUAL); Criteria.Criterion cn2 = c.getNewCriterion( "INVOICE.COST", new Integer(5000), Criteria.LESS_EQUAL); c.add(cn1.and(cn2)); String expect = "SELECT FROM INVOICE WHERE " + "(INVOICE.COST>=1000 AND INVOICE.COST<=5000)"; String result = null; try { result = BasePeer.createQueryString(c); } catch (TorqueException e) { fail("TorqueException thrown in BasePeer.createQueryString()"); } assertEquals(expect, result); } /** * Verify that AND and OR criterion are nested correctly. */ public void testPrecedence() { Criteria.Criterion cn1 = c.getNewCriterion("INVOICE.COST", "1000", Criteria.GREATER_EQUAL); Criteria.Criterion cn2 = c.getNewCriterion("INVOICE.COST", "2000", Criteria.LESS_EQUAL); Criteria.Criterion cn3 = c.getNewCriterion("INVOICE.COST", "8000", Criteria.GREATER_EQUAL); Criteria.Criterion cn4 = c.getNewCriterion("INVOICE.COST", "9000", Criteria.LESS_EQUAL); c.add(cn1.and(cn2)); c.or(cn3.and(cn4)); String expect = "SELECT FROM INVOICE WHERE " + "((INVOICE.COST>='1000' AND INVOICE.COST<='2000') " + "OR (INVOICE.COST>='8000' AND INVOICE.COST<='9000'))"; String result = null; try { result = BasePeer.createQueryString(c); } catch (TorqueException e) { fail("TorqueException thrown in BasePeer.createQueryString()"); } assertEquals(expect, result); } /** * Test Criterion.setIgnoreCase(). * As the output is db specific the test just prints the result to * System.out */ public void testCriterionIgnoreCase() { Criteria myCriteria = new Criteria(); Criteria.Criterion expected = myCriteria.getNewCriterion( "TABLE.COLUMN", (Object)"FoObAr", Criteria.LIKE); Criteria.Criterion result = expected.setIgnoreCase(true); assertEquals("Criterion mis-match after calling setIgnoreCase(true)", expected.toString(), result.toString()); } /** * Test that true is evaluated correctly. */ public void testBoolean() { Criteria c = new Criteria().add("TABLE.COLUMN", true); String expect = "SELECT FROM TABLE WHERE TABLE.COLUMN=1";
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -