aboutsummaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
authorGavin Andresen <gavinandresen@gmail.com>2011-06-27 14:05:02 -0400
committerGavin Andresen <gavinandresen@gmail.com>2011-06-27 14:12:48 -0400
commit8baf865c94653e21d4f6f43bbb5c712b16aba0e4 (patch)
tree406fea14ada1518e4d4122d4785deb7165f0e290 /src/test
parentc774b1697690c3f94ccd79c5de660b6050ac6409 (diff)
Boost unit-testing framework.
make -f makefile.{unix,osx,mingw} test_bitcoin to compile dumb, do-almost-nothing placeholder unit tests.
Diffstat (limited to 'src/test')
-rw-r--r--src/test/README21
-rw-r--r--src/test/test_bitcoin.cpp6
-rw-r--r--src/test/uint160_tests.cpp16
-rw-r--r--src/test/uint256_tests.cpp16
4 files changed, 59 insertions, 0 deletions
diff --git a/src/test/README b/src/test/README
new file mode 100644
index 0000000000..77f7faa815
--- /dev/null
+++ b/src/test/README
@@ -0,0 +1,21 @@
+The sources in this directory are unit test cases. Boost includes a
+unit testing framework, and since bitcoin already uses boost, it makes
+sense to simply use this framework rather than require developers to
+configure some other framework (we want as few impediments to creating
+unit tests as possible).
+
+The build system is setup to compile an executable called "test_bitcoin"
+that runs all of the unit tests. The main source file is called
+test_bitcoin.cpp, which simply includes other files that contain the
+actual unit tests (outside of a couple required preprocessor
+directives). The pattern is to create one test file for each class or
+source file for which you want to create unit tests. The file naming
+convention is "<source_filename>_tests.cpp" and such files should wrap
+their tests in a test suite called "<source_filename>_tests". For an
+examples of this pattern, examine uint160_tests.cpp and
+uint256_tests.cpp.
+
+For further reading, I found the following website to be helpful in
+explaining how the boost unit test framework works:
+
+http://www.alittlemadness.com/2009/03/31/c-unit-testing-with-boosttest/
diff --git a/src/test/test_bitcoin.cpp b/src/test/test_bitcoin.cpp
new file mode 100644
index 0000000000..3b7d2d2f2c
--- /dev/null
+++ b/src/test/test_bitcoin.cpp
@@ -0,0 +1,6 @@
+#define BOOST_TEST_MODULE uint160
+#include <boost/test/unit_test.hpp>
+
+#include "uint160_tests.cpp"
+#include "uint256_tests.cpp"
+
diff --git a/src/test/uint160_tests.cpp b/src/test/uint160_tests.cpp
new file mode 100644
index 0000000000..66ffd285b8
--- /dev/null
+++ b/src/test/uint160_tests.cpp
@@ -0,0 +1,16 @@
+#include "../uint256.h"
+
+BOOST_AUTO_TEST_SUITE(uint160_tests)
+
+BOOST_AUTO_TEST_CASE(equality)
+{
+ uint160 num1 = 10;
+ uint160 num2 = 11;
+ BOOST_CHECK(num1+1 == num2);
+
+ uint64 num3 = 10;
+ BOOST_CHECK(num1 == num3);
+ BOOST_CHECK(num1+num2 == num3+num2);
+}
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/test/uint256_tests.cpp b/src/test/uint256_tests.cpp
new file mode 100644
index 0000000000..cbae9bf6d2
--- /dev/null
+++ b/src/test/uint256_tests.cpp
@@ -0,0 +1,16 @@
+#include "../uint256.h"
+
+BOOST_AUTO_TEST_SUITE(uint256_tests)
+
+BOOST_AUTO_TEST_CASE(equality)
+{
+ uint256 num1 = 10;
+ uint256 num2 = 11;
+ BOOST_CHECK(num1+1 == num2);
+
+ uint64 num3 = 10;
+ BOOST_CHECK(num1 == num3);
+ BOOST_CHECK(num1+num2 == num3+num2);
+}
+
+BOOST_AUTO_TEST_SUITE_END()