// ============================================================================ // // Copyright (C) 2006-2016 Talend Inc. - www.talend.com // // This source code is available under agreement available at // %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt // // You should have received a copy of the agreement // along with this program; if not, write to Talend SA // 9 rue Pages 92150 Suresnes, France // // ============================================================================ package org.talend.dq.dbms; import junit.framework.Assert; import org.junit.Test; import org.talend.core.model.metadata.builder.database.dburl.SupportDBUrlType; import org.talend.dataquality.indicators.DateGrain; /** * created by talend on Feb 24, 2014 Detailled comment * */ public class NetezzaDbmsLanguageTest { /** * Test method for {@link org.talend.dq.dbms.NetezzaDbmsLanguage#getPatternFinderDefaultFunction(java.lang.String)}. */ @Test public void testGetPatternFinderDefaultFunction() { String expectedResult = "TRANSLATE(TRANSLATE(TRANSLATE(TRANSLATE(TRANSLATE(TRANSLATE(TRANSLATE(TRANSLATE(TRANSLATE(TRANSLATE(TRANSLATE(TRANSLATE(TRANSLATE(TRANSLATE(TRANSLATE(TRANSLATE(TRANSLATE(TRANSLATE(TRANSLATE(TRANSLATE(TRANSLATE(TRANSLATE(TRANSLATE(TRANSLATE(TRANSLATE(TRANSLATE(TRANSLATE(TRANSLATE(TRANSLATE(TRANSLATE(TRANSLATE(TRANSLATE(TRANSLATE(TRANSLATE(TRANSLATE(TRANSLATE(TRANSLATE(TRANSLATE(TRANSLATE(TRANSLATE(TRANSLATE(TRANSLATE(TRANSLATE(TRANSLATE(TRANSLATE(TRANSLATE(TRANSLATE(TRANSLATE(TRANSLATE(TRANSLATE(TRANSLATE(TRANSLATE(TRANSLATE(TRANSLATE(TRANSLATE(TRANSLATE(TRANSLATE(TRANSLATE(TRANSLATE(name,'B','A'),'C','A'),'D','A'),'E','A'),'F','A'),'G','A'),'H','A'),'I','A'),'J','A'),'K','A'),'L','A'),'M','A'),'N','A'),'O','A'),'P','A'),'Q','A'),'R','A'),'S','A'),'T','A'),'U','A'),'V','A'),'W','A'),'X','A'),'Y','A'),'Z','A'),'b','a'),'c','a'),'d','a'),'e','a'),'f','a'),'g','a'),'h','a'),'i','a'),'j','a'),'k','a'),'l','a'),'m','a'),'n','a'),'o','a'),'p','a'),'q','a'),'r','a'),'s','a'),'t','a'),'u','a'),'v','a'),'w','a'),'x','a'),'y','a'),'z','a'),'1','9'),'2','9'),'3','9'),'4','9'),'5','9'),'6','9'),'7','9'),'8','9'),'0','9')"; //$NON-NLS-1$ NetezzaDbmsLanguage netezzaDbmsLanguage = (NetezzaDbmsLanguage) DbmsLanguageFactory .createDbmsLanguage(SupportDBUrlType.NETEZZADEFAULTURL); String patternFinderDefaultFunction = netezzaDbmsLanguage.getPatternFinderDefaultFunction("name"); //$NON-NLS-1$ Assert.assertEquals(expectedResult, patternFinderDefaultFunction); } /** * Test method for * {@link org.talend.dq.dbms.NetezzaDbmsLanguage#replaceNullsWithString(java.lang.String, java.lang.String)}. */ @Test public void testReplaceNullsWithString() { String expectedResult = " ISNULL(name,NULL TALEND)"; //$NON-NLS-1$ NetezzaDbmsLanguage netezzaDbmsLanguage = (NetezzaDbmsLanguage) DbmsLanguageFactory .createDbmsLanguage(SupportDBUrlType.NETEZZADEFAULTURL); String replaceNullsWithString = netezzaDbmsLanguage.replaceNullsWithString("name", "NULL TALEND"); //$NON-NLS-1$ //$NON-NLS-2$ Assert.assertEquals(expectedResult, replaceNullsWithString); } /** * Test method for * {@link org.talend.dq.dbms.NetezzaDbmsLanguage#extract(org.talend.dataquality.indicators.DateGrain, java.lang.String)} * . * */ @Test public void testExtract() { String expectedResult = "DATE_PART(\'" + DateGrain.DAY.getLiteral() + "\',name)"; //$NON-NLS-1$ //$NON-NLS-2$ NetezzaDbmsLanguage netezzaDbmsLanguage = (NetezzaDbmsLanguage) DbmsLanguageFactory .createDbmsLanguage(SupportDBUrlType.NETEZZADEFAULTURL); String extractString = netezzaDbmsLanguage.extract(DateGrain.DAY, "name"); //$NON-NLS-1$ Assert.assertEquals(expectedResult, extractString); } /** * Test method for {@link org.talend.dq.dbms.NetezzaDbmsLanguage#getInvalidClauseBenFord(java.lang.String)} . * * for task TDQ-8600 * * Before that we use "cast(colmnName as char(1))" to get the first character of data but there is one error say * that "Character width exceeded" when data type of input data is Number and it is null. So we use * "Substring(colmnName,1,1)" instead of it to fixed this error.By the way, if we have two conditions and link them * use "or" like that "condition1 or condition2", althougth condition1 is true the condition2 will execute too in * the netezza database. */ @Test public void testGetInvalidClauseBenFord() { String colmnName = "name"; //$NON-NLS-1$ String actualResult = colmnName + " is null or Substring(" + colmnName + ",1,1) not in ('0','1','2','3','4','5','6','7','8','9')";//$NON-NLS-1$ //$NON-NLS-2$ NetezzaDbmsLanguage netezzaDbmsLanguage = (NetezzaDbmsLanguage) DbmsLanguageFactory .createDbmsLanguage(SupportDBUrlType.NETEZZADEFAULTURL); String resultString = netezzaDbmsLanguage.getInvalidClauseBenFord(colmnName); Assert.assertEquals(actualResult, resultString); } }