related to #14 - added a header with a specialized macro for equality

removed WARN assertions from the assertion count
diff --git a/doc/markdown/roadmap.md b/doc/markdown/roadmap.md
index 2a7f2b1..0ccc420 100644
--- a/doc/markdown/roadmap.md
+++ b/doc/markdown/roadmap.md
@@ -6,10 +6,8 @@
 
 This is a list of planned features for future releases (maybe in the given order).
 
-- ability to have no output when everything succeeds
-- switch to using ```std::vector``` and ```std::set``` and remove custom implementations
 - the set holding all registered tests should use a specialized allocator to minimize program startup time
-- fix the test coverage reports - currently each example replaces the coverage from the last example
+- ability to have no output when everything succeeds
 - test with gcc 6 and use it in the CI builds
 - a mechanism for translating exceptions - users should be able to teach the framework about their types (look at Catch for this)
 - support for ```std::exception``` and derivatives (mainly for calling the ```.what()``` method when caught unexpectedly)
@@ -67,6 +65,7 @@
 - ability to re-run only newly compiled tests based on time stamps using ```__DATE__``` and ```__TIME__``` - stored in some file
 - submit to [boost](http://www.boost.org/development/requirements.html)?
 - fix all the hacks in the cmake scripts for OSX (they are mainly for gcc 4.4)
+- the [range_based_execution](../../examples/range_based_execution/) example sometimes leaves one subprocess running and hangs ctest - should fix probably the python script
 
 ---------------
 
diff --git a/doctest/doctest.h b/doctest/doctest.h
index 399143a..54f38eb 100644
--- a/doctest/doctest.h
+++ b/doctest/doctest.h
@@ -2231,7 +2231,8 @@
             , m_failed(false) {}
 
     bool ResultBuilder::log() {
-        DOCTEST_GCS().numAssertionsForCurrentTestcase++;
+        if(strncmp(m_assert_name, "WARN", 4) != 0)
+            DOCTEST_GCS().numAssertionsForCurrentTestcase++;
 
         if(m_assert_type == assertType::normal) {
             m_failed = m_res;
diff --git a/doctest/parts/doctest_ext.h b/doctest/parts/doctest_ext.h
deleted file mode 100644
index 2301616..0000000
--- a/doctest/parts/doctest_ext.h
+++ /dev/null
@@ -1,70 +0,0 @@
-//
-// doctest.h - the lightest feature-rich C++ single-header testing framework for unit tests and TDD
-//
-// Copyright (c) 2016 Viktor Kirilov
-//
-// Distributed under the MIT Software License
-// See accompanying file LICENSE.txt or copy at
-// https://opensource.org/licenses/MIT
-//
-// The documentation can be found at the library's page:
-// https://github.com/onqtam/doctest/blob/master/doc/markdown/readme.md
-//
-
-//#if defined(__clang__)
-//#pragma clang diagnostic push
-//#pragma clang diagnostic ignored "-Wpadded"
-//#pragma clang diagnostic ignored "-Wglobal-constructors"
-//#pragma clang diagnostic ignored "-Wexit-time-destructors"
-//#pragma clang diagnostic ignored "-Wmissing-prototypes"
-//#pragma clang diagnostic ignored "-Wsign-conversion"
-//#pragma clang diagnostic ignored "-Wshorten-64-to-32"
-//#pragma clang diagnostic ignored "-Wmissing-variable-declarations"
-//#pragma clang diagnostic ignored "-Wcovered-switch-default"
-//#pragma clang diagnostic ignored "-Wmissing-noreturn"
-//#endif // __clang__
-//
-//#if defined(__GNUC__) && !defined(__clang__)
-//#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 6)
-//#pragma GCC diagnostic push
-//#endif // > gcc 4.6
-//#pragma GCC diagnostic ignored "-Wconversion"
-//#pragma GCC diagnostic ignored "-Weffc++"
-//#pragma GCC diagnostic ignored "-Wsign-conversion"
-//#pragma GCC diagnostic ignored "-Wstrict-overflow"
-//#pragma GCC diagnostic ignored "-Wmissing-declarations"
-//#pragma GCC diagnostic ignored "-Winline"
-//#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 6)
-//#pragma GCC diagnostic ignored "-Wzero-as-null-pointer-constant"
-//#endif // > gcc 4.6
-//#endif // __GNUC__
-//
-//#ifdef _MSC_VER
-//#pragma warning(push)
-//#pragma warning(disable : 4996) // The compiler encountered a deprecated declaration
-//#pragma warning(disable : 4267) // 'var' : conversion from 'size_t' to 'type', possible loss of data
-//#pragma warning(disable : 4706) // assignment within conditional expression
-//#pragma warning(disable : 4512) // 'class' : assignment operator could not be generated
-//#pragma warning(disable : 4127) // conditional expression is constant
-//#endif                          // _MSC_VER
-
-#ifndef DOCTEST_EXT_INCLUDED
-#define DOCTEST_EXT_INCLUDED
-
-
-
-#endif // DOCTEST_EXT_INCLUDED
-
-//#if defined(__clang__)
-//#pragma clang diagnostic pop
-//#endif // __clang__
-//
-//#if defined(__GNUC__) && !defined(__clang__)
-//#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 6)
-//#pragma GCC diagnostic pop
-//#endif // > gcc 4.6
-//#endif // __GNUC__
-//
-//#ifdef _MSC_VER
-//#pragma warning(pop)
-//#endif // _MSC_VER
diff --git a/doctest/parts/doctest_fast.h b/doctest/parts/doctest_fast.h
new file mode 100644
index 0000000..fca2514
--- /dev/null
+++ b/doctest/parts/doctest_fast.h
@@ -0,0 +1,58 @@
+#ifndef DOCTEST_EXT_INCLUDED
+#define DOCTEST_EXT_INCLUDED
+
+namespace doctest
+{
+namespace detail
+{
+    namespace fastAssertAction
+    {
+        enum fastAssertAction
+        {
+            nothing     = 0,
+            dbgbreak    = 1,
+            shouldthrow = 2
+        };
+    } // namespace fastAssertAction
+
+    //template <typename L>
+    //inline void evaluate_result_direct(const char* file, int line, const char* exp, const L& lhs) {}
+
+    template <typename L, typename R>
+    int fast_assert(const char* assert_name, const char* file, int line, const char* expr,
+                    const L& lhs, R rhs) {
+        ResultBuilder _DOCTEST_RB(assert_name, doctest::detail::assertType::normal, file, line,
+                                  expr);
+        try {
+            _DOCTEST_RB.m_res.m_passed        = lhs == rhs;
+            _DOCTEST_RB.m_res.m_decomposition = stringifyBinaryExpr(lhs, "==", rhs);
+        } catch(...) { _DOCTEST_RB.m_threw = true; }
+
+        int res = 0;
+
+        if(_DOCTEST_RB.log())
+            res |= fastAssertAction::dbgbreak;
+
+        if(_DOCTEST_RB.m_failed && checkIfShouldThrow(assert_name))
+            res |= fastAssertAction::shouldthrow;
+
+        return res;
+    }
+} // namespace detail
+} // namespace doctest
+
+#define DOCTEST_FAST_ASSERTION(assert_name, lhs, rhs)                                              \
+    do {                                                                                           \
+        int res = doctest::detail::fast_assert(assert_name, __FILE__, __LINE__, #lhs " == " #rhs,  \
+                                               lhs, rhs);                                          \
+        if(res & doctest::detail::fastAssertAction::dbgbreak)                                      \
+            DOCTEST_BREAK_INTO_DEBUGGER();                                                         \
+        if(res & doctest::detail::fastAssertAction::shouldthrow)                                   \
+            doctest::detail::throwException();                                                     \
+    } while(doctest::detail::always_false())
+
+#define WARN_EQ(lhs, rhs) DOCTEST_FAST_ASSERTION("WARN_EQ", lhs, rhs)
+#define CHECK_EQ(lhs, rhs) DOCTEST_FAST_ASSERTION("CHECK_EQ", lhs, rhs)
+#define REQUIRE_EQ(lhs, rhs) DOCTEST_FAST_ASSERTION("REQUIRE_EQ", lhs, rhs)
+
+#endif // DOCTEST_EXT_INCLUDED
diff --git a/doctest/parts/doctest_impl.h b/doctest/parts/doctest_impl.h
index e9ad626..10a0933 100644
--- a/doctest/parts/doctest_impl.h
+++ b/doctest/parts/doctest_impl.h
@@ -1205,7 +1205,8 @@
             , m_failed(false) {}
 
     bool ResultBuilder::log() {
-        DOCTEST_GCS().numAssertionsForCurrentTestcase++;
+        if(strncmp(m_assert_name, "WARN", 4) != 0)
+            DOCTEST_GCS().numAssertionsForCurrentTestcase++;
 
         if(m_assert_type == assertType::normal) {
             m_failed = m_res;
diff --git a/examples/separate_headers/test.cpp b/examples/separate_headers/test.cpp
index 41dc44a..aa271fa 100644
--- a/examples/separate_headers/test.cpp
+++ b/examples/separate_headers/test.cpp
@@ -1,5 +1,10 @@
 #include "parts/doctest_fwd.h"
+#include "parts/doctest_fast.h"
 
 TEST_CASE("captain obvious") {
-    CHECK(true == false);
+    //CHECK(true == false);
+
+    WARN_EQ(false, true);
+    CHECK_EQ(false, true);
+    REQUIRE_EQ(false, true);
 }
diff --git a/examples/separate_headers/test_output/separate_headers.txt b/examples/separate_headers/test_output/separate_headers.txt
index 4db5962..de746ae 100644
--- a/examples/separate_headers/test_output/separate_headers.txt
+++ b/examples/separate_headers/test_output/separate_headers.txt
@@ -1,14 +1,24 @@
 [doctest] doctest version is "1.0.0"
 [doctest] run with "--help" for options
 ===============================================================================
-test.cpp(3)
+test.cpp(4)
 captain obvious
 
-test.cpp(4) FAILED! 
-  CHECK( true == false )
+test.cpp(7) FAILED! 
+  WARN_EQ( false == true )
 with expansion:
-  CHECK( true == false )
+  WARN_EQ( false == true )
+
+test.cpp(8) FAILED! 
+  CHECK_EQ( false == true )
+with expansion:
+  CHECK_EQ( false == true )
+
+test.cpp(9) FAILED! 
+  REQUIRE_EQ( false == true )
+with expansion:
+  REQUIRE_EQ( false == true )
 
 ===============================================================================
 [doctest] test cases:    1 |    0 passed |    1 failed |    0 skipped
-[doctest] assertions:    1 |    0 passed |    1 failed |
+[doctest] assertions:    2 |    0 passed |    2 failed |
diff --git a/scripts/random_dev_notes.md b/scripts/random_dev_notes.md
index 48fe1e2..8772384 100644
--- a/scripts/random_dev_notes.md
+++ b/scripts/random_dev_notes.md
@@ -1,15 +1,19 @@
+- switch to using ```std::vector``` and ```std::set``` and remove custom implementations
 
-how to deal with pull requests for the main branch instead of the dev branch
-- http://stackoverflow.com/questions/9135913/merge-pull-request-to-a-different-branch-than-default-in-github
-- git fetch origin pull/ID/head:BRANCHNAME
+- tests in a static library without the implementation there - problematic
 
-
+- signed/unsigned comparison trouble in assertions
 
 - think about the expression decomposition static asserts
-- the static assert should use the c++11 feature if possible
+    - the static assert should use the c++11 feature if possible
 
-- write a test in a header in one binary with multiple cpp files
+- examples
+    - removing everything with -dt- from the command line
+    - using the fast assertions
+    - a test in a header in one binary with multiple cpp files
+
 - coverage
+
 - better docs
     - updated compile time benchmarks (and include linux!)
     - list the subcases as a major selling point on the main page - after the expression decomposition macro stuff
@@ -17,3 +21,19 @@
     - FAQ - how is it different from Catch (or what is lacking)
     - faq - why c++
     - post the traffic screenshot in the FAQ - "how epic was the initial release"
+
+
+
+
+
+
+
+
+
+
+
+
+
+how to deal with pull requests for the main branch instead of the dev branch
+- http://stackoverflow.com/questions/9135913/merge-pull-request-to-a-different-branch-than-default-in-github
+- git fetch origin pull/ID/head:BRANCHNAME