lltut.h
上传用户:king477883
上传日期:2021-03-01
资源大小:9553k
文件大小:4k
源码类别:

游戏引擎

开发平台:

C++ Builder

  1. /** 
  2.  * @file lltut.h
  3.  * @author Phoenix
  4.  * @date 2005-09-26
  5.  * @brief helper tut methods
  6.  *
  7.  * $LicenseInfo:firstyear=2005&license=viewergpl$
  8.  * 
  9.  * Copyright (c) 2005-2010, Linden Research, Inc.
  10.  * 
  11.  * Second Life Viewer Source Code
  12.  * The source code in this file ("Source Code") is provided by Linden Lab
  13.  * to you under the terms of the GNU General Public License, version 2.0
  14.  * ("GPL"), unless you have obtained a separate licensing agreement
  15.  * ("Other License"), formally executed by you and Linden Lab.  Terms of
  16.  * the GPL can be found in doc/GPL-license.txt in this distribution, or
  17.  * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
  18.  * 
  19.  * There are special exceptions to the terms and conditions of the GPL as
  20.  * it is applied to this Source Code. View the full text of the exception
  21.  * in the file doc/FLOSS-exception.txt in this software distribution, or
  22.  * online at
  23.  * http://secondlifegrid.net/programs/open_source/licensing/flossexception
  24.  * 
  25.  * By copying, modifying or distributing this software, you acknowledge
  26.  * that you have read and understood your obligations described above,
  27.  * and agree to abide by those obligations.
  28.  * 
  29.  * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
  30.  * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
  31.  * COMPLETENESS OR PERFORMANCE.
  32.  * $/LicenseInfo$
  33.  */
  34. #ifndef LL_LLTUT_H
  35. #define LL_LLTUT_H
  36. #include "is_approx_equal_fraction.h" // instead of llmath.h
  37. #include <tut/tut.hpp>
  38. #include <cstring>
  39. class LLDate;
  40. class LLSD;
  41. class LLURI;
  42. namespace tut
  43. {
  44. inline void ensure_approximately_equals(const char* msg, F64 actual, F64 expected, U32 frac_bits)
  45. {
  46. if(!is_approx_equal_fraction(actual, expected, frac_bits))
  47. {
  48. std::stringstream ss;
  49. ss << (msg?msg:"") << (msg?": ":"") << "not equal actual: " << actual << " expected: " << expected;
  50. throw tut::failure(ss.str().c_str());
  51. }
  52. }
  53. inline void ensure_approximately_equals(const char* msg, F32 actual, F32 expected, U32 frac_bits)
  54. {
  55. if(!is_approx_equal_fraction(actual, expected, frac_bits))
  56. {
  57. std::stringstream ss;
  58. ss << (msg?msg:"") << (msg?": ":"") << "not equal actual: " << actual << " expected: " << expected;
  59. throw tut::failure(ss.str().c_str());
  60. }
  61. }
  62. inline void ensure_approximately_equals(F32 actual, F32 expected, U32 frac_bits)
  63. {
  64. ensure_approximately_equals(NULL, actual, expected, frac_bits);
  65. }
  66. inline void ensure_memory_matches(const char* msg,const void* actual, U32 actual_len, const void* expected,U32 expected_len)
  67. {
  68. if((expected_len != actual_len) || 
  69. (std::memcmp(actual, expected, actual_len) != 0))
  70. {
  71. std::stringstream ss;
  72. ss << (msg?msg:"") << (msg?": ":"") << "not equal";
  73. throw tut::failure(ss.str().c_str());
  74. }
  75. }
  76. inline void ensure_memory_matches(const void* actual, U32 actual_len, const void* expected,U32 expected_len)
  77. {
  78. ensure_memory_matches(NULL, actual, actual_len, expected, expected_len);
  79. }
  80. template <class T,class Q>
  81. void ensure_not_equals(const char* msg,const Q& actual,const T& expected)
  82. {
  83. if( expected == actual )
  84. {
  85. std::stringstream ss;
  86. ss << (msg?msg:"") << (msg?": ":"") << "both equal " << expected;
  87. throw tut::failure(ss.str().c_str());
  88. }
  89. }
  90. template <class T,class Q>
  91. void ensure_not_equals(const Q& actual,const T& expected)
  92. {
  93. ensure_not_equals(NULL, actual, expected);
  94. }
  95. template <class T,class Q>
  96. void ensure_equals(const std::string& msg,
  97. const Q& actual,const T& expected)
  98. { ensure_equals(msg.c_str(), actual, expected); }
  99. void ensure_equals(const char* msg,
  100. const LLDate& actual, const LLDate& expected);
  101. void ensure_equals(const char* msg,
  102. const LLURI& actual, const LLURI& expected);
  103. void ensure_equals(const char* msg,
  104. const std::vector<U8>& actual, const std::vector<U8>& expected);
  105. void ensure_equals(const char* msg,
  106. const LLSD& actual, const LLSD& expected);
  107. void ensure_equals(const std::string& msg,
  108. const LLSD& actual, const LLSD& expected);
  109. void ensure_starts_with(const std::string& msg,
  110. const std::string& actual, const std::string& expectedStart);
  111. void ensure_ends_with(const std::string& msg,
  112. const std::string& actual, const std::string& expectedEnd);
  113. void ensure_contains(const std::string& msg,
  114. const std::string& actual, const std::string& expectedSubString);
  115. void ensure_does_not_contain(const std::string& msg,
  116. const std::string& actual, const std::string& expectedSubString);
  117. }
  118. #endif // LL_LLTUT_H