/*
* 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.facebook.presto.teradata.functions;
import com.facebook.presto.operator.scalar.AbstractTestFunctions;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import static com.facebook.presto.metadata.FunctionExtractor.extractFunctions;
import static com.facebook.presto.spi.type.BigintType.BIGINT;
import static com.facebook.presto.spi.type.VarcharType.VARCHAR;
import static com.facebook.presto.spi.type.VarcharType.createVarcharType;
public class TestTeradataFunctions
extends AbstractTestFunctions
{
@BeforeClass
public void setUp()
{
functionAssertions.addFunctions(extractFunctions(new TeradataFunctionsPlugin().getFunctions()));
}
@Test
public void testIndex()
{
assertFunction("INDEX('high', 'ig')", BIGINT, 2L);
assertFunction("INDEX('high', 'igx')", BIGINT, 0L);
assertFunction("INDEX('Quadratically', 'a')", BIGINT, 3L);
assertFunction("INDEX('foobar', 'foobar')", BIGINT, 1L);
assertFunction("INDEX('foobar', 'foobar_baz')", BIGINT, 0L);
assertFunction("INDEX('foobar', 'obar')", BIGINT, 3L);
assertFunction("INDEX('zoo!', '!')", BIGINT, 4L);
assertFunction("INDEX('x', '')", BIGINT, 1L);
assertFunction("INDEX('', '')", BIGINT, 1L);
assertFunction("INDEX(NULL, '')", BIGINT, null);
assertFunction("INDEX('', NULL)", BIGINT, null);
assertFunction("INDEX(NULL, NULL)", BIGINT, null);
}
@Test
public void testSubstring()
{
assertFunction("SUBSTRING('Quadratically', 5)", createVarcharType(13), "ratically");
assertFunction("SUBSTRING('Quadratically', 5, 6)", createVarcharType(13), "ratica");
}
@Test
public void testChar2HexInt()
{
assertFunction("CHAR2HEXINT('123')", VARCHAR, "003100320033");
assertFunction("CHAR2HEXINT('One Ring')", VARCHAR, "004F006E0065002000520069006E0067");
}
@Test
public void testChar2HexIntUtf8()
{
assertFunction("CHAR2HEXINT('\u0105')", VARCHAR, "0105");
assertFunction("CHAR2HEXINT('\u0ca0')", VARCHAR, "0CA0");
assertFunction("CHAR2HEXINT('\uff71')", VARCHAR, "FF71");
assertFunction("CHAR2HEXINT('\u0ca0\u76ca\u0ca0')", VARCHAR, "0CA076CA0CA0");
assertFunction("CHAR2HEXINT('(\u30ce\u0ca0\u76ca\u0ca0)\u30ce\u5f61\u253b\u2501\u253b')", VARCHAR, "002830CE0CA076CA0CA0002930CE5F61253B2501253B");
}
}