TODO FOR FIRST RELEASE

  • debugger present detection (and break when a CHECK/REQUIRE macro fails)

  • a message macro

  • look at catch command line options (also lest)

  • ability to not run tests at all

  • signal handling for unix: http://www.cplusplus.com/reference/csignal/signal/

  • error reporting

  • colors in output

  • MSVC/IDE integration

  • make a compact reporter (for within ide-s - just the file and line number)

  • streaming reporters???

  • xml reporter (jUnit compatible, etc.)

  • stringify overload example outside of namespaces

  • think about the expression decomposition static asserts

  • handle FILE for the doctest testsuite - add an ifdef-ed mode where it is not printed in the output

  • remove dependency (strcpy and strtok)

  • pool allocator for String class

  • think about the exit code (maybe clamp between 0/127) (catch also returns the number of failed tests) - http://stackoverflow.com/questions/36727192

  • make it possible for tests through valgrind to have an exit code different than 0 - http://stackoverflow.com/questions/36729692

  • example of stringify-ing common stl stuff like containers

  • test coverage

  • fixing warnings gcc/clang/msvc (and add more stuff in the disabled example)

  • test for warnings with -std=c++03/11/14/1z

  • benchmark

  • documentation

  • pledgie campaign - more info

Spreading the word after 1.0.0 is released

  • bringing the unittest functionality of D into C++

  • reddit cpp/programming/gamedev/other

  • boost mailing list

  • comp.lang.c++

  • comp.std.c++

  • hackernews

  • hora ot cg

  • bg podcast? like bobi?

  • gamedev/programming/c++ forums

  • https://github.com/fffaraz/awesome-cpp

  • add doctest to lists of c++ testing frameworks all around the web

  • research how to market a new library

https://www.facebook.com/groups/IndieGameDevs/ https://github.com/nothings/stb/blob/master/docs/other_libs.md

FUTURE

  • [core] timing reports of tests, duration restrictions, kill of longer than, etc...
  • [core] test execution in separate processes - UNIX only with fork()
  • [CI] test with VC6 (and maybe get it somehow on a zip install for appveyor)
  • [CI] try building with VS 2008/2010/2012/2013 also on appveyor - http://www.appveyor.com/docs/installed-software
  • [CI] mingw-w64 on appveyor
  • [CI] static analysis: msvc, clang, cppcheck
  • [easy] hierarchical test suites? using a stack for the pushed states
  • [easy] sorting the test order (by file, by test suite, or both, ASC/DESC...)
  • [easy] error checking of parameters (if the range is valid (first <= last), etc)
  • [unsure] ability to re-run only newly compiled tests - based on timestamps of the FILE in which they are - and stored in some file
  • [unsure] floating point comparison support
  • [unsure] BDD based on the subtests - like Catch
  • [unsure] matchers?
  • [unsure] put internals in anonymous namespace (even if already in detail) - even though clang-format will make everything more indented
  • [unsure] silencing warnings - take into account when a compiler (which version) accuires a pragma/attribute/warning (for gcc use -Wno-unknown-warning)
  • [unsure] ability to transfer/copy registered functions from one dll to another so they are put in one set and duplicates are filtered
  • [unsure] wchar stuff in stringify and whatever - see <wchar.h>
  • [unsure] tagging? also see this: https://github.com/philsquared/Catch/blob/master/docs/test-cases-and-sections.md#special-tags
  • [unsure] pointer stringification (typename tostring? and address)
  • [unsure] think about adding support for std::exception and others
  • [unsure] think about parameterising the output alignment to 80 or some other column limit

DOCUMENTATION

"the latest and greatest in unit testing in c++"

180 builds linux/osx (+12 if clang 3.4/3.5/3.6 get the 32 bit sanitizer stuff) 4 builds windows

  • mimic catch front page - tutorial link, what is different link, documentation link.
  • profile doctest vs Catch (compile/startup)
  • defense of macros in testing frameworks: http://accu.org/var/uploads/journals/Overload125.pdf
  • whats the library's main purpose
  • warning free even with the most aggressive options for all 3 major compilers
  • mocking is not included because it is orthogonal to testing and a different third party library may be used for that (google mock) https://github.com/tpounds/mockitopp
  • check what features catch/lest have to offer (and what they say they lack)
  • property based testing - what it is and how to use it with doctest
  • document how to use spaces for filters in the comma separated list (using "")
  • tests are ran serially
  • document all the options
  • initially was planning on a C version of the library but figured that there is no reason to choose C over C++ anywhere
  • tests in headers... might end up in different test suites - and only 1 of them will get registered? or might have ifdef-ed parts that get compiled differently based on how/where the header is included...... so not a good practice to write tests in header files
  • how subtests work - http://pastebin.com/rwghFzK4

list of c++ testing libs https://github.com/unittest-cpp/unittest-cpp catch lest etc.