From 38f8a51a8f049a98936f0f3eeabdb1f6080e5f37 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= <theo.delrieu@tanker.io>
Date: Thu, 16 Aug 2018 10:52:33 +0200
Subject: [PATCH] use abstract sax class in parser tests

---
 include/nlohmann/json.hpp        |  1 +
 single_include/nlohmann/json.hpp |  1 +
 test/src/unit-class_parser.cpp   | 26 +++++++++++++-------------
 3 files changed, 15 insertions(+), 13 deletions(-)

diff --git a/include/nlohmann/json.hpp b/include/nlohmann/json.hpp
index 8c4cb159..54638d72 100644
--- a/include/nlohmann/json.hpp
+++ b/include/nlohmann/json.hpp
@@ -212,6 +212,7 @@ class basic_json
     using initializer_list_t = std::initializer_list<detail::json_ref<basic_json>>;
 
     using input_format_t = detail::input_format_t;
+    using json_sax_t = json_sax<basic_json>;
 
     ////////////////
     // exceptions //
diff --git a/single_include/nlohmann/json.hpp b/single_include/nlohmann/json.hpp
index 6e6ef85d..cbd1a34d 100644
--- a/single_include/nlohmann/json.hpp
+++ b/single_include/nlohmann/json.hpp
@@ -11078,6 +11078,7 @@ class basic_json
     using initializer_list_t = std::initializer_list<detail::json_ref<basic_json>>;
 
     using input_format_t = detail::input_format_t;
+    using json_sax_t = json_sax<basic_json>;
 
     ////////////////
     // exceptions //
diff --git a/test/src/unit-class_parser.cpp b/test/src/unit-class_parser.cpp
index e08099da..74abd472 100644
--- a/test/src/unit-class_parser.cpp
+++ b/test/src/unit-class_parser.cpp
@@ -129,68 +129,68 @@ class SaxEventLogger
     bool errored = false;
 };
 
-class SaxCountdown
+class SaxCountdown : public nlohmann::json::json_sax_t
 {
   public:
     explicit SaxCountdown(const int count) : events_left(count)
     {}
 
-    bool null()
+    bool null() override
     {
         return events_left-- > 0;
     }
 
-    bool boolean(bool)
+    bool boolean(bool) override
     {
         return events_left-- > 0;
     }
 
-    bool number_integer(json::number_integer_t)
+    bool number_integer(json::number_integer_t) override
     {
         return events_left-- > 0;
     }
 
-    bool number_unsigned(json::number_unsigned_t)
+    bool number_unsigned(json::number_unsigned_t) override
     {
         return events_left-- > 0;
     }
 
-    bool number_float(json::number_float_t, const std::string&)
+    bool number_float(json::number_float_t, const std::string&) override
     {
         return events_left-- > 0;
     }
 
-    bool string(std::string&)
+    bool string(std::string&) override
     {
         return events_left-- > 0;
     }
 
-    bool start_object(std::size_t)
+    bool start_object(std::size_t) override
     {
         return events_left-- > 0;
     }
 
-    bool key(std::string&)
+    bool key(std::string&) override
     {
         return events_left-- > 0;
     }
 
-    bool end_object()
+    bool end_object() override
     {
         return events_left-- > 0;
     }
 
-    bool start_array(std::size_t)
+    bool start_array(std::size_t) override
     {
         return events_left-- > 0;
     }
 
-    bool end_array()
+    bool end_array() override
     {
         return events_left-- > 0;
     }
 
-    bool parse_error(std::size_t, const std::string&, const json::exception&)
+    bool parse_error(std::size_t, const std::string&, const json::exception&) override
     {
         return false;
     }