/** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. */ package com.liferay.portal.dao.sql.transformer; import com.liferay.portal.kernel.dao.db.DB; import com.liferay.portal.kernel.util.CharPool; import com.liferay.portal.kernel.util.StringUtil; import java.util.function.Function; import org.junit.Assert; import org.junit.Test; /** * @author Manuel de la Peña * @author Brian Wing Shun Chan */ public abstract class BaseSQLTransformerLogicTestCase { public BaseSQLTransformerLogicTestCase(DB db) { sqlTransformer = SQLTransformerFactory.getSQLTransformer(db); } @Test public void testReplaceBitwiseCheck() { Assert.assertEquals( getBitwiseCheckTransformedSQL(), sqlTransformer.transform(getBitwiseCheckOriginalSQL())); } @Test public void testReplaceBitwiseCheckWithExtraWhitespace() { Assert.assertEquals( getBitwiseCheckTransformedSQL(), sqlTransformer.transform( _addExtraWhitespaceFunction.apply( getBitwiseCheckOriginalSQL()))); } @Test public void testReplaceBoolean() { Assert.assertEquals( getBooleanTransformedSQL(), sqlTransformer.transform(getBooleanOriginalSQL())); } @Test public void testReplaceCastClobText() { Assert.assertEquals( getCastClobTextTransformedSQL(), sqlTransformer.transform(getCastClobTextOriginalSQL())); } @Test public void testReplaceCastLong() { Assert.assertEquals( getCastLongTransformedSQL(), sqlTransformer.transform(getCastLongOriginalSQL())); } @Test public void testReplaceCrossJoin() { Assert.assertEquals( getCrossJoinTransformedSQL(), sqlTransformer.transform(getCrossJoinOriginalSQL())); } @Test public void testReplaceInstr() { Assert.assertEquals( getInstrTransformedSQL(), sqlTransformer.transform(getInstrOriginalSQL())); } @Test public void testReplaceInstrWithExtraWhitespace() { Assert.assertEquals( getInstrTransformedSQL(), sqlTransformer.transform( _addExtraWhitespaceFunction.apply(getInstrOriginalSQL()))); } @Test public void testReplaceIntegerDivision() { Assert.assertEquals( getIntegerDivisionTransformedSQL(), sqlTransformer.transform(getIntegerDivisionOriginalSQL())); } @Test public void testReplaceIntegerDivisionWithExtraWhitespace() { Assert.assertEquals( getIntegerDivisionTransformedSQL(), sqlTransformer.transform( _addExtraWhitespaceFunction.apply( getIntegerDivisionOriginalSQL()))); } @Test public void testReplaceMod() { Assert.assertEquals( getModTransformedSQL(), sqlTransformer.transform(getModOriginalSQL())); } @Test public void testReplaceModWithExtraWhitespace() { Assert.assertEquals( getModTransformedSQL(), sqlTransformer.transform( _addExtraWhitespaceFunction.apply(getModOriginalSQL()))); } @Test public void testReplaceNullDate() { Assert.assertEquals( getNullDateTransformedSQL(), sqlTransformer.transform(getNullDateOriginalSQL())); } @Test public void testReplaceReplace() { Assert.assertEquals( getReplaceTransformedSQL(), sqlTransformer.transform(getReplaceOriginalSQL())); } @Test public void testReplaceSubstr() { Assert.assertEquals( getSubstrTransformedSQL(), sqlTransformer.transform(getSubstrOriginalSQL())); } @Test public void testReplaceSubstrWithExtraWhitespace() { Assert.assertEquals( getSubstrTransformedSQL(), sqlTransformer.transform( _addExtraWhitespaceFunction.apply(getSubstrOriginalSQL()))); } @Test public void testTransform() { String sql = "select * from Foo"; Assert.assertEquals(sql, sqlTransformer.transform(sql)); } protected String getBitwiseCheckOriginalSQL() { return "select BITAND(foo, bar) from Foo"; } protected String getBitwiseCheckTransformedSQL() { return getBitwiseCheckOriginalSQL(); } protected String getBooleanOriginalSQL() { return "select * from Foo where foo = [$FALSE$] and bar = [$TRUE$]"; } protected String getBooleanTransformedSQL() { return "select * from Foo where foo = false and bar = true"; } protected String getCastClobTextOriginalSQL() { return "select CAST_CLOB_TEXT(foo) from Foo"; } protected String getCastClobTextTransformedSQL() { return getCastClobTextOriginalSQL(); } protected String getCastLongOriginalSQL() { return "select CONVERT(foo, SQL_BIGINT) from Foo"; } protected String getCastLongTransformedSQL() { return getCastLongOriginalSQL(); } protected String getCastTextOriginalSQL() { return "select CAST_TEXT(foo) from Foo"; } protected String getCrossJoinOriginalSQL() { return "select * from Foo CROSS JOIN Bar"; } protected String getCrossJoinTransformedSQL() { return getCrossJoinOriginalSQL(); } protected String getInstrOriginalSQL() { return "select INSTR(foo) from Foo"; } protected String getInstrTransformedSQL() { return getInstrOriginalSQL(); } protected String getIntegerDivisionOriginalSQL() { return "select INTEGER_DIV(foo, bar) from Foo"; } protected String getIntegerDivisionTransformedSQL() { return getIntegerDivisionOriginalSQL(); } protected String getModOriginalSQL() { return "select MOD(foo, bar) from Foo"; } protected String getModTransformedSQL() { return getModOriginalSQL(); } protected String getNullDateOriginalSQL() { return "select [$NULL_DATE$] from Foo"; } protected String getNullDateTransformedSQL() { return getNullDateOriginalSQL(); } protected String getReplaceOriginalSQL() { return "select replace(foo) from Foo"; } protected String getReplaceTransformedSQL() { return getReplaceOriginalSQL(); } protected String getSubstrOriginalSQL() { return "select foo from Foo"; } protected String getSubstrTransformedSQL() { return getSubstrOriginalSQL(); } protected SQLTransformer sqlTransformer; private final Function<String, String> _addExtraWhitespaceFunction = (String sql) -> StringUtil.replace(sql, CharPool.COMMA, " , "); }