1 #include "Common.h" 2 #include "Dae.h" 3 #include "XmlDoc.h" 4 5 using namespace opencollada; 6 using namespace std; 7 8 namespace Microsoft 9 { 10 namespace VisualStudio 11 { 12 namespace CppUnitTestFramework 13 { 14 template<> ToString(const XmlNode & n)15 std::wstring ToString(const XmlNode & n) 16 { 17 wstringstream s; 18 s << n.name().c_str(); 19 return s.str(); 20 } 21 } 22 } 23 } 24 25 namespace opencollada_test 26 { TEST_CLASS(XmlDocTest)27 TEST_CLASS(XmlDocTest) 28 { 29 public: 30 TEST_METHOD(Constructor) 31 { 32 XmlDoc doc; 33 Assert::IsFalse(doc); 34 } 35 36 TEST_METHOD(MoveConstructor) 37 { 38 XmlDoc doc1; 39 Assert::IsFalse(doc1); 40 doc1.readFile(data_path("xml/file.dae")); 41 Assert::IsTrue(doc1); 42 43 XmlDoc doc2(move(doc1)); 44 Assert::IsFalse(doc1); 45 Assert::IsTrue(doc2); 46 } 47 48 TEST_METHOD(Destructor) 49 { 50 XmlDoc doc; 51 Assert::IsFalse(doc); 52 doc.readFile(data_path("xml/file.dae")); 53 Assert::IsTrue(doc); 54 const auto & nodes = doc.root().selectNodes("//collada:COLLADA"); 55 Assert::AreEqual(static_cast<size_t>(1), nodes.size()); 56 } 57 58 TEST_METHOD(OperatorEqual) 59 { 60 XmlDoc doc1; 61 Assert::IsFalse(doc1); 62 doc1.readFile(data_path("xml/file.dae")); 63 Assert::IsTrue(doc1); 64 65 XmlDoc doc2; 66 Assert::IsFalse(doc2); 67 doc2 = move(doc1); 68 Assert::IsFalse(doc1); 69 Assert::IsTrue(doc2); 70 } 71 72 TEST_METHOD(ReadFile) 73 { 74 { 75 XmlDoc doc; 76 Assert::IsFalse(doc); 77 doc.readFile(data_path("xml/file.dae")); 78 Assert::IsTrue(doc); 79 doc.readFile(data_path("xml")); 80 Assert::IsFalse(doc); 81 doc.readFile(data_path("xml/bad_file.dae")); 82 Assert::IsFalse(doc); 83 } 84 { 85 XmlDoc doc; 86 Assert::IsFalse(doc); 87 doc.readFile(data_path("xml/empty.dae")); 88 Assert::IsFalse(doc); 89 } 90 { 91 XmlDoc doc; 92 Assert::IsFalse(doc); 93 doc.readFile(data_path("xml/compressed_file.dae")); 94 Assert::IsTrue(doc); 95 } 96 } 97 98 TEST_METHOD(OperatorBool) 99 { 100 XmlDoc doc; 101 Assert::IsFalse(doc); 102 doc.readFile(data_path("xml/file.dae")); 103 Assert::IsTrue(doc); 104 } 105 106 TEST_METHOD(Reset) 107 { 108 XmlDoc doc; 109 Assert::IsFalse(doc); 110 doc.readFile(data_path("xml/file.dae")); 111 Assert::IsTrue(doc); 112 doc.reset(); 113 Assert::IsFalse(doc); 114 } 115 116 TEST_METHOD(Root) 117 { 118 XmlDoc doc; 119 Assert::IsFalse(doc); 120 auto root = doc.root(); 121 Assert::IsFalse(root); 122 doc.readFile(data_path("xml/file.dae")); 123 Assert::IsTrue(doc); 124 root = doc.root(); 125 Assert::IsTrue(root); 126 } 127 128 TEST_METHOD(GetRootNamespace) 129 { 130 XmlDoc doc; 131 Assert::IsFalse(doc); 132 string ns = doc.getRootNamespace(); 133 Assert::IsTrue(ns.empty()); 134 doc.readFile(data_path("xml/file.dae")); 135 Assert::IsTrue(doc); 136 Assert::AreEqual(Dae::GetColladaNamespace141(), doc.getRootNamespace()); 137 } 138 139 TEST_METHOD(SetTempRoot) 140 { 141 XmlDoc doc; 142 Assert::IsFalse(doc); 143 doc.readFile(data_path("xml/file.dae")); 144 auto root = doc.root(); 145 auto node = doc.root().firstChild(); 146 Assert::AreNotEqual(root, node); 147 { 148 auto tempRootMod = doc.setTempRoot(node); 149 auto new_root = doc.root(); 150 Assert::AreEqual(new_root, node); 151 Assert::AreNotEqual(new_root, root); 152 } 153 auto restored_root = doc.root(); 154 Assert::AreNotEqual(restored_root, node); 155 Assert::AreEqual(restored_root, root); 156 } 157 }; 158 }