00001 00034 #ifndef LL_LLTUT_H 00035 #define LL_LLTUT_H 00036 00037 #include <tut/tut.h> 00038 00039 #include "lldate.h" 00040 #include "lluri.h" 00041 #include "llmath.h" 00042 00043 class LLSD; 00044 00045 namespace tut 00046 { 00047 inline void ensure_approximately_equals(const char* msg, F32 actual, F32 expected, U32 frac_bits) 00048 { 00049 if(!is_approx_equal_fraction(actual, expected, frac_bits)) 00050 { 00051 std::stringstream ss; 00052 ss << (msg?msg:"") << (msg?": ":"") << "not equal actual: " << actual << " expected: " << expected; 00053 throw tut::failure(ss.str().c_str()); 00054 } 00055 } 00056 00057 inline void ensure_approximately_equals(F32 actual, F32 expected, U32 frac_bits) 00058 { 00059 ensure_approximately_equals(NULL, actual, expected, frac_bits); 00060 } 00061 00062 inline void ensure_memory_matches(const char* msg,const void* actual, U32 actual_len, const void* expected,U32 expected_len) 00063 { 00064 if((expected_len != actual_len) || 00065 (memcmp(actual, expected, actual_len) != 0)) 00066 { 00067 std::stringstream ss; 00068 ss << (msg?msg:"") << (msg?": ":"") << "not equal"; 00069 throw tut::failure(ss.str().c_str()); 00070 } 00071 } 00072 00073 inline void ensure_memory_matches(const void* actual, U32 actual_len, const void* expected,U32 expected_len) 00074 { 00075 ensure_memory_matches(NULL, actual, actual_len, expected, expected_len); 00076 } 00077 00078 template <class T,class Q> 00079 void ensure_not_equals(const char* msg,const Q& actual,const T& expected) 00080 { 00081 if( expected == actual ) 00082 { 00083 std::stringstream ss; 00084 ss << (msg?msg:"") << (msg?": ":"") << "both equal " << expected; 00085 throw tut::failure(ss.str().c_str()); 00086 } 00087 } 00088 00089 template <class T,class Q> 00090 void ensure_not_equals(const Q& actual,const T& expected) 00091 { 00092 ensure_not_equals(NULL, actual, expected); 00093 } 00094 00095 00096 template <class T,class Q> 00097 void ensure_equals(const std::string& msg, 00098 const Q& actual,const T& expected) 00099 { ensure_equals(msg.c_str(), actual, expected); } 00100 00101 template<> 00102 void ensure_equals(const char* msg, 00103 const LLDate& actual, const LLDate& expected); 00104 00105 template<> 00106 void ensure_equals(const char* msg, 00107 const LLURI& actual, const LLURI& expected); 00108 00109 template<> 00110 void ensure_equals(const char* msg, 00111 const std::vector<U8>& actual, const std::vector<U8>& expected); 00112 00113 template<> 00114 void ensure_equals(const char* msg, 00115 const LLSD& actual, const LLSD& expected); 00116 00117 void ensure_starts_with(const std::string& msg, 00118 const std::string& actual, const std::string& expectedStart); 00119 00120 void ensure_ends_with(const std::string& msg, 00121 const std::string& actual, const std::string& expectedEnd); 00122 00123 void ensure_contains(const std::string& msg, 00124 const std::string& actual, const std::string& expectedSubString); 00125 00126 void ensure_does_not_contain(const std::string& msg, 00127 const std::string& actual, const std::string& expectedSubString); 00128 } 00129 00130 00131 #endif // LL_LLTUT_H