//////////////////////////////////////////////////////////////////////////////// /// @brief test suite for VelocyPackHelper.cpp /// /// @file /// /// DISCLAIMER /// /// Copyright 2012 triagens GmbH, Cologne, Germany /// /// 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. /// /// Copyright holder is triAGENS GmbH, Cologne, Germany /// /// @author Jan Steemann /// @author Copyright 2012, triAGENS GmbH, Cologne, Germany //////////////////////////////////////////////////////////////////////////////// #include "Basics/Common.h" #include "gtest/gtest.h" #include #include #include #include "Basics/VelocyPackHelper.h" // ----------------------------------------------------------------------------- // --SECTION-- private macros // ----------------------------------------------------------------------------- #define VPACK_EXPECT_TRUE(expected, func, lValue, rValue) \ l = VPackParser::fromJson(lValue); \ r = VPackParser::fromJson(rValue); \ EXPECT_TRUE(expected == func(l->slice(), r->slice(), true)); \ #define INIT_BUFFER TRI_string_buffer_t* sb = TRI_CreateStringBuffer(); #define FREE_BUFFER TRI_FreeStringBuffer(sb); #define STRINGIFY TRI_StringifyJson(sb, json); #define STRING_VALUE sb->_buffer #define FREE_JSON TRI_FreeJson(json); // ----------------------------------------------------------------------------- // --SECTION-- test suite // ----------------------------------------------------------------------------- //////////////////////////////////////////////////////////////////////////////// /// @brief test compare values with equal values //////////////////////////////////////////////////////////////////////////////// TEST(VPackHelperTest, tst_compare_values_equal) { std::shared_ptr l; std::shared_ptr r; // With Utf8-mode: VPACK_EXPECT_TRUE(0, arangodb::basics::VelocyPackHelper::compare, "null", "null"); VPACK_EXPECT_TRUE(0, arangodb::basics::VelocyPackHelper::compare, "false", "false"); VPACK_EXPECT_TRUE(0, arangodb::basics::VelocyPackHelper::compare, "true", "true"); VPACK_EXPECT_TRUE(0, arangodb::basics::VelocyPackHelper::compare, "0", "0"); VPACK_EXPECT_TRUE(0, arangodb::basics::VelocyPackHelper::compare, "1", "1"); VPACK_EXPECT_TRUE(0, arangodb::basics::VelocyPackHelper::compare, "1.5", "1.5"); VPACK_EXPECT_TRUE(0, arangodb::basics::VelocyPackHelper::compare, "-43.2", "-43.2"); VPACK_EXPECT_TRUE(0, arangodb::basics::VelocyPackHelper::compare, "\"\"", "\"\""); VPACK_EXPECT_TRUE(0, arangodb::basics::VelocyPackHelper::compare, "\" \"", "\" \""); VPACK_EXPECT_TRUE(0, arangodb::basics::VelocyPackHelper::compare, "\"the quick brown fox\"", "\"the quick brown fox\""); VPACK_EXPECT_TRUE(0, arangodb::basics::VelocyPackHelper::compare, "[]", "[]"); VPACK_EXPECT_TRUE(0, arangodb::basics::VelocyPackHelper::compare, "[-1]", "[-1]"); VPACK_EXPECT_TRUE(0, arangodb::basics::VelocyPackHelper::compare, "[0]", "[0]"); VPACK_EXPECT_TRUE(0, arangodb::basics::VelocyPackHelper::compare, "[1]", "[1]"); VPACK_EXPECT_TRUE(0, arangodb::basics::VelocyPackHelper::compare, "[true]", "[true]"); VPACK_EXPECT_TRUE(0, arangodb::basics::VelocyPackHelper::compare, "{}", "{}"); } //////////////////////////////////////////////////////////////////////////////// /// @brief test compare values with unequal values //////////////////////////////////////////////////////////////////////////////// TEST(VPackHelperTest, tst_compare_values_unequal) { std::shared_ptr l; std::shared_ptr r; VPACK_EXPECT_TRUE(-1, arangodb::basics::VelocyPackHelper::compare, "null", "false"); VPACK_EXPECT_TRUE(-1, arangodb::basics::VelocyPackHelper::compare, "null", "true"); VPACK_EXPECT_TRUE(-1, arangodb::basics::VelocyPackHelper::compare, "null", "-1"); VPACK_EXPECT_TRUE(-1, arangodb::basics::VelocyPackHelper::compare, "null", "0"); VPACK_EXPECT_TRUE(-1, arangodb::basics::VelocyPackHelper::compare, "null", "1"); VPACK_EXPECT_TRUE(-1, arangodb::basics::VelocyPackHelper::compare, "null", "-10"); VPACK_EXPECT_TRUE(-1, arangodb::basics::VelocyPackHelper::compare, "null", "\"\""); VPACK_EXPECT_TRUE(-1, arangodb::basics::VelocyPackHelper::compare, "null", "\"0\""); VPACK_EXPECT_TRUE(-1, arangodb::basics::VelocyPackHelper::compare, "null", "\" \""); VPACK_EXPECT_TRUE(-1, arangodb::basics::VelocyPackHelper::compare, "null", "[]"); VPACK_EXPECT_TRUE(-1, arangodb::basics::VelocyPackHelper::compare, "null", "[null]"); VPACK_EXPECT_TRUE(-1, arangodb::basics::VelocyPackHelper::compare, "null", "[false]"); VPACK_EXPECT_TRUE(-1, arangodb::basics::VelocyPackHelper::compare, "null", "[true]"); VPACK_EXPECT_TRUE(-1, arangodb::basics::VelocyPackHelper::compare, "null", "[0]"); VPACK_EXPECT_TRUE(-1, arangodb::basics::VelocyPackHelper::compare, "null", "{}"); VPACK_EXPECT_TRUE(-1, arangodb::basics::VelocyPackHelper::compare, "false", "true"); VPACK_EXPECT_TRUE(-1, arangodb::basics::VelocyPackHelper::compare, "false", "-1"); VPACK_EXPECT_TRUE(-1, arangodb::basics::VelocyPackHelper::compare, "false", "0"); VPACK_EXPECT_TRUE(-1, arangodb::basics::VelocyPackHelper::compare, "false", "1"); VPACK_EXPECT_TRUE(-1, arangodb::basics::VelocyPackHelper::compare, "false", "-10"); VPACK_EXPECT_TRUE(-1, arangodb::basics::VelocyPackHelper::compare, "false", "\"\""); VPACK_EXPECT_TRUE(-1, arangodb::basics::VelocyPackHelper::compare, "false", "\"0\""); VPACK_EXPECT_TRUE(-1, arangodb::basics::VelocyPackHelper::compare, "false", "\" \""); VPACK_EXPECT_TRUE(-1, arangodb::basics::VelocyPackHelper::compare, "false", "[]"); VPACK_EXPECT_TRUE(-1, arangodb::basics::VelocyPackHelper::compare, "false", "[null]"); VPACK_EXPECT_TRUE(-1, arangodb::basics::VelocyPackHelper::compare, "false", "[false]"); VPACK_EXPECT_TRUE(-1, arangodb::basics::VelocyPackHelper::compare, "false", "[true]"); VPACK_EXPECT_TRUE(-1, arangodb::basics::VelocyPackHelper::compare, "false", "[0]"); VPACK_EXPECT_TRUE(-1, arangodb::basics::VelocyPackHelper::compare, "false", "{}"); VPACK_EXPECT_TRUE(-1, arangodb::basics::VelocyPackHelper::compare, "true", "-1"); VPACK_EXPECT_TRUE(-1, arangodb::basics::VelocyPackHelper::compare, "true", "0"); VPACK_EXPECT_TRUE(-1, arangodb::basics::VelocyPackHelper::compare, "true", "1"); VPACK_EXPECT_TRUE(-1, arangodb::basics::VelocyPackHelper::compare, "true", "-10"); VPACK_EXPECT_TRUE(-1, arangodb::basics::VelocyPackHelper::compare, "true", "\"\""); VPACK_EXPECT_TRUE(-1, arangodb::basics::VelocyPackHelper::compare, "true", "\"0\""); VPACK_EXPECT_TRUE(-1, arangodb::basics::VelocyPackHelper::compare, "true", "\" \""); VPACK_EXPECT_TRUE(-1, arangodb::basics::VelocyPackHelper::compare, "true", "[]"); VPACK_EXPECT_TRUE(-1, arangodb::basics::VelocyPackHelper::compare, "true", "[null]"); VPACK_EXPECT_TRUE(-1, arangodb::basics::VelocyPackHelper::compare, "true", "[false]"); VPACK_EXPECT_TRUE(-1, arangodb::basics::VelocyPackHelper::compare, "true", "[true]"); VPACK_EXPECT_TRUE(-1, arangodb::basics::VelocyPackHelper::compare, "true", "[0]"); VPACK_EXPECT_TRUE(-1, arangodb::basics::VelocyPackHelper::compare, "true", "{}"); VPACK_EXPECT_TRUE(-1, arangodb::basics::VelocyPackHelper::compare, "-2", "-1"); VPACK_EXPECT_TRUE(-1, arangodb::basics::VelocyPackHelper::compare, "-10", "-9"); VPACK_EXPECT_TRUE(-1, arangodb::basics::VelocyPackHelper::compare, "-20", "-5"); VPACK_EXPECT_TRUE(-1, arangodb::basics::VelocyPackHelper::compare, "-5", "-2"); VPACK_EXPECT_TRUE(-1, arangodb::basics::VelocyPackHelper::compare, "true", "1"); VPACK_EXPECT_TRUE(-1, arangodb::basics::VelocyPackHelper::compare, "1.5", "1.6"); VPACK_EXPECT_TRUE(-1, arangodb::basics::VelocyPackHelper::compare, "10.5", "10.51"); VPACK_EXPECT_TRUE(-1, arangodb::basics::VelocyPackHelper::compare, "0", "\"\""); VPACK_EXPECT_TRUE(-1, arangodb::basics::VelocyPackHelper::compare, "0", "\"0\""); VPACK_EXPECT_TRUE(-1, arangodb::basics::VelocyPackHelper::compare, "0", "\"-1\""); VPACK_EXPECT_TRUE(-1, arangodb::basics::VelocyPackHelper::compare, "1", "\"-1\""); VPACK_EXPECT_TRUE(-1, arangodb::basics::VelocyPackHelper::compare, "1", "\" \""); VPACK_EXPECT_TRUE(-1, arangodb::basics::VelocyPackHelper::compare, "0", "[]"); VPACK_EXPECT_TRUE(-1, arangodb::basics::VelocyPackHelper::compare, "0", "[-1]"); VPACK_EXPECT_TRUE(-1, arangodb::basics::VelocyPackHelper::compare, "0", "[0]"); VPACK_EXPECT_TRUE(-1, arangodb::basics::VelocyPackHelper::compare, "0", "[1]"); VPACK_EXPECT_TRUE(-1, arangodb::basics::VelocyPackHelper::compare, "0", "[null]"); VPACK_EXPECT_TRUE(-1, arangodb::basics::VelocyPackHelper::compare, "0", "[false]"); VPACK_EXPECT_TRUE(-1, arangodb::basics::VelocyPackHelper::compare, "0", "[true]"); VPACK_EXPECT_TRUE(-1, arangodb::basics::VelocyPackHelper::compare, "0", "{}"); VPACK_EXPECT_TRUE(-1, arangodb::basics::VelocyPackHelper::compare, "1", "[]"); VPACK_EXPECT_TRUE(-1, arangodb::basics::VelocyPackHelper::compare, "1", "[-1]"); VPACK_EXPECT_TRUE(-1, arangodb::basics::VelocyPackHelper::compare, "1", "[0]"); VPACK_EXPECT_TRUE(-1, arangodb::basics::VelocyPackHelper::compare, "1", "[1]"); VPACK_EXPECT_TRUE(-1, arangodb::basics::VelocyPackHelper::compare, "1", "[null]"); VPACK_EXPECT_TRUE(-1, arangodb::basics::VelocyPackHelper::compare, "1", "[false]"); VPACK_EXPECT_TRUE(-1, arangodb::basics::VelocyPackHelper::compare, "1", "[true]"); VPACK_EXPECT_TRUE(-1, arangodb::basics::VelocyPackHelper::compare, "1", "{}"); }