aboutsummaryrefslogtreecommitdiffstats
path: root/src/test
diff options
context:
space:
mode:
authorSotaro SUZUKI <sotaro.suzuki@architector.jp>2014-10-01 15:32:06 +0900
committerJames Moger <james.moger@gitblit.com>2014-10-06 10:08:50 -0400
commitdd21bce82da9617ff8f748f8567b0329aca07b83 (patch)
tree730a2b85b54537a016219b9a08f4d16fb82897e1 /src/test
parent06c1374cfc17bdad621f6ad5154f4de08905da99 (diff)
downloadiciql-dd21bce82da9617ff8f748f8567b0329aca07b83.tar.gz
iciql-dd21bce82da9617ff8f748f8567b0329aca07b83.zip
add support condition oneOf / noneOf
var-length parameterized IN(?, ?, ...), NOT IN(?, ?, ...) support
Diffstat (limited to 'src/test')
-rw-r--r--src/test/java/com/iciql/test/IciqlSuite.java30
-rw-r--r--src/test/java/com/iciql/test/OneOfTest.java107
2 files changed, 122 insertions, 15 deletions
diff --git a/src/test/java/com/iciql/test/IciqlSuite.java b/src/test/java/com/iciql/test/IciqlSuite.java
index a474404..9c9ba39 100644
--- a/src/test/java/com/iciql/test/IciqlSuite.java
+++ b/src/test/java/com/iciql/test/IciqlSuite.java
@@ -77,7 +77,7 @@ import com.iciql.util.Utils;
/**
* JUnit 4 iciql test suite.
- *
+ *
* By default this test suite will run against the H2 database. You can change
* this by switching the DEFAULT_TEST_DB value.
* <p>
@@ -87,11 +87,11 @@ import com.iciql.util.Utils;
* NOTE: If you want to test against MySQL or PostgreSQL you must create an
* "iciql" database and allow user "sa" password "sa" complete control of that
* database.
- *
+ *
*/
@RunWith(Suite.class)
@SuiteClasses({ AliasMapTest.class, AnnotationsTest.class, BooleanModelTest.class, ClobTest.class,
- ConcurrencyTest.class, EnumsTest.class, ModelsTest.class, PrimitivesTest.class,
+ ConcurrencyTest.class, EnumsTest.class, ModelsTest.class, PrimitivesTest.class, OneOfTest.class,
RuntimeQueryTest.class, SamplesTest.class, UpdateTest.class, UpgradesTest.class, JoinTest.class,
UUIDTest.class, ViewsTest.class, ForeignKeyTest.class, TransactionTest.class })
public class IciqlSuite {
@@ -140,7 +140,7 @@ public class IciqlSuite {
/**
* Open a new Db object. All connections are cached and re-used to eliminate
* embedded database startup costs.
- *
+ *
* @return a fresh Db object
*/
public static Db openNewDb() {
@@ -196,7 +196,7 @@ public class IciqlSuite {
/**
* Open the current database.
- *
+ *
* @return the current database
*/
public static Db openCurrentDb() {
@@ -208,7 +208,7 @@ public class IciqlSuite {
/**
* Returns the name of the underlying database engine for the Db object.
- *
+ *
* @param db
* @return the database engine name
*/
@@ -223,7 +223,7 @@ public class IciqlSuite {
/**
* Returns true if the underlying database engine is Derby.
- *
+ *
* @param db
* @return true if underlying database engine is Derby
*/
@@ -233,7 +233,7 @@ public class IciqlSuite {
/**
* Returns true if the underlying database engine is H2.
- *
+ *
* @param db
* @return true if underlying database engine is H2
*/
@@ -243,7 +243,7 @@ public class IciqlSuite {
/**
* Returns true if the underlying database engine is MySQL.
- *
+ *
* @param db
* @return true if underlying database engine is MySQL
*/
@@ -253,7 +253,7 @@ public class IciqlSuite {
/**
* Gets the default schema of the underlying database engine.
- *
+ *
* @param db
* @return the default schema
*/
@@ -272,7 +272,7 @@ public class IciqlSuite {
/**
* Main entry point for the test suite. Executing this method will run the
* test suite on all registered databases.
- *
+ *
* @param args
* @throws Exception
*/
@@ -491,7 +491,7 @@ public class IciqlSuite {
/**
* Start an HSQL tcp server.
- *
+ *
* @return an HSQL server instance
* @throws Exception
*/
@@ -503,7 +503,7 @@ public class IciqlSuite {
// set up the rest of properties
// alternative to the above is
- org.hsqldb.Server server = new org.hsqldb.Server();
+ org.hsqldb.Server server = new org.hsqldb.Server();
server.setProperties(p);
server.setLogWriter(null);
server.setErrWriter(null);
@@ -513,7 +513,7 @@ public class IciqlSuite {
/**
* Start the H2 tcp server.
- *
+ *
* @return an H2 server instance
* @throws Exception
*/
@@ -555,7 +555,7 @@ public class IciqlSuite {
}
int getStatementRate() {
- return Double.valueOf(((double) statements) / (runtime / 1000d)).intValue();
+ return Double.valueOf((statements) / (runtime / 1000d)).intValue();
}
String describeDatabase() {
diff --git a/src/test/java/com/iciql/test/OneOfTest.java b/src/test/java/com/iciql/test/OneOfTest.java
new file mode 100644
index 0000000..2ca7cc7
--- /dev/null
+++ b/src/test/java/com/iciql/test/OneOfTest.java
@@ -0,0 +1,107 @@
+/*
+ * Copyright (c) 2009-2014, Architector Inc., Japan
+ * All rights reserved.
+ *
+ * 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.
+ */
+
+package com.iciql.test;
+
+import static org.junit.Assert.assertEquals;
+import java.util.ArrayList;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import com.iciql.Db;
+import com.iciql.test.models.Customer;
+import com.iciql.test.models.PrimitivesModel;
+
+public class OneOfTest {
+
+ private Db db;
+
+ @Before
+ public void setUp() {
+ db = IciqlSuite.openNewDb();
+ }
+
+ @After
+ public void tearDown() {
+ db.close();
+ }
+
+ @SuppressWarnings("serial")
+ @Test
+ public void oneOfTest() {
+ PrimitivesModel p = new PrimitivesModel();
+ assertEquals(
+ db.from(p)
+ .where(p.myInteger).oneOf(0)
+ .toSQL(),
+ "SELECT * FROM PrimitivesTest WHERE myInteger IN(0)");
+ assertEquals(
+ db.from(p)
+ .where(p.myInteger).oneOf(0, 1)
+ .toSQL(),
+ "SELECT * FROM PrimitivesTest WHERE myInteger IN(0, 1)");
+ Customer c = new Customer();
+ assertEquals(
+ db.from(c)
+ .where(c.customerId).oneOf(new ArrayList<String>() {{
+ this.add("a");
+ }})
+ .toSQL(),
+ "SELECT * FROM Customer WHERE customerId IN('a')");
+ assertEquals(
+ db.from(c)
+ .where(c.customerId).oneOf(new ArrayList<String>() {{
+ this.add("a");
+ this.add("b");
+ }})
+ .toSQL(),
+ "SELECT * FROM Customer WHERE customerId IN('a', 'b')");
+ }
+
+ @SuppressWarnings("serial")
+ @Test
+ public void noneOfTest() {
+ PrimitivesModel p = new PrimitivesModel();
+ assertEquals(
+ db.from(p)
+ .where(p.myInteger).noneOf(0)
+ .toSQL(),
+ "SELECT * FROM PrimitivesTest WHERE myInteger NOT IN(0)");
+ assertEquals(
+ db.from(p)
+ .where(p.myInteger).noneOf(0, 1)
+ .toSQL(),
+ "SELECT * FROM PrimitivesTest WHERE myInteger NOT IN(0, 1)");
+ Customer c = new Customer();
+ assertEquals(
+ db.from(c)
+ .where(c.customerId).noneOf(new ArrayList<String>() {{
+ this.add("a");
+ }})
+ .toSQL(),
+ "SELECT * FROM Customer WHERE customerId NOT IN('a')");
+ assertEquals(
+ db.from(c)
+ .where(c.customerId).noneOf(new ArrayList<String>() {{
+ this.add("a");
+ this.add("b");
+ }})
+ .toSQL(),
+ "SELECT * FROM Customer WHERE customerId NOT IN('a', 'b')");
+ }
+
+}