From 7f4f3271665c57e9720f9efeff7371c6aac58075 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Konstantin=20Ka=CC=88fer?= Date: Thu, 8 May 2014 13:42:54 +0200 Subject: [PATCH] make sure we're not converting too relaxedly --- include/llmr/style/value.hpp | 45 ++++--- src/map/vector_tile.cpp | 10 +- test/variant.cpp | 246 +++++++++++++++++------------------ 3 files changed, 158 insertions(+), 143 deletions(-) diff --git a/include/llmr/style/value.hpp b/include/llmr/style/value.hpp index 051f061d3..0dc53248b 100644 --- a/include/llmr/style/value.hpp +++ b/include/llmr/style/value.hpp @@ -14,30 +14,42 @@ Value parseValue(pbf data); namespace util { +inline int string_to_bool(std::string str) { + std::transform(str.begin(), str.end(), str.begin(), ::tolower); + if (str == "false" || str == "null" || !str.length()) return 0; + else if (str == "true") return 1; + else return -1; +} + template struct string_to_number {}; template <> struct string_to_number { - bool operator()(std::string str) const { - std::transform(str.begin(), str.end(), str.begin(), ::tolower); - str.erase(std::remove_if(str.begin(), str.end(), ::isspace), str.end()); - return !(str == "false" || str == "null" || !str.length()); + bool operator()(const std::string &str) const { + // Converts 0 => false, 1 => true and -1 => true. + return string_to_bool(str); } }; template <> struct string_to_number { - double operator()(std::string const &str) const try { return std::stod(str); } - catch (...) { return string_to_number()(str); } + double operator()(std::string const &str) const { + int val = string_to_bool(str); + return val < 0 ? std::stod(str) : val; + } }; template <> struct string_to_number { - int64_t operator()(std::string const &str) const try { return std::stoll(str); } - catch (...) { return string_to_number()(str); } + int64_t operator()(std::string const &str) const { + int val = string_to_bool(str); + return val < 0 ? std::stoll(str) : val; + } }; template <> struct string_to_number { - uint64_t operator()(std::string const &str) const try { return std::stoull(str); } - catch (...) { return string_to_number()(str); } + uint64_t operator()(std::string const &str) const { + int val = string_to_bool(str); + return val < 0 ? std::stoull(str) : val; + } }; struct relaxed_equal_visitor { @@ -53,23 +65,24 @@ struct relaxed_equal_visitor { bool operator()(uint64_t lhs, int64_t rhs) const { return rhs < 0 ? false : lhs == uint64_t(rhs); } template ::value>::type> - bool operator()(T lhs, const std::string &rhs) const { return lhs == string_to_number()(rhs); } + bool operator()(T lhs, const std::string &rhs) const try { return lhs == string_to_number()(rhs); } + catch(...) { return false; } template ::value>::type> - bool operator()(const std::string &lhs, T rhs) const { return string_to_number()(lhs) == rhs; } + bool operator()(const std::string &lhs, T rhs) const try { return string_to_number()(lhs) == rhs; } + catch(...) { return false; } template bool operator()(T0 lhs, T1 rhs) const { return lhs == rhs; } }; -template struct relaxed_equal { - relaxed_equal(T const &lhs) : lhs(lhs) {} + relaxed_equal(Value const &lhs) : lhs(lhs) {} - bool operator()(T const &rhs) const { + bool operator()(Value const &rhs) const { return apply_visitor(lhs, rhs, relaxed_equal_visitor()); } - T const &lhs; + Value const &lhs; }; } } diff --git a/src/map/vector_tile.cpp b/src/map/vector_tile.cpp index bcc8c2d9b..ada1ae6d4 100644 --- a/src/map/vector_tile.cpp +++ b/src/map/vector_tile.cpp @@ -235,8 +235,16 @@ FilteredVectorTileLayer::FilteredVectorTileLayer(const VectorTileLayer& layer, c // order to avoid numeric type mismatches between the layer and the // style definition. for (const Value& source_value : bucket_desc.source_value) { + // auto value_it = std::find_if(layer.values.begin(), layer.values.end(), util::relaxed_equal(source_value)); + auto value_it = std::find_if(layer.values.begin(), layer.values.end(), [&source_value](const Value& layer_value) { - return (toString(layer_value) == toString(source_value)); + bool value1 = util::relaxed_equal(layer_value)(source_value); + bool value2 = (toString(layer_value) == toString(source_value)); + if (value1 != value2) { + std::cout << layer_value << " == " << source_value << ": " << value1 << " vs " << value2 << "\n"; + } + return value2; + // return (toString(layer_value) == toString(source_value)); }); if (value_it != layer.values.end()) { values.insert((uint32_t)(value_it - layer.values.begin())); diff --git a/test/variant.cpp b/test/variant.cpp index b3f225f65..9a855d15c 100644 --- a/test/variant.cpp +++ b/test/variant.cpp @@ -20,147 +20,141 @@ TEST(Variant, toString) { TEST(Variant, RelaxedEquality) { // Compare to bool - EXPECT_TRUE(util::relaxed_equal(bool(true))(int64_t(386))); - EXPECT_TRUE(util::relaxed_equal(bool(true))(int64_t(-7042))); - EXPECT_TRUE(util::relaxed_equal(bool(false))(int64_t(0))); - EXPECT_TRUE(util::relaxed_equal(bool(true))(uint64_t(386))); - EXPECT_TRUE(util::relaxed_equal(bool(false))(uint64_t(0))); - EXPECT_TRUE(util::relaxed_equal(bool(true))(double(386))); - EXPECT_TRUE(util::relaxed_equal(bool(false))(double(0))); - EXPECT_TRUE(util::relaxed_equal(bool(true))(std::string("386"))); - EXPECT_TRUE(util::relaxed_equal(bool(false))(std::string(""))); - EXPECT_TRUE(util::relaxed_equal(bool(false))(std::string("\t"))); - EXPECT_TRUE(util::relaxed_equal(bool(false))(std::string(" "))); - EXPECT_TRUE(util::relaxed_equal(bool(false))(std::string("false"))); - EXPECT_TRUE(util::relaxed_equal(bool(false))(std::string(" false"))); - EXPECT_TRUE(util::relaxed_equal(bool(false))(std::string("False"))); - EXPECT_TRUE(util::relaxed_equal(bool(false))(std::string("null"))); - EXPECT_TRUE(util::relaxed_equal(bool(false))(std::string("nuLL"))); - EXPECT_TRUE(util::relaxed_equal(bool(false))(std::string("NULL"))); - EXPECT_TRUE(util::relaxed_equal(bool(false))(std::string(" NULL "))); - EXPECT_TRUE(util::relaxed_equal(bool(true))(bool(true))); - EXPECT_TRUE(util::relaxed_equal(bool(false))(bool(false))); + EXPECT_TRUE(util::relaxed_equal(bool(true))(int64_t(386))); + EXPECT_TRUE(util::relaxed_equal(bool(true))(int64_t(-7042))); + EXPECT_TRUE(util::relaxed_equal(bool(false))(int64_t(0))); + EXPECT_TRUE(util::relaxed_equal(bool(true))(uint64_t(386))); + EXPECT_TRUE(util::relaxed_equal(bool(false))(uint64_t(0))); + EXPECT_TRUE(util::relaxed_equal(bool(true))(double(386))); + EXPECT_TRUE(util::relaxed_equal(bool(false))(double(0))); + EXPECT_TRUE(util::relaxed_equal(bool(true))(std::string("386"))); + EXPECT_TRUE(util::relaxed_equal(bool(false))(std::string(""))); + EXPECT_TRUE(util::relaxed_equal(bool(false))(std::string("false"))); + EXPECT_TRUE(util::relaxed_equal(bool(false))(std::string("False"))); + EXPECT_TRUE(util::relaxed_equal(bool(false))(std::string("null"))); + EXPECT_TRUE(util::relaxed_equal(bool(false))(std::string("nuLL"))); + EXPECT_TRUE(util::relaxed_equal(bool(false))(std::string("NULL"))); + EXPECT_TRUE(util::relaxed_equal(bool(true))(bool(true))); + EXPECT_TRUE(util::relaxed_equal(bool(false))(bool(false))); - EXPECT_FALSE(util::relaxed_equal(bool(true))(int64_t(0))); - EXPECT_FALSE(util::relaxed_equal(bool(true))(uint64_t(0))); - EXPECT_FALSE(util::relaxed_equal(bool(true))(double(0))); - EXPECT_FALSE(util::relaxed_equal(bool(true))(std::string(""))); - EXPECT_FALSE(util::relaxed_equal(bool(true))(std::string("false"))); - EXPECT_FALSE(util::relaxed_equal(bool(true))(std::string("FALSE"))); - EXPECT_FALSE(util::relaxed_equal(bool(true))(std::string("null"))); - EXPECT_FALSE(util::relaxed_equal(bool(true))(std::string("Null"))); - EXPECT_FALSE(util::relaxed_equal(bool(false))(int64_t(-754))); - EXPECT_FALSE(util::relaxed_equal(bool(false))(uint64_t(3))); - EXPECT_FALSE(util::relaxed_equal(bool(false))(double(3.145))); - EXPECT_FALSE(util::relaxed_equal(bool(false))(std::string("test"))); - EXPECT_FALSE(util::relaxed_equal(bool(true))(bool(false))); - EXPECT_FALSE(util::relaxed_equal(bool(false))(bool(true))); + EXPECT_FALSE(util::relaxed_equal(bool(true))(int64_t(0))); + EXPECT_FALSE(util::relaxed_equal(bool(true))(uint64_t(0))); + EXPECT_FALSE(util::relaxed_equal(bool(true))(double(0))); + EXPECT_FALSE(util::relaxed_equal(bool(true))(std::string(""))); + EXPECT_FALSE(util::relaxed_equal(bool(true))(std::string("false"))); + EXPECT_FALSE(util::relaxed_equal(bool(true))(std::string("FALSE"))); + EXPECT_FALSE(util::relaxed_equal(bool(true))(std::string("null"))); + EXPECT_FALSE(util::relaxed_equal(bool(true))(std::string("Null"))); + EXPECT_FALSE(util::relaxed_equal(bool(false))(int64_t(-754))); + EXPECT_FALSE(util::relaxed_equal(bool(false))(uint64_t(3))); + EXPECT_FALSE(util::relaxed_equal(bool(false))(double(3.145))); + EXPECT_FALSE(util::relaxed_equal(bool(false))(std::string("test"))); + EXPECT_FALSE(util::relaxed_equal(bool(true))(bool(false))); + EXPECT_FALSE(util::relaxed_equal(bool(false))(bool(true))); // Compare to int64_t - EXPECT_TRUE(util::relaxed_equal(int64_t(386))(int64_t(386))); - EXPECT_TRUE(util::relaxed_equal(int64_t(-7042))(int64_t(-7042))); - EXPECT_TRUE(util::relaxed_equal(int64_t(386))(uint64_t(386))); - EXPECT_TRUE(util::relaxed_equal(int64_t(386))(double(386))); - EXPECT_TRUE(util::relaxed_equal(int64_t(386))(std::string("386"))); - EXPECT_TRUE(util::relaxed_equal(int64_t(1))(bool(true))); - EXPECT_TRUE(util::relaxed_equal(int64_t(0))(bool(false))); - EXPECT_TRUE(util::relaxed_equal(int64_t(1))(std::string("true"))); - EXPECT_TRUE(util::relaxed_equal(int64_t(0))(std::string("false"))); + EXPECT_TRUE(util::relaxed_equal(int64_t(386))(int64_t(386))); + EXPECT_TRUE(util::relaxed_equal(int64_t(-7042))(int64_t(-7042))); + EXPECT_TRUE(util::relaxed_equal(int64_t(386))(uint64_t(386))); + EXPECT_TRUE(util::relaxed_equal(int64_t(386))(double(386))); + EXPECT_TRUE(util::relaxed_equal(int64_t(386))(std::string("386"))); + EXPECT_TRUE(util::relaxed_equal(int64_t(1))(bool(true))); + EXPECT_TRUE(util::relaxed_equal(int64_t(0))(bool(false))); + EXPECT_TRUE(util::relaxed_equal(int64_t(1))(std::string("true"))); + EXPECT_TRUE(util::relaxed_equal(int64_t(0))(std::string("false"))); - EXPECT_FALSE(util::relaxed_equal(int64_t(386))(int64_t(387))); - EXPECT_FALSE(util::relaxed_equal(int64_t(-7042))(int64_t(-7043))); - EXPECT_FALSE(util::relaxed_equal(int64_t(386))(uint64_t(387))); - EXPECT_FALSE(util::relaxed_equal(int64_t(386))(double(387))); - EXPECT_FALSE(util::relaxed_equal(int64_t(386))(std::string("387"))); - EXPECT_FALSE(util::relaxed_equal(int64_t(1))(bool(false))); - EXPECT_FALSE(util::relaxed_equal(int64_t(0))(bool(true))); - EXPECT_FALSE(util::relaxed_equal(int64_t(1))(std::string("false"))); - EXPECT_FALSE(util::relaxed_equal(int64_t(0))(std::string("true"))); + EXPECT_FALSE(util::relaxed_equal(int64_t(386))(int64_t(387))); + EXPECT_FALSE(util::relaxed_equal(int64_t(-7042))(int64_t(-7043))); + EXPECT_FALSE(util::relaxed_equal(int64_t(386))(uint64_t(387))); + EXPECT_FALSE(util::relaxed_equal(int64_t(386))(double(387))); + EXPECT_FALSE(util::relaxed_equal(int64_t(386))(std::string("387"))); + EXPECT_FALSE(util::relaxed_equal(int64_t(1))(bool(false))); + EXPECT_FALSE(util::relaxed_equal(int64_t(0))(bool(true))); + EXPECT_FALSE(util::relaxed_equal(int64_t(1))(std::string("false"))); + EXPECT_FALSE(util::relaxed_equal(int64_t(0))(std::string("true"))); // Compare to uint64_t - EXPECT_TRUE(util::relaxed_equal(uint64_t(386))(int64_t(386))); - EXPECT_TRUE(util::relaxed_equal(uint64_t(386))(uint64_t(386))); - EXPECT_TRUE(util::relaxed_equal(uint64_t(0))(uint64_t(0))); - EXPECT_TRUE(util::relaxed_equal(uint64_t(386))(double(386))); - EXPECT_TRUE(util::relaxed_equal(uint64_t(386))(std::string("386"))); - EXPECT_TRUE(util::relaxed_equal(uint64_t(1))(bool(true))); - EXPECT_TRUE(util::relaxed_equal(uint64_t(0))(bool(false))); - EXPECT_TRUE(util::relaxed_equal(uint64_t(1))(std::string("true"))); - EXPECT_TRUE(util::relaxed_equal(uint64_t(0))(std::string("false"))); + EXPECT_TRUE(util::relaxed_equal(uint64_t(386))(int64_t(386))); + EXPECT_TRUE(util::relaxed_equal(uint64_t(386))(uint64_t(386))); + EXPECT_TRUE(util::relaxed_equal(uint64_t(0))(uint64_t(0))); + EXPECT_TRUE(util::relaxed_equal(uint64_t(386))(double(386))); + EXPECT_TRUE(util::relaxed_equal(uint64_t(386))(std::string("386"))); + EXPECT_TRUE(util::relaxed_equal(uint64_t(1))(bool(true))); + EXPECT_TRUE(util::relaxed_equal(uint64_t(0))(bool(false))); + EXPECT_TRUE(util::relaxed_equal(uint64_t(1))(std::string("true"))); + EXPECT_TRUE(util::relaxed_equal(uint64_t(0))(std::string("false"))); - EXPECT_FALSE(util::relaxed_equal(uint64_t(386))(int64_t(387))); - EXPECT_FALSE(util::relaxed_equal(uint64_t(386))(uint64_t(387))); - EXPECT_FALSE(util::relaxed_equal(uint64_t(0))(uint64_t(1))); - EXPECT_FALSE(util::relaxed_equal(uint64_t(386))(double(387))); - EXPECT_FALSE(util::relaxed_equal(uint64_t(386))(std::string("387"))); - EXPECT_FALSE(util::relaxed_equal(uint64_t(1))(bool(false))); - EXPECT_FALSE(util::relaxed_equal(uint64_t(0))(bool(true))); - EXPECT_FALSE(util::relaxed_equal(uint64_t(1))(std::string("false"))); - EXPECT_FALSE(util::relaxed_equal(uint64_t(0))(std::string("true"))); - EXPECT_FALSE(util::relaxed_equal(uint64_t(0))(std::string(" true"))); + EXPECT_FALSE(util::relaxed_equal(uint64_t(386))(int64_t(387))); + EXPECT_FALSE(util::relaxed_equal(uint64_t(386))(uint64_t(387))); + EXPECT_FALSE(util::relaxed_equal(uint64_t(0))(uint64_t(1))); + EXPECT_FALSE(util::relaxed_equal(uint64_t(386))(double(387))); + EXPECT_FALSE(util::relaxed_equal(uint64_t(386))(std::string("387"))); + EXPECT_FALSE(util::relaxed_equal(uint64_t(1))(bool(false))); + EXPECT_FALSE(util::relaxed_equal(uint64_t(0))(bool(true))); + EXPECT_FALSE(util::relaxed_equal(uint64_t(1))(std::string("false"))); + EXPECT_FALSE(util::relaxed_equal(uint64_t(0))(std::string("true"))); // Compare to double - EXPECT_TRUE(util::relaxed_equal(double(3.159385))(double(3.159385))); - EXPECT_TRUE(util::relaxed_equal(double(386))(int64_t(386))); - EXPECT_TRUE(util::relaxed_equal(double(386))(uint64_t(386))); - EXPECT_TRUE(util::relaxed_equal(double(0))(uint64_t(0))); - EXPECT_TRUE(util::relaxed_equal(double(386))(double(386))); - EXPECT_TRUE(util::relaxed_equal(double(386))(std::string("386"))); - EXPECT_TRUE(util::relaxed_equal(double(1))(bool(true))); - EXPECT_TRUE(util::relaxed_equal(double(0))(bool(false))); - EXPECT_TRUE(util::relaxed_equal(double(1))(std::string("true"))); - EXPECT_TRUE(util::relaxed_equal(double(1))(std::string("TRue"))); - EXPECT_TRUE(util::relaxed_equal(double(0))(std::string("false"))); - EXPECT_TRUE(util::relaxed_equal(double(0))(std::string("FALSe"))); - EXPECT_TRUE(util::relaxed_equal(double(0))(std::string("null"))); - EXPECT_TRUE(util::relaxed_equal(double(0))(std::string("Null"))); - EXPECT_TRUE(util::relaxed_equal(double(0))(std::string(" Null "))); + EXPECT_TRUE(util::relaxed_equal(double(3.159385))(double(3.159385))); + EXPECT_TRUE(util::relaxed_equal(double(386))(int64_t(386))); + EXPECT_TRUE(util::relaxed_equal(double(386))(uint64_t(386))); + EXPECT_TRUE(util::relaxed_equal(double(0))(uint64_t(0))); + EXPECT_TRUE(util::relaxed_equal(double(386))(double(386))); + EXPECT_TRUE(util::relaxed_equal(double(386))(std::string("386"))); + EXPECT_TRUE(util::relaxed_equal(double(1))(bool(true))); + EXPECT_TRUE(util::relaxed_equal(double(0))(bool(false))); + EXPECT_TRUE(util::relaxed_equal(double(1))(std::string("true"))); + EXPECT_TRUE(util::relaxed_equal(double(1))(std::string("TRue"))); + EXPECT_TRUE(util::relaxed_equal(double(0))(std::string("false"))); + EXPECT_TRUE(util::relaxed_equal(double(0))(std::string("FALSe"))); + EXPECT_TRUE(util::relaxed_equal(double(0))(std::string("null"))); + EXPECT_TRUE(util::relaxed_equal(double(0))(std::string("Null"))); - EXPECT_FALSE(util::relaxed_equal(double(3.159385))(double(3.159383))); - EXPECT_FALSE(util::relaxed_equal(double(386))(int64_t(387))); - EXPECT_FALSE(util::relaxed_equal(double(386))(uint64_t(387))); - EXPECT_FALSE(util::relaxed_equal(double(0))(uint64_t(1))); - EXPECT_FALSE(util::relaxed_equal(double(386))(double(387))); - EXPECT_FALSE(util::relaxed_equal(double(386))(std::string("387"))); - EXPECT_FALSE(util::relaxed_equal(double(1))(bool(false))); - EXPECT_FALSE(util::relaxed_equal(double(0))(bool(true))); - EXPECT_FALSE(util::relaxed_equal(double(1))(std::string("false"))); - EXPECT_FALSE(util::relaxed_equal(double(1))(std::string("False"))); - EXPECT_FALSE(util::relaxed_equal(double(1))(std::string("null"))); - EXPECT_FALSE(util::relaxed_equal(double(1))(std::string("NULL"))); - EXPECT_FALSE(util::relaxed_equal(double(0))(std::string("true"))); - EXPECT_FALSE(util::relaxed_equal(double(0))(std::string("TRUE"))); + EXPECT_FALSE(util::relaxed_equal(double(3.159385))(double(3.159383))); + EXPECT_FALSE(util::relaxed_equal(double(386))(int64_t(387))); + EXPECT_FALSE(util::relaxed_equal(double(386))(uint64_t(387))); + EXPECT_FALSE(util::relaxed_equal(double(0))(uint64_t(1))); + EXPECT_FALSE(util::relaxed_equal(double(386))(double(387))); + EXPECT_FALSE(util::relaxed_equal(double(386))(std::string("387"))); + EXPECT_FALSE(util::relaxed_equal(double(1))(bool(false))); + EXPECT_FALSE(util::relaxed_equal(double(0))(bool(true))); + EXPECT_FALSE(util::relaxed_equal(double(1))(std::string("false"))); + EXPECT_FALSE(util::relaxed_equal(double(1))(std::string("False"))); + EXPECT_FALSE(util::relaxed_equal(double(1))(std::string("null"))); + EXPECT_FALSE(util::relaxed_equal(double(1))(std::string("NULL"))); + EXPECT_FALSE(util::relaxed_equal(double(0))(std::string("true"))); + EXPECT_FALSE(util::relaxed_equal(double(0))(std::string("TRUE"))); // Compare to string - EXPECT_TRUE(util::relaxed_equal(std::string("lord"))(std::string("lord"))); - EXPECT_TRUE(util::relaxed_equal(std::string("386"))(int64_t(386))); - EXPECT_TRUE(util::relaxed_equal(std::string("-386"))(int64_t(-386))); - EXPECT_TRUE(util::relaxed_equal(std::string("386"))(uint64_t(386))); - EXPECT_TRUE(util::relaxed_equal(std::string("386.36"))(double(386.36))); - EXPECT_TRUE(util::relaxed_equal(std::string("true"))(bool(true))); - EXPECT_TRUE(util::relaxed_equal(std::string("True"))(bool(true))); - EXPECT_TRUE(util::relaxed_equal(std::string("some string"))(bool(true))); - EXPECT_TRUE(util::relaxed_equal(std::string("false"))(bool(false))); - EXPECT_TRUE(util::relaxed_equal(std::string("fAlse"))(bool(false))); - EXPECT_TRUE(util::relaxed_equal(std::string("null"))(bool(false))); - EXPECT_TRUE(util::relaxed_equal(std::string("NULl"))(bool(false))); - EXPECT_TRUE(util::relaxed_equal(std::string(""))(bool(false))); + EXPECT_TRUE(util::relaxed_equal(std::string("lord"))(std::string("lord"))); + EXPECT_TRUE(util::relaxed_equal(std::string("386"))(int64_t(386))); + EXPECT_TRUE(util::relaxed_equal(std::string("-386"))(int64_t(-386))); + EXPECT_TRUE(util::relaxed_equal(std::string("386"))(uint64_t(386))); + EXPECT_TRUE(util::relaxed_equal(std::string("386.36"))(double(386.36))); + EXPECT_TRUE(util::relaxed_equal(std::string("true"))(bool(true))); + EXPECT_TRUE(util::relaxed_equal(std::string("True"))(bool(true))); + EXPECT_TRUE(util::relaxed_equal(std::string("some string"))(bool(true))); + EXPECT_TRUE(util::relaxed_equal(std::string("false"))(bool(false))); + EXPECT_TRUE(util::relaxed_equal(std::string("fAlse"))(bool(false))); + EXPECT_TRUE(util::relaxed_equal(std::string("null"))(bool(false))); + EXPECT_TRUE(util::relaxed_equal(std::string("NULl"))(bool(false))); + EXPECT_TRUE(util::relaxed_equal(std::string(""))(bool(false))); - EXPECT_FALSE(util::relaxed_equal(std::string("lord"))(std::string("baron"))); - EXPECT_FALSE(util::relaxed_equal(std::string("386"))(int64_t(387))); - EXPECT_FALSE(util::relaxed_equal(std::string("-386"))(int64_t(-387))); - EXPECT_FALSE(util::relaxed_equal(std::string("386"))(uint64_t(387))); - EXPECT_FALSE(util::relaxed_equal(std::string("386.36"))(double(386.37))); - EXPECT_FALSE(util::relaxed_equal(std::string("true"))(bool(false))); - EXPECT_FALSE(util::relaxed_equal(std::string("TRUE"))(bool(false))); - EXPECT_FALSE(util::relaxed_equal(std::string("some string"))(bool(false))); - EXPECT_FALSE(util::relaxed_equal(std::string("false"))(bool(true))); - EXPECT_FALSE(util::relaxed_equal(std::string("FALSE"))(bool(true))); - EXPECT_FALSE(util::relaxed_equal(std::string("null"))(bool(true))); - EXPECT_FALSE(util::relaxed_equal(std::string("NULl"))(bool(true))); - EXPECT_FALSE(util::relaxed_equal(std::string(""))(bool(true))); + EXPECT_FALSE(util::relaxed_equal(std::string("lord"))(std::string("baron"))); + EXPECT_FALSE(util::relaxed_equal(std::string("386"))(int64_t(387))); + EXPECT_FALSE(util::relaxed_equal(std::string("-386"))(int64_t(-387))); + EXPECT_FALSE(util::relaxed_equal(std::string("386"))(uint64_t(387))); + EXPECT_FALSE(util::relaxed_equal(std::string("386.36"))(double(386.37))); + EXPECT_FALSE(util::relaxed_equal(std::string("true"))(bool(false))); + EXPECT_FALSE(util::relaxed_equal(std::string("TRUE"))(bool(false))); + EXPECT_FALSE(util::relaxed_equal(std::string("some string"))(bool(false))); + EXPECT_FALSE(util::relaxed_equal(std::string("false"))(bool(true))); + EXPECT_FALSE(util::relaxed_equal(std::string("FALSE"))(bool(true))); + EXPECT_FALSE(util::relaxed_equal(std::string("null"))(bool(true))); + EXPECT_FALSE(util::relaxed_equal(std::string("NULl"))(bool(true))); + EXPECT_FALSE(util::relaxed_equal(std::string(""))(bool(true))); }