summaryrefslogtreecommitdiff
path: root/vendor/CppQuickCheck-2018-03-28/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/CppQuickCheck-2018-03-28/README.md')
-rw-r--r--vendor/CppQuickCheck-2018-03-28/README.md74
1 files changed, 74 insertions, 0 deletions
diff --git a/vendor/CppQuickCheck-2018-03-28/README.md b/vendor/CppQuickCheck-2018-03-28/README.md
new file mode 100644
index 00000000..d16f89e0
--- /dev/null
+++ b/vendor/CppQuickCheck-2018-03-28/README.md
@@ -0,0 +1,74 @@
+***CppQuickCheck***
+
+## ABOUT
+
+CppQuickCheck is a library for automated testing of C++ code. You provide a
+specification how your code is supposed to behave through *properties* and
+CppQuickCheck will generate a large number of random test cases that attempt to
+prove or disprove the properties. The specifications are written in pure C++
+using the functionality of the CppQuickCheck library.
+
+## DOCUMENTATION
+
+You can find examples in 'examples/src'.
+
+## BACKGROUND
+
+CppQuickCheck is inspired and based on the
+[QuickCheck](http://code.haskell.org/QuickCheck/) library for
+Haskell. CppQuickCheck differs in some aspects of the implementation and
+interface (as well as being written in C++ instead of Haskell), but tries to
+maintain similar functionality to the QuickCheck library.
+
+A similar library for C++ exists called
+[QuickCheck++](http://software.legiasoft.com/quickcheck/). QuickCheck++ does
+not support several important things that the Haskell QuickCheck supports
+including:
+
+ * *Generator combinators* - In QuickCheck++ custom generators for user
+ defined types are written by hand, with no provided random number
+ generation facility. One example of a way that Haskell's QuickCheck (and
+ CppQuickCheck) improve on this is the function `oneof` whick takes a list
+ of generators and creates a new generator that when called, selects a
+ random generator from the list and uses that to generate the input. In
+ QuickCheck++ this has to be written by hand using some external random
+ number generating library.
+ * *Shrinking the input for failed test cases* - When a randomly generated
+ test case fails, Haskell's QuickCheck (and CppQuickCheck, but not
+ QuickCheck++) will try to shrink the input to provide a minimal failing
+ case. This makes debugging the failure easier because instead of working
+ with a potentially large input case, much of the input can be removed to
+ reveal the structure of the failure.
+
+For these reasons, CppQuickCheck tries to maintain all the functionality of the
+Haskell QuickCheck, and so taking a different implementation approach than
+QuickCheck++.
+
+## UNIT TESTS
+
+Unit tests exists in the directory 'test'.
+
+```
+$ mkdir build
+$ cd build
+$ cmake ..
+$ make check
+```
+
+To get a more detailed output, rerun it with
+
+```
+$ ./all-catch-tests
+```
+
+## CONTRIBUTING
+
+Please direct your pull requests to https://github.com/philipp-classen/CppQuickCheck,
+which is the repository where the active development takes place.
+
+Currently, CppQuickCheck uses C++11 but not C++14. Travis will compile
+the library and run the tests with GCC 4.9 and Clang 3.8.
+
+## LICENSE
+
+CppQuickCheck is distributed under a BSD license (see LICENSE).