From f574d7e084519f06958587959b79ee592d37efa3 Mon Sep 17 00:00:00 2001
From: Vitaliy <agri@akamo.info>
Date: Wed, 13 Jun 2018 19:47:29 +0300
Subject: [PATCH] simplify templates for operators, add more checks

---
 test/src/unit-alt-string.cpp | 29 +++++++++++------------------
 1 file changed, 11 insertions(+), 18 deletions(-)

diff --git a/test/src/unit-alt-string.cpp b/test/src/unit-alt-string.cpp
index 4371d3ff..c5e89111 100644
--- a/test/src/unit-alt-string.cpp
+++ b/test/src/unit-alt-string.cpp
@@ -66,12 +66,7 @@ class alt_string
     }
 
     template <typename op_type>
-    typename std::enable_if< // disable for alt_string
-                !std::is_same<  alt_string,
-                                typename std::remove_reference<op_type>::type
-                             >::value,
-                bool>::type
-    operator==(op_type&& op) const
+    bool operator==(const op_type& op) const
     {
         return str_impl == op;
     }
@@ -82,12 +77,7 @@ class alt_string
     }
 
     template <typename op_type>
-    typename std::enable_if< // disable for alt_string
-                !std::is_same<  alt_string,
-                                typename std::remove_reference<op_type>::type
-                             >::value,
-                bool>::type
-    operator!=(op_type&& op) const
+    bool operator!=(const op_type& op) const
     {
         return str_impl != op;
     }
@@ -112,12 +102,7 @@ class alt_string
     }
 
     template <typename op_type>
-    typename std::enable_if< // disable for alt_string
-                !std::is_same<  alt_string,
-                                typename std::remove_reference<op_type>::type
-                             >::value,
-                bool>::type
-    operator<(op_type&& op) const
+    bool operator<(const op_type& op) const
     {
         return str_impl < op;
     }
@@ -255,18 +240,26 @@ TEST_CASE("alternative string type")
 
         CHECK("I'm Batman" == doc["Who are you?"]);
         CHECK(doc["Who are you?"]  == "I'm Batman");
+        CHECK_FALSE("I'm Batman" != doc["Who are you?"]);
+        CHECK_FALSE(doc["Who are you?"]  != "I'm Batman");
 
         CHECK("I'm Bruce Wayne" != doc["Who are you?"]);
         CHECK(doc["Who are you?"]  != "I'm Bruce Wayne");
+        CHECK_FALSE("I'm Bruce Wayne" == doc["Who are you?"]);
+        CHECK_FALSE(doc["Who are you?"]  == "I'm Bruce Wayne");
 
         {
             const alt_json& const_doc = doc;
 
             CHECK("I'm Batman" == const_doc["Who are you?"]);
             CHECK(const_doc["Who are you?"] == "I'm Batman");
+            CHECK_FALSE("I'm Batman" != const_doc["Who are you?"]);
+            CHECK_FALSE(const_doc["Who are you?"] != "I'm Batman");
 
             CHECK("I'm Bruce Wayne" != const_doc["Who are you?"]);
             CHECK(const_doc["Who are you?"] != "I'm Bruce Wayne");
+            CHECK_FALSE("I'm Bruce Wayne" == const_doc["Who are you?"]);
+            CHECK_FALSE(const_doc["Who are you?"] == "I'm Bruce Wayne");
         }
     }
 }