-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
test: Added DbCreateTableDefaultInsertTest
- Loading branch information
Showing
2 changed files
with
491 additions
and
0 deletions.
There are no files selected for viewing
268 changes: 268 additions & 0 deletions
268
...dbtest/src/test/java/com/tsurugidb/iceaxe/test/table/DbCreateTableDefaultIUpsertTest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,268 @@ | ||
package com.tsurugidb.iceaxe.test.table; | ||
|
||
import static org.junit.jupiter.api.Assertions.assertEquals; | ||
import static org.junit.jupiter.api.Assertions.assertNull; | ||
|
||
import java.math.BigDecimal; | ||
|
||
import org.junit.jupiter.api.BeforeEach; | ||
import org.junit.jupiter.api.Test; | ||
import org.junit.jupiter.api.TestInfo; | ||
import org.junit.jupiter.params.ParameterizedTest; | ||
import org.junit.jupiter.params.provider.ValueSource; | ||
|
||
import com.tsurugidb.iceaxe.test.util.DbTestTableTester; | ||
|
||
/** | ||
* create table default (insert or replace) test | ||
*/ | ||
class DbCreateTableDefaultIUpsertTest extends DbTestTableTester { | ||
|
||
@BeforeEach | ||
void beforeEach(TestInfo info) throws Exception { | ||
logInitStart(info); | ||
|
||
dropTestTable(); | ||
|
||
logInitEnd(info); | ||
} | ||
|
||
@ParameterizedTest | ||
@ValueSource(strings = { "1", "0", "1.0" /* TODO ,"-1", "1+1" */ }) | ||
void upsertInt(String defaultValue) throws Exception { | ||
var session = getSession(); | ||
var tm = createTransactionManagerOcc(session); | ||
String createSql = "create table " + TEST + " (" // | ||
+ " pk int primary key," // | ||
+ " value1 int," // | ||
+ " value2 int default " + defaultValue // | ||
+ ")"; | ||
tm.executeDdl(createSql); | ||
|
||
assertEquals(1, tm.executeAndGetCount("insert or replace into " + TEST + " values(1, 11, 111)")); | ||
assertEquals(1, tm.executeAndGetCount("insert or replace into " + TEST + " values(2, null, null)")); | ||
assertEquals(1, tm.executeAndGetCount("insert or replace into " + TEST + "(pk) values(3)")); | ||
//TODO assertEquals(1, tm.executeAndGetCount("insert or replace into " + TEST + " values(4, default, default)")); | ||
|
||
var actualList = tm.executeAndGetList("select * from " + TEST + " order by pk"); | ||
assertEquals(3, actualList.size()); | ||
{ | ||
var actual = actualList.get(0); | ||
assertEquals(1, actual.getInt("pk")); | ||
assertEquals(11, actual.getInt("value1")); | ||
assertEquals(111, actual.getInt("value2")); | ||
} | ||
{ | ||
var actual = actualList.get(1); | ||
assertEquals(2, actual.getInt("pk")); | ||
assertNull(actual.getIntOrNull("value1")); | ||
assertNull(actual.getIntOrNull("value2")); | ||
} | ||
{ | ||
var actual = actualList.get(2); | ||
assertEquals(3, actual.getInt("pk")); | ||
assertNull(actual.getIntOrNull("value1")); | ||
assertEquals(new BigDecimal(defaultValue).intValue(), actual.getInt("value2")); | ||
} | ||
|
||
assertEquals(1, tm.executeAndGetCount("insert or replace into " + TEST + "(pk) values(1)")); | ||
|
||
{ | ||
var actual = tm.executeAndFindRecord("select * from " + TEST + " where pk=1").get(); | ||
assertEquals(1, actual.getInt("pk")); | ||
assertNull(actual.getIntOrNull("value1")); | ||
assertEquals(new BigDecimal(defaultValue).intValue(), actual.getInt("value2")); | ||
} | ||
} | ||
|
||
@ParameterizedTest | ||
@ValueSource(strings = { "1", "0", "1.0" /* TODO ,"-1", "1+1" */ }) | ||
void upsertLong(String defaultValue) throws Exception { | ||
var session = getSession(); | ||
var tm = createTransactionManagerOcc(session); | ||
String createSql = "create table " + TEST + " (" // | ||
+ " pk int primary key," // | ||
+ " value1 bigint," // | ||
+ " value2 bigint default " + defaultValue // | ||
+ ")"; | ||
tm.executeDdl(createSql); | ||
|
||
assertEquals(1, tm.executeAndGetCount("insert or replace into " + TEST + " values(1, 11, 111)")); | ||
assertEquals(1, tm.executeAndGetCount("insert or replace into " + TEST + " values(2, null, null)")); | ||
assertEquals(1, tm.executeAndGetCount("insert or replace into " + TEST + "(pk) values(3)")); | ||
//TODO assertEquals(1, tm.executeAndGetCount("insert or replace into " + TEST + " values(4, default, default)")); | ||
|
||
var actualList = tm.executeAndGetList("select * from " + TEST + " order by pk"); | ||
assertEquals(3, actualList.size()); | ||
{ | ||
var actual = actualList.get(0); | ||
assertEquals(1, actual.getInt("pk")); | ||
assertEquals(11, actual.getLong("value1")); | ||
assertEquals(111, actual.getLong("value2")); | ||
} | ||
{ | ||
var actual = actualList.get(1); | ||
assertEquals(2, actual.getInt("pk")); | ||
assertNull(actual.getLongOrNull("value1")); | ||
assertNull(actual.getLongOrNull("value2")); | ||
} | ||
{ | ||
var actual = actualList.get(2); | ||
assertEquals(3, actual.getInt("pk")); | ||
assertNull(actual.getLongOrNull("value1")); | ||
assertEquals(new BigDecimal(defaultValue).longValue(), actual.getLong("value2")); | ||
} | ||
|
||
assertEquals(1, tm.executeAndGetCount("insert or replace into " + TEST + "(pk) values(1)")); | ||
|
||
{ | ||
var actual = tm.executeAndFindRecord("select * from " + TEST + " where pk=1").get(); | ||
assertEquals(1, actual.getInt("pk")); | ||
assertNull(actual.getLongOrNull("value1")); | ||
assertEquals(new BigDecimal(defaultValue).longValue(), actual.getLong("value2")); | ||
} | ||
} | ||
|
||
@ParameterizedTest | ||
@ValueSource(strings = { "1", "0", "1.0" /* TODO ,"-1", "1+1" */ }) | ||
void upsertDouble(String defaultValue) throws Exception { | ||
var session = getSession(); | ||
var tm = createTransactionManagerOcc(session); | ||
String createSql = "create table " + TEST + " (" // | ||
+ " pk int primary key," // | ||
+ " value1 double," // | ||
+ " value2 double default " + defaultValue // | ||
+ ")"; | ||
tm.executeDdl(createSql); | ||
|
||
assertEquals(1, tm.executeAndGetCount("insert or replace into " + TEST + " values(1, 11, 111)")); | ||
assertEquals(1, tm.executeAndGetCount("insert or replace into " + TEST + " values(2, null, null)")); | ||
assertEquals(1, tm.executeAndGetCount("insert or replace into " + TEST + "(pk) values(3)")); | ||
//TODO assertEquals(1, tm.executeAndGetCount("insert or replace into " + TEST + " values(4, default, default)")); | ||
|
||
var actualList = tm.executeAndGetList("select * from " + TEST + " order by pk"); | ||
assertEquals(3, actualList.size()); | ||
{ | ||
var actual = actualList.get(0); | ||
assertEquals(1, actual.getInt("pk")); | ||
assertEquals(11, actual.getDouble("value1")); | ||
assertEquals(111, actual.getDouble("value2")); | ||
} | ||
{ | ||
var actual = actualList.get(1); | ||
assertEquals(2, actual.getInt("pk")); | ||
assertNull(actual.getDoubleOrNull("value1")); | ||
assertNull(actual.getDoubleOrNull("value2")); | ||
} | ||
{ | ||
var actual = actualList.get(2); | ||
assertEquals(3, actual.getInt("pk")); | ||
assertNull(actual.getDoubleOrNull("value1")); | ||
assertEquals(new BigDecimal(defaultValue).doubleValue(), actual.getDouble("value2")); | ||
} | ||
|
||
assertEquals(1, tm.executeAndGetCount("insert or replace into " + TEST + "(pk) values(1)")); | ||
|
||
{ | ||
var actual = tm.executeAndFindRecord("select * from " + TEST + " where pk=1").get(); | ||
assertEquals(1, actual.getInt("pk")); | ||
assertNull(actual.getDoubleOrNull("value1")); | ||
assertEquals(new BigDecimal(defaultValue).doubleValue(), actual.getDouble("value2")); | ||
} | ||
} | ||
|
||
@ParameterizedTest | ||
@ValueSource(strings = { "1", "0", "1.2" /* TODO ,"-1", "1+1" */ }) | ||
void upsertDecimal(String defaultValue) throws Exception { | ||
var session = getSession(); | ||
var tm = createTransactionManagerOcc(session); | ||
String createSql = "create table " + TEST + " (" // | ||
+ " pk int primary key," // | ||
+ " value1 decimal(5,1)," // | ||
+ " value2 decimal(5,1) default " + defaultValue // | ||
+ ")"; | ||
tm.executeDdl(createSql); | ||
|
||
assertEquals(1, tm.executeAndGetCount("insert or replace into " + TEST + " values(1, 11, 111)")); | ||
assertEquals(1, tm.executeAndGetCount("insert or replace into " + TEST + " values(2, null, null)")); | ||
assertEquals(1, tm.executeAndGetCount("insert or replace into " + TEST + "(pk) values(3)")); | ||
//TODO assertEquals(1, tm.executeAndGetCount("insert or replace into " + TEST + " values(4, default, default)")); | ||
|
||
var actualList = tm.executeAndGetList("select * from " + TEST + " order by pk"); | ||
assertEquals(3, actualList.size()); | ||
{ | ||
var actual = actualList.get(0); | ||
assertEquals(1, actual.getInt("pk")); | ||
assertEquals(new BigDecimal("11.0"), actual.getDecimal("value1")); | ||
assertEquals(new BigDecimal("111.0"), actual.getDecimal("value2")); | ||
} | ||
{ | ||
var actual = actualList.get(1); | ||
assertEquals(2, actual.getInt("pk")); | ||
assertNull(actual.getDecimalOrNull("value1")); | ||
assertNull(actual.getDecimalOrNull("value2")); | ||
} | ||
{ | ||
var actual = actualList.get(2); | ||
assertEquals(3, actual.getInt("pk")); | ||
assertNull(actual.getDecimalOrNull("value1")); | ||
assertEquals(new BigDecimal(defaultValue).setScale(1), actual.getDecimal("value2")); | ||
} | ||
|
||
assertEquals(1, tm.executeAndGetCount("insert or replace into " + TEST + "(pk) values(1)")); | ||
|
||
{ | ||
var actual = tm.executeAndFindRecord("select * from " + TEST + " where pk=1").get(); | ||
assertEquals(1, actual.getInt("pk")); | ||
assertNull(actual.getDecimalOrNull("value1")); | ||
assertEquals(new BigDecimal(defaultValue).setScale(1), actual.getDecimal("value2")); | ||
} | ||
} | ||
|
||
@Test | ||
void upsertString() throws Exception { | ||
var session = getSession(); | ||
var tm = createTransactionManagerOcc(session); | ||
String createSql = "create table " + TEST + " (" // | ||
+ " pk int primary key," // | ||
+ " value1 varchar(10)," // | ||
+ " value2 varchar(10) default 'abc'" // | ||
+ ")"; | ||
tm.executeDdl(createSql); | ||
|
||
assertEquals(1, tm.executeAndGetCount("insert or replace into " + TEST + " values(1, '11', '111')")); | ||
assertEquals(1, tm.executeAndGetCount("insert or replace into " + TEST + " values(2, null, null)")); | ||
assertEquals(1, tm.executeAndGetCount("insert or replace into " + TEST + "(pk) values(3)")); | ||
//TODO assertEquals(1, tm.executeAndGetCount("insert or replace into " + TEST + " values(4, default, default)")); | ||
|
||
var actualList = tm.executeAndGetList("select * from " + TEST + " order by pk"); | ||
assertEquals(3, actualList.size()); | ||
{ | ||
var actual = actualList.get(0); | ||
assertEquals(1, actual.getInt("pk")); | ||
assertEquals("11", actual.getString("value1")); | ||
assertEquals("111", actual.getString("value2")); | ||
} | ||
{ | ||
var actual = actualList.get(1); | ||
assertEquals(2, actual.getInt("pk")); | ||
assertNull(actual.getStringOrNull("value1")); | ||
assertNull(actual.getStringOrNull("value2")); | ||
} | ||
{ | ||
var actual = actualList.get(2); | ||
assertEquals(3, actual.getInt("pk")); | ||
assertNull(actual.getStringOrNull("value1")); | ||
assertEquals("abc", actual.getString("value2")); | ||
} | ||
|
||
assertEquals(1, tm.executeAndGetCount("insert or replace into " + TEST + "(pk) values(1)")); | ||
|
||
{ | ||
var actual = tm.executeAndFindRecord("select * from " + TEST + " where pk=1").get(); | ||
assertEquals(1, actual.getInt("pk")); | ||
assertNull(actual.getStringOrNull("value1")); | ||
assertEquals("abc", actual.getString("value2")); | ||
} | ||
} | ||
} |
Oops, something went wrong.