diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index f17393e44ba85ee3cc2548fe7caf88af73e29e00..f544ab6d2b11583fd55f83ab803fbc2f56a79f58 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -11,7 +11,8 @@ foreach(TEST ninode_test skin_test missing_link_stack_test - trishape_test) + trishape_test + numuvsets_test) add_executable(${TEST} ${TEST}.cpp) target_link_libraries(${TEST} ${Boost_UNIT_TEST_FRAMEWORK_LIBRARY} niflib) add_test(niflib::${TEST} ${TEST}) diff --git a/test/numuvsets_test.cpp b/test/numuvsets_test.cpp new file mode 100644 index 0000000000000000000000000000000000000000..cc086744379806acef264380b684b04eeefdaa53 --- /dev/null +++ b/test/numuvsets_test.cpp @@ -0,0 +1,51 @@ +#define BOOST_TEST_DYN_LINK +#define BOOST_TEST_MAIN +#include <boost/test/unit_test.hpp> + +#include <sstream> // stringstream + +// evil hack to allow testing of private and protected data +#define private public +#define protected public + +#include "niflib.h" +#include "obj/NiNode.h" +#include "obj/NiTriShape.h" +#include "obj/NiTriShapeData.h" + +using namespace Niflib; +using namespace std; + +BOOST_AUTO_TEST_SUITE(numuvsets_test_suite) + +BOOST_AUTO_TEST_CASE(numuvsets_write_test) +{ + stringstream ss; + stringstream ss2; + + // create a simple nif tree with a trishape + NiNodeRef root = new NiNode; + NiTriShapeRef shape = new NiTriShape; + NiTriShapeDataRef data = new NiTriShapeData; + // set hierarchy + shape->SetData(data); + root->AddChild(DynamicCast<NiAVObject>(shape)); + // set flag + data->SetTspaceFlag(1); + // write and read + NiObjectRef obj; + BOOST_CHECK_NO_THROW(WriteNifTree(ss, root, NifInfo(VER_20_0_0_5))); + ss.seekg(0); + BOOST_CHECK_NO_THROW(obj = ReadNifTree(ss)); + // check flag + root = DynamicCast<NiNode>(obj); + BOOST_REQUIRE(root != NULL); + BOOST_REQUIRE_EQUAL(root->GetChildren().size(), 1); + shape = DynamicCast<NiTriShape>(root->GetChildren()[0]); + BOOST_REQUIRE(shape != NULL); + data = DynamicCast<NiTriShapeData>(shape->GetData()); + BOOST_REQUIRE(data != NULL); + BOOST_CHECK_EQUAL(data->GetTspaceFlag(), 1); +} + +BOOST_AUTO_TEST_SUITE_END()