| /** |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You 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. |
| */ |
| #include "unit/TestBase.h" |
| #include "unit/Catch.h" |
| #include "data/SQLColumnIdentifier.h" |
| |
| using org::apache::nifi::minifi::sql::SQLColumnIdentifier; |
| |
| TEST_CASE("Handles escaped identifiers") { |
| REQUIRE(SQLColumnIdentifier("Abc").value() == "Abc"); |
| REQUIRE(SQLColumnIdentifier("\"Abc\"").value() == "Abc"); // standard |
| REQUIRE(SQLColumnIdentifier("[Abc]").value() == "Abc"); // MS SQL |
| REQUIRE(SQLColumnIdentifier("`Abc`").value() == "Abc"); // MySQL |
| REQUIRE(SQLColumnIdentifier("\"").value() == "\""); // single char is ignored |
| } |
| |
| TEST_CASE("Can return the original representation") { |
| REQUIRE(SQLColumnIdentifier("Abc").str() == "Abc"); |
| REQUIRE(SQLColumnIdentifier("\"Abc\"").str() == "\"Abc\""); |
| REQUIRE(SQLColumnIdentifier("[Abc]").str() == "[Abc]"); |
| REQUIRE(SQLColumnIdentifier("`Abc`").str() == "`Abc`"); |
| } |
| |
| TEST_CASE("Equality is escape-agnostic") { |
| REQUIRE(SQLColumnIdentifier("Abc") == SQLColumnIdentifier("\"Abc\"")); |
| REQUIRE(SQLColumnIdentifier("\"Abc\"") == SQLColumnIdentifier("[Abc]")); |
| REQUIRE(SQLColumnIdentifier("[Abc]") == SQLColumnIdentifier("`Abc`")); |
| REQUIRE(SQLColumnIdentifier("\"Abc\"") == SQLColumnIdentifier("`Abc`")); |
| } |
| |
| TEST_CASE("Hashing is escape-agnostic") { |
| std::unordered_set<SQLColumnIdentifier> ids; |
| ids.insert(SQLColumnIdentifier("[Abc]")); |
| REQUIRE(ids.count(SQLColumnIdentifier("\"Abc\"")) == 1); |
| REQUIRE(ids.count(SQLColumnIdentifier("[Abc]")) == 1); |
| REQUIRE(ids.count(SQLColumnIdentifier("`Abc`")) == 1); |
| REQUIRE(ids.count(SQLColumnIdentifier("Abc")) == 1); |
| REQUIRE(!ids.contains(SQLColumnIdentifier("abc"))); |
| } |