/**
* Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.util.db;
import static org.testng.AssertJUnit.assertEquals;
import org.testng.annotations.Test;
import com.opengamma.util.paging.PagingRequest;
import com.opengamma.util.test.TestGroup;
/**
* Test DbDialect.
*/
@Test(groups = TestGroup.UNIT)
public class DbDialectTest {
protected DbDialect _dialect = new MockDbDialect();
//-------------------------------------------------------------------------
public void test_isWildcard() {
assertEquals(true, _dialect.isWildcard("a*"));
assertEquals(true, _dialect.isWildcard("a?"));
assertEquals(true, _dialect.isWildcard("a*b"));
assertEquals(true, _dialect.isWildcard("a?b"));
assertEquals(true, _dialect.isWildcard("*b"));
assertEquals(true, _dialect.isWildcard("?b"));
assertEquals(false, _dialect.isWildcard("a"));
assertEquals(false, _dialect.isWildcard(""));
assertEquals(false, _dialect.isWildcard(null));
}
//-------------------------------------------------------------------------
public void test_sqlWildcardOperator() {
assertEquals("LIKE", _dialect.sqlWildcardOperator("a*"));
assertEquals("LIKE", _dialect.sqlWildcardOperator("a?"));
assertEquals("LIKE", _dialect.sqlWildcardOperator("a*b"));
assertEquals("LIKE", _dialect.sqlWildcardOperator("a?b"));
assertEquals("LIKE", _dialect.sqlWildcardOperator("*b"));
assertEquals("LIKE", _dialect.sqlWildcardOperator("?b"));
assertEquals("=", _dialect.sqlWildcardOperator("a"));
assertEquals("=", _dialect.sqlWildcardOperator(""));
assertEquals("=", _dialect.sqlWildcardOperator(null));
}
//-------------------------------------------------------------------------
public void test_sqlWildcardAdjustValue() {
assertEquals("a%", _dialect.sqlWildcardAdjustValue("a*"));
assertEquals("a_", _dialect.sqlWildcardAdjustValue("a?"));
assertEquals("a%b", _dialect.sqlWildcardAdjustValue("a*b"));
assertEquals("a_b", _dialect.sqlWildcardAdjustValue("a?b"));
assertEquals("%b", _dialect.sqlWildcardAdjustValue("*b"));
assertEquals("_b", _dialect.sqlWildcardAdjustValue("?b"));
assertEquals("a", _dialect.sqlWildcardAdjustValue("a"));
assertEquals("", _dialect.sqlWildcardAdjustValue(""));
assertEquals(null, _dialect.sqlWildcardAdjustValue(null));
assertEquals("a%b\\%c", _dialect.sqlWildcardAdjustValue("a*b%c"));
assertEquals("a_b\\_c", _dialect.sqlWildcardAdjustValue("a?b_c"));
}
//-------------------------------------------------------------------------
public void test_sqlWildcardQuery() {
assertEquals("AND col LIKE :arg ", _dialect.sqlWildcardQuery("AND col ", ":arg", "a*"));
assertEquals("AND col LIKE :arg ", _dialect.sqlWildcardQuery("AND col ", ":arg", "a?"));
assertEquals("AND col LIKE :arg ", _dialect.sqlWildcardQuery("AND col ", ":arg", "a*b"));
assertEquals("AND col LIKE :arg ", _dialect.sqlWildcardQuery("AND col ", ":arg", "a?b"));
assertEquals("AND col LIKE :arg ", _dialect.sqlWildcardQuery("AND col ", ":arg", "*b"));
assertEquals("AND col LIKE :arg ", _dialect.sqlWildcardQuery("AND col ", ":arg", "?b"));
assertEquals("AND col = :arg ", _dialect.sqlWildcardQuery("AND col ", ":arg", "a"));
assertEquals("AND col = :arg ", _dialect.sqlWildcardQuery("AND col ", ":arg", ""));
assertEquals("", _dialect.sqlWildcardQuery("AND col ", ":arg", null));
}
//-------------------------------------------------------------------------
public void test_toDatabaseString() {
assertEquals(null, _dialect.toDatabaseString(null));
assertEquals("", _dialect.toDatabaseString(""));
assertEquals(" ", _dialect.toDatabaseString(" "));
assertEquals("A", _dialect.toDatabaseString("A"));
}
public void test_fromDatabaseString() {
assertEquals(null, _dialect.fromDatabaseString(null));
assertEquals("", _dialect.fromDatabaseString(""));
assertEquals(" ", _dialect.fromDatabaseString(" "));
assertEquals("A", _dialect.fromDatabaseString("A"));
}
//-------------------------------------------------------------------------
public void test_sqlApplyPaging_noPaging() {
assertEquals(
"SELECT foo FROM bar WHERE TRUE ORDER BY foo ",
_dialect.sqlApplyPaging("SELECT foo FROM bar WHERE TRUE ", "ORDER BY foo ", null));
assertEquals(
"SELECT foo FROM bar WHERE TRUE ORDER BY foo ",
_dialect.sqlApplyPaging("SELECT foo FROM bar WHERE TRUE ", "ORDER BY foo ", PagingRequest.ALL));
}
public void test_sqlApplyPaging_limit() {
assertEquals(
"SELECT foo FROM bar WHERE TRUE ORDER BY foo FETCH FIRST 20 ROWS ONLY ",
_dialect.sqlApplyPaging("SELECT foo FROM bar WHERE TRUE ", "ORDER BY foo ", PagingRequest.ofPage(1, 20)));
}
public void test_sqlApplyPaging_offsetLimit() {
assertEquals(
"SELECT foo FROM bar WHERE TRUE ORDER BY foo OFFSET 40 ROWS FETCH NEXT 20 ROWS ONLY ",
_dialect.sqlApplyPaging("SELECT foo FROM bar WHERE TRUE ", "ORDER BY foo ", PagingRequest.ofPage(3, 20)));
}
//-------------------------------------------------------------------------
public void test_sqlNullDefault() {
assertEquals("COALESCE(a, b)", _dialect.sqlNullDefault("a", "b"));
}
}