/* * 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.cassandra.util; import com.facebook.presto.cassandra.CassandraColumnHandle; import com.facebook.presto.cassandra.CassandraType; import com.google.common.collect.ImmutableList; import org.testng.annotations.Test; import java.util.List; import static com.facebook.presto.cassandra.util.CassandraCqlUtils.quoteStringLiteral; import static com.facebook.presto.cassandra.util.CassandraCqlUtils.quoteStringLiteralForJson; import static com.facebook.presto.cassandra.util.CassandraCqlUtils.validColumnName; import static com.facebook.presto.cassandra.util.CassandraCqlUtils.validSchemaName; import static com.facebook.presto.cassandra.util.CassandraCqlUtils.validTableName; import static org.testng.Assert.assertEquals; public class TestCassandraCqlUtils { @Test public void testValidSchemaName() { assertEquals("foo", validSchemaName("foo")); assertEquals("\"select\"", validSchemaName("select")); } @Test public void testValidTableName() { assertEquals("foo", validTableName("foo")); assertEquals("\"Foo\"", validTableName("Foo")); assertEquals("\"select\"", validTableName("select")); } @Test public void testValidColumnName() { assertEquals("foo", validColumnName("foo")); assertEquals("\"\"", validColumnName(CassandraCqlUtils.EMPTY_COLUMN_NAME)); assertEquals("\"\"", validColumnName("")); assertEquals("\"select\"", validColumnName("select")); } @Test public void testQuote() { assertEquals("'foo'", quoteStringLiteral("foo")); assertEquals("'Presto''s'", quoteStringLiteral("Presto's")); } @Test public void testQuoteJson() { assertEquals("\"foo\"", quoteStringLiteralForJson("foo")); assertEquals("\"Presto's\"", quoteStringLiteralForJson("Presto's")); assertEquals("\"xx\\\"xx\"", quoteStringLiteralForJson("xx\"xx")); } @Test public void testAppendSelectColumns() { List<CassandraColumnHandle> columns = ImmutableList.of( new CassandraColumnHandle("", "foo", 0, CassandraType.VARCHAR, null, false, false, false, false), new CassandraColumnHandle("", "bar", 0, CassandraType.VARCHAR, null, false, false, false, false), new CassandraColumnHandle("", "table", 0, CassandraType.VARCHAR, null, false, false, false, false)); StringBuilder sb = new StringBuilder(); CassandraCqlUtils.appendSelectColumns(sb, columns); String str = sb.toString(); assertEquals("foo,bar,\"table\"", str); } }