diff options
author | Gavin Andresen <gavinandresen@gmail.com> | 2011-06-27 14:05:02 -0400 |
---|---|---|
committer | Gavin Andresen <gavinandresen@gmail.com> | 2011-06-27 14:12:48 -0400 |
commit | 8baf865c94653e21d4f6f43bbb5c712b16aba0e4 (patch) | |
tree | 406fea14ada1518e4d4122d4785deb7165f0e290 /src | |
parent | c774b1697690c3f94ccd79c5de660b6050ac6409 (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')
-rw-r--r-- | src/makefile.mingw | 8 | ||||
-rw-r--r-- | src/makefile.osx | 8 | ||||
-rw-r--r-- | src/makefile.unix | 9 | ||||
-rw-r--r-- | src/obj/test/.gitignore | 2 | ||||
-rw-r--r-- | src/test/README | 21 | ||||
-rw-r--r-- | src/test/test_bitcoin.cpp | 6 | ||||
-rw-r--r-- | src/test/uint160_tests.cpp | 16 | ||||
-rw-r--r-- | src/test/uint256_tests.cpp | 16 |
8 files changed, 83 insertions, 3 deletions
diff --git a/src/makefile.mingw b/src/makefile.mingw index fccc0e36af..507833be48 100644 --- a/src/makefile.mingw +++ b/src/makefile.mingw @@ -81,9 +81,17 @@ obj/nogui/%.o: %.cpp $(HEADERS) bitcoind.exe: $(OBJS:obj/%=obj/nogui/%) obj/ui_res.o g++ $(CFLAGS) -o $@ $(LIBPATHS) $^ $(LIBS) +obj/test/%.o: obj/test/%.cpp $(HEADERS) + g++ -c $(CFLAGS) -o $@ $< + +test_bitcoin: obj/test/test_bitcoin.o + g++ $(CFLAGS) -o $@ $(LIBPATHS) $^ $(LIBS) clean: + -del /Q bitcoin bitcoind test_bitcoin -del /Q obj\* -del /Q obj\nogui\* + -del /Q obj\test\* -del /Q cryptopp\obj\* + -del /Q test\*.o -del /Q headers.h.gch diff --git a/src/makefile.osx b/src/makefile.osx index 4e173a9dfa..784596b72d 100644 --- a/src/makefile.osx +++ b/src/makefile.osx @@ -74,9 +74,15 @@ obj/nogui/%.o: %.cpp $(HEADERS) bitcoind: $(OBJS:obj/%=obj/nogui/%) $(CXX) $(CFLAGS) -o $@ $(LIBPATHS) $^ $(LIBS) +obj/test/%.o: test/%.cpp $(HEADERS) + $(CXX) -c $(CFLAGS) -o $@ $< + +test_bitcoin: obj/test/test_bitcoin.o + $(CXX) $(CFLAGS) -o $@ $(LIBPATHS) $^ $(LIBS) -lboost_unit_test_framework clean: - -rm -f bitcoin bitcoind + -rm -f bitcoin bitcoind test_bitcoin -rm -f obj/*.o -rm -f obj/nogui/*.o + -rm -f obj/test/*.o -rm -f cryptopp/obj/*.o diff --git a/src/makefile.unix b/src/makefile.unix index f2d85b9dd3..bb26bf5edd 100644 --- a/src/makefile.unix +++ b/src/makefile.unix @@ -75,11 +75,16 @@ obj/nogui/%.o: %.cpp $(HEADERS) bitcoind: $(OBJS:obj/%=obj/nogui/%) $(CXX) $(CXXFLAGS) -o $@ $^ $(LIBS) +obj/test/%.o: test/%.cpp $(HEADERS) + $(CXX) -c $(CFLAGS) -o $@ $< + +test_bitcoin: obj/test/test_bitcoin.o + $(CXX) $(CFLAGS) -o $@ $(LIBPATHS) $^ $(LIBS) -lboost_unit_test_framework clean: + -rm -f bitcoin bitcoind test_bitcoin -rm -f obj/*.o -rm -f obj/nogui/*.o + -rm -f obj/test/*.o -rm -f cryptopp/obj/*.o -rm -f headers.h.gch - -rm -f bitcoin - -rm -f bitcoind diff --git a/src/obj/test/.gitignore b/src/obj/test/.gitignore new file mode 100644 index 0000000000..d6b7ef32c8 --- /dev/null +++ b/src/obj/test/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore 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() |