+#ifdef HAVE_CONFIG_H
+# include <simgear_config.h>
+#endif
+
+#ifdef NDEBUG
+// Always enable DEBUG mode in test application, otherwise "assert" test
+// statements have no effect and don't actually test anything (catch 17 ;-) ).
+#undef NDEBUG
+#endif
#include <simgear/compiler.h>
#include <cassert>
#include <cstring>
+// working around MSVC weirdness with props.hxx and SGMathFwd
+#include <simgear/math/SGMath.hxx>
+
#include "propertyObject.hxx"
#include <simgear/structure/exception.hxx>
double ff(aFoo);
assert(ff == 12.0); // comparison with literal
+ if (ff != 12.0) cout << "Error: a/foo != 12!" << endl;
const float fff(12.0f);
assert(fff == aFoo); // comparion with float value
+ if (fff != aFoo) cout << "Error: 12 != a/foo" << endl;
return true;
}
PropertyObject<bool> b("not/found/honest");
try {
- bool v = b;
+ bool v = b;
assert(false && "read of missing property didn't throw");
+ (void) v; // don't warn about unused variable
} catch (sg_exception& e) {
// expected
}
}
}
+void testCreate()
+{
+ PropertyObject<bool> a = PropertyObject<bool>::create("a/lemon", true);
+ assert(a == true);
+ assert(testRoot->getBoolValue("a/lemon") == true);
+
+
+ PropertyObject<int> b(PropertyObject<int>::create("a/pear", 3142));
+ assert(b == 3142);
+
+ PropertyObject<std::string> c(PropertyObject<std::string>::create("a/lime", "fofofo"));
+ assert(c == "fofofo");
+
+// check overloads for string version
+ SGPropertyNode* n = testRoot->getNode("b", true);
+ PropertyObject<std::string> d(PropertyObject<std::string>::create(n, "grape", "xyz"));
+ assert(!strcmp(testRoot->getStringValue("b/grape"), "xyz"));
+
+
+}
+
int main(int argc, char* argv[])
{
testRoot = new SGPropertyNode();
testString();
testAssignment();
testSTLContainer();
+ testCreate();
return EXIT_SUCCESS;
}