diff options
Diffstat (limited to 'indra/test/lltut.cpp')
-rw-r--r-- | indra/test/lltut.cpp | 149 |
1 files changed, 149 insertions, 0 deletions
diff --git a/indra/test/lltut.cpp b/indra/test/lltut.cpp new file mode 100644 index 0000000000..96aad3da58 --- /dev/null +++ b/indra/test/lltut.cpp @@ -0,0 +1,149 @@ +/** + * @file lltut.cpp + * @author Mark Lentczner + * @date 5/16/06 + * @brief MacTester + * + * Copyright (c) 2006-$CurrentYear$, Linden Research, Inc. + * $License$ + */ + +#include "lltut.h" +#include "llsd.h" + +namespace tut +{ + template<> + void ensure_equals(const char* msg, const LLDate& actual, + const LLDate& expected) + { + ensure_equals(msg, + actual.secondsSinceEpoch(), expected.secondsSinceEpoch()); + } + + template<> + void ensure_equals(const char* msg, const LLURI& actual, + const LLURI& expected) + { + ensure_equals(msg, + actual.asString(), expected.asString()); + } + + template<> + void ensure_equals(const char* msg, + const std::vector<U8>& actual, const std::vector<U8>& expected) + { + std::string s(msg); + + ensure_equals(s + " size", actual.size(), expected.size()); + + std::vector<U8>::const_iterator i, j; + int k; + for (i = actual.begin(), j = expected.begin(), k = 0; + i != actual.end(); + ++i, ++j, ++k) + { + ensure_equals(s + " field", *i, *j); + } + } + + template<> + void ensure_equals(const char* m, const LLSD& actual, + const LLSD& expected) + { + const std::string& msg = m; + + ensure_equals(msg + " type", actual.type(), expected.type()); + switch (actual.type()) + { + case LLSD::TypeUndefined: + return; + + case LLSD::TypeBoolean: + ensure_equals(msg + " boolean", actual.asBoolean(), expected.asBoolean()); + return; + + case LLSD::TypeInteger: + ensure_equals(msg + " integer", actual.asInteger(), expected.asInteger()); + return; + + case LLSD::TypeReal: + ensure_equals(msg + " real", actual.asReal(), expected.asReal()); + return; + + case LLSD::TypeString: + ensure_equals(msg + " string", actual.asString(), expected.asString()); + return; + + case LLSD::TypeUUID: + ensure_equals(msg + " uuid", actual.asUUID(), expected.asUUID()); + return; + + case LLSD::TypeDate: + ensure_equals(msg + " date", actual.asDate(), expected.asDate()); + return; + + case LLSD::TypeURI: + ensure_equals(msg + " uri", actual.asURI(), expected.asURI()); + return; + + case LLSD::TypeBinary: + ensure_equals(msg + " binary", actual.asBinary(), expected.asBinary()); + return; + + case LLSD::TypeMap: + { + ensure_equals(msg + " map size", actual.size(), expected.size()); + + LLSD::map_const_iterator actual_iter = actual.beginMap(); + LLSD::map_const_iterator expected_iter = expected.beginMap(); + + while(actual_iter != actual.endMap()) + { + ensure_equals(msg + " map keys", + actual_iter->first, expected_iter->first); + ensure_equals(msg + "[" + actual_iter->first + "]", + actual_iter->second, expected_iter->second); + ++actual_iter; + ++expected_iter; + } + return; + } + case LLSD::TypeArray: + { + ensure_equals(msg + " array size", actual.size(), expected.size()); + + for(int i = 0; i < actual.size(); ++i) + { + ensure_equals(msg + llformat("[%d]", i), + actual[i], expected[i]); + } + return; + } + } + } + + void ensure_starts_with(const std::string& msg, + const std::string& actual, const std::string& expectedStart) + { + if( actual.find(expectedStart, 0) != 0 ) + { + std::stringstream ss; + ss << msg << ": " << "expected to find " << expectedStart + << " at start of actual " << actual; + throw failure(ss.str().c_str()); + } + } + + void ensure_contains(const std::string& msg, + const std::string& actual, const std::string& expectedSubString) + { + if( actual.find(expectedSubString, 0) == std::string::npos ) + { + std::stringstream ss; + ss << msg << ": " << "expected to find " << expectedSubString + << " in actual " << actual; + throw failure(ss.str().c_str()); + } + } +} |