diff options
Diffstat (limited to 'slicer/test/preprocessor.cpp')
-rw-r--r-- | slicer/test/preprocessor.cpp | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/slicer/test/preprocessor.cpp b/slicer/test/preprocessor.cpp new file mode 100644 index 0000000..f4c75fc --- /dev/null +++ b/slicer/test/preprocessor.cpp @@ -0,0 +1,50 @@ +#define BOOST_TEST_MODULE preprocess +#include <boost/test/unit_test.hpp> + +#include <slicer/parser.h> +#include <boost/filesystem/convenience.hpp> +#include <boost/filesystem/operations.hpp> +#include <boost/format.hpp> +#include <boost/function.hpp> +#include <misc.h> +#include <types.h> +#include "helpers.h" +#include "fileStructure.h" + +namespace fs = boost::filesystem; + +BOOST_FIXTURE_TEST_SUITE ( preprocessor, FileStructure ); + +BOOST_AUTO_TEST_CASE( slicer_test_ice ) +{ + const fs::path cpp = fs::change_extension(tmp / base, ".cpp"); + BOOST_TEST_CHECKPOINT("cpp: " << cpp); + fs::remove(cpp); + Slicer::Slicer::Apply(slice, cpp); + + const fs::path obj = fs::change_extension(tmp / base, ".o"); + const std::string compile = stringbf( + "g++ -Os -fPIC -c -std=c++0x -I tmp -I /usr/include/Ice -I /usr/include/IceUtil -I %s -I %s %s -o %s", + bjamout, + root / "..", + cpp, obj); + BOOST_TEST_CHECKPOINT("compile: " << compile); + system(compile); + + const fs::path so = fs::change_extension(tmp / ("libslicer" + slice.filename().string()), ".so"); + const std::string link = stringbf( + "g++ -shared -lIce -lIceUtil %s/lib%s.so %s -o %s", + bjamout, base, + obj, so); + BOOST_TEST_CHECKPOINT("link: " << link); + system(link); + + BOOST_TEST_CHECKPOINT("load: " << so); + auto handle = loadlib(so); + + BOOST_TEST_CHECKPOINT("unload: " << handle); + closelib(handle); +} + +BOOST_AUTO_TEST_SUITE_END(); + |