summaryrefslogtreecommitdiff
path: root/slicer/test/preprocessor.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'slicer/test/preprocessor.cpp')
-rw-r--r--slicer/test/preprocessor.cpp50
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();
+