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

游戏引擎

开发平台:

C++ Builder

  1. /** 
  2.  * @file LLSaleInfo_tut.cpp
  3.  * @author Adroit
  4.  * @date 2007-03
  5.  * @brief Test cases of llsaleinfo.h
  6.  *
  7.  * $LicenseInfo:firstyear=2007&license=viewergpl$
  8.  * 
  9.  * Copyright (c) 2007-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. #include <tut/tut.hpp>
  35. #include "linden_common.h"
  36. #include "lltut.h"
  37. #include "llsaleinfo.h"
  38. namespace tut
  39. {
  40. struct llsaleinfo_tut
  41. {
  42. };
  43. typedef test_group<llsaleinfo_tut> llsaleinfo_tut_t;
  44. typedef llsaleinfo_tut_t::object llsaleinfo_test_t;
  45. tut::llsaleinfo_tut_t tut_llsaleinfo_test("llsaleinfo");
  46. template<> template<>
  47. void llsaleinfo_test_t::test<1>()
  48. {
  49. //test case for getSaleType(), getSalePrice(), getCRC32() fn.
  50. //test case for setSaleType(), setSalePrice() fn.
  51. S32 sale_price = 10000;
  52. LLSaleInfo llsaleinfo(LLSaleInfo::FS_COPY, sale_price);
  53. const char* sale= "copy";
  54. LLSD llsd_obj1 = ll_create_sd_from_sale_info(llsaleinfo);
  55. LLSaleInfo saleinfo1 = ll_sale_info_from_sd(llsd_obj1);
  56. ensure("1. The getSaleType() fn failed", LLSaleInfo::FS_COPY == llsaleinfo.getSaleType());
  57. ensure("2. LLSaleInfo::isForSale() fn failed", TRUE == llsaleinfo.isForSale());
  58. ensure("3. The getSalePrice() fn failed", sale_price == llsaleinfo.getSalePrice());
  59. ensure("4. The getCRC32() fn failed", 235833404 == llsaleinfo.getCRC32());
  60. ensure("5. LLSaleInfo::lookup(const char* name) fn failed", LLSaleInfo::FS_COPY == llsaleinfo.lookup(sale));
  61. ensure_equals("6. ll_create_sd_from_sale_info() fn failed", llsaleinfo.getSalePrice(), saleinfo1.getSalePrice());
  62. ensure_equals("7. ll_create_sd_from_sale_info() fn failed", llsaleinfo.getSaleType(), saleinfo1.getSaleType());
  63. llsaleinfo.setSalePrice(10000000);
  64. llsaleinfo.setSaleType(LLSaleInfo::FS_ORIGINAL);
  65. sale = "cntn";
  66. llsd_obj1 = ll_create_sd_from_sale_info(llsaleinfo);
  67. saleinfo1 = ll_sale_info_from_sd(llsd_obj1);
  68. ensure("8. The getSaleType() and setSaleType() fn failed", LLSaleInfo::FS_ORIGINAL == llsaleinfo.getSaleType());
  69. ensure("9. LLSaleInfo::isForSale() fn failed", TRUE == llsaleinfo.isForSale());
  70. ensure("10. The getSalePrice() fn failed", 10000000 == llsaleinfo.getSalePrice());
  71. ensure("11. The getCRC32() fn failed", 127911702 == llsaleinfo.getCRC32());
  72. ensure("12. LLSaleInfo::lookup(const char* name) fn failed", LLSaleInfo::FS_CONTENTS == llsaleinfo.lookup(sale));
  73. ensure_equals("13. ll_create_sd_from_sale_info() fn failed", llsaleinfo.getSalePrice(), saleinfo1.getSalePrice());
  74. ensure_equals("14. ll_create_sd_from_sale_info() fn failed", llsaleinfo.getSaleType(), saleinfo1.getSaleType());
  75. llsaleinfo.setSalePrice(55000550);
  76. llsaleinfo.setSaleType(LLSaleInfo::FS_CONTENTS);
  77. sale = "orig";
  78. llsd_obj1 = ll_create_sd_from_sale_info(llsaleinfo);
  79. saleinfo1 = ll_sale_info_from_sd(llsd_obj1);
  80. ensure("15. The getSaleType() and setSaleType() fn failed", LLSaleInfo::FS_CONTENTS == llsaleinfo.getSaleType());
  81. ensure("16. LLSaleInfo::isForSale() fn failed", TRUE == llsaleinfo.isForSale());
  82. ensure("17. The getSalePrice() fn failed", 55000550 == llsaleinfo.getSalePrice());
  83. ensure("18. The getCRC32() fn failed", 408735656 == llsaleinfo.getCRC32());
  84. ensure("19. LLSaleInfo::lookup(const char* name) fn failed", LLSaleInfo::FS_ORIGINAL == llsaleinfo.lookup(sale));
  85. ensure_equals("20. ll_create_sd_from_sale_info() fn failed", llsaleinfo.getSalePrice(), saleinfo1.getSalePrice());
  86. ensure_equals("21. ll_create_sd_from_sale_info() fn failed", llsaleinfo.getSaleType(), saleinfo1.getSaleType());
  87. llsaleinfo.setSalePrice(-6432);
  88. llsaleinfo.setSaleType(LLSaleInfo::FS_NOT);
  89. sale = "not";
  90. llsd_obj1 = ll_create_sd_from_sale_info(llsaleinfo);
  91. saleinfo1 = ll_sale_info_from_sd(llsd_obj1);
  92. ensure("22. The getSaleType() and setSaleType() fn failed", LLSaleInfo::FS_NOT == llsaleinfo.getSaleType());
  93. ensure("23. LLSaleInfo::isForSale() fn failed", FALSE == llsaleinfo.isForSale());
  94. ensure("24. The getSalePrice() fn failed", 0 == llsaleinfo.getSalePrice());
  95. ensure("25. The getCRC32() fn failed", 0 == llsaleinfo.getCRC32());
  96. ensure("26. LLSaleInfo::lookup(const char* name) fn failed", LLSaleInfo::FS_NOT == llsaleinfo.lookup(sale));
  97. ensure_equals("27. ll_create_sd_from_sale_info() fn failed", llsaleinfo.getSalePrice(), saleinfo1.getSalePrice());
  98. ensure_equals("28. ll_create_sd_from_sale_info() fn failed", llsaleinfo.getSaleType(), saleinfo1.getSaleType());
  99. }
  100. template<> template<>
  101. void llsaleinfo_test_t::test<2>()
  102. {
  103. LLFILE* fp = LLFile::fopen("linden_file.dat","w+");
  104. if(!fp)
  105. {
  106. llerrs << "file could not be openedn" << llendl;
  107. return;
  108. }
  109. S32 sale_price = 43500;
  110. LLSaleInfo llsaleinfo(LLSaleInfo::FS_COPY, sale_price);
  111. llsaleinfo.exportFile(fp);
  112. fclose(fp);
  113. LLSaleInfo llsaleinfo1;
  114. U32 perm_mask;
  115. BOOL has_perm_mask;
  116. fp = LLFile::fopen("linden_file.dat","r");
  117. if(!fp)
  118. {
  119. llerrs << "file coudnt be openedn" << llendl;
  120. return;
  121. }
  122. llsaleinfo1.importFile(fp, has_perm_mask, perm_mask);
  123. fclose(fp);
  124. ensure("importFile() fn failed ", llsaleinfo.getSaleType() == llsaleinfo1.getSaleType() &&
  125.      llsaleinfo.getSalePrice() == llsaleinfo1.getSalePrice());
  126. }
  127. template<> template<>
  128. void llsaleinfo_test_t::test<3>()
  129. {
  130. S32 sale_price = 525452;
  131. LLSaleInfo llsaleinfo(LLSaleInfo::FS_ORIGINAL, sale_price);
  132. std::ostringstream ostream;
  133. llsaleinfo.exportLegacyStream(ostream);
  134. std::istringstream istream(ostream.str());
  135. LLSaleInfo llsaleinfo1;
  136. U32 perm_mask = 0;
  137. BOOL has_perm_mask = FALSE;
  138. llsaleinfo1.importLegacyStream(istream, has_perm_mask, perm_mask);
  139. ensure("importLegacyStream() fn failed ", llsaleinfo.getSalePrice() == llsaleinfo1.getSalePrice() &&
  140.        llsaleinfo.getSaleType() == llsaleinfo1.getSaleType());
  141. }
  142. template<> template<>
  143. void llsaleinfo_test_t::test<4>()
  144. {
  145. // Deleted LLSaleInfo::exportFileXML() and LLSaleInfo::importXML()
  146. // because I can't find any non-test code references to it. 2009-05-04 JC
  147. }
  148. template<> template<>
  149. void llsaleinfo_test_t::test<5>()
  150. {
  151. S32 sale_price = 99000;
  152. LLSaleInfo saleinfo(LLSaleInfo::FS_ORIGINAL, sale_price);
  153. LLSD sd_result = saleinfo.asLLSD();
  154. U32 perm_mask = 0 ;
  155. BOOL has_perm_mask = FALSE;
  156. LLSaleInfo saleinfo1;
  157. saleinfo1.fromLLSD( sd_result, has_perm_mask, perm_mask);
  158. ensure_equals("asLLSD and fromLLSD failed", saleinfo.getSalePrice(), saleinfo1.getSalePrice());
  159. ensure_equals("asLLSD and fromLLSD failed", saleinfo.getSaleType(), saleinfo1.getSaleType());
  160. }
  161. //static EForSale lookup(const char* name) fn test
  162. template<> template<>
  163. void llsaleinfo_test_t::test<6>()
  164. {
  165. S32 sale_price = 233223;
  166. LLSaleInfo::EForSale ret_type = LLSaleInfo::lookup("orig");
  167. ensure_equals("lookup(const char* name) fn failed", ret_type, LLSaleInfo::FS_ORIGINAL);
  168. LLSaleInfo saleinfo(LLSaleInfo::FS_COPY, sale_price);
  169. const char* result = LLSaleInfo::lookup(LLSaleInfo::FS_COPY);
  170. ensure("char* lookup(EForSale type) fn failed", 0 == strcmp("copy", result));
  171. }
  172. //void LLSaleInfo::accumulate(const LLSaleInfo& sale_info) fn test
  173. template<> template<>
  174. void llsaleinfo_test_t::test<7>()
  175. {
  176. S32 sale_price = 20;
  177. LLSaleInfo saleinfo(LLSaleInfo::FS_COPY, sale_price);
  178. LLSaleInfo saleinfo1(LLSaleInfo::FS_COPY, sale_price);
  179. saleinfo1.accumulate(saleinfo);
  180. ensure_equals("LLSaleInfo::accumulate(const LLSaleInfo& sale_info) fn failed", saleinfo1.getSalePrice(), 40);
  181. }
  182. // test cases of bool operator==(const LLSaleInfo &rhs) fn
  183. // test case of bool operator!=(const LLSaleInfo &rhs) fn
  184. template<> template<>
  185. void llsaleinfo_test_t::test<8>()
  186. {
  187. S32 sale_price = 55000;
  188. LLSaleInfo saleinfo(LLSaleInfo::FS_ORIGINAL, sale_price);
  189. LLSaleInfo saleinfoequal(LLSaleInfo::FS_ORIGINAL, sale_price);
  190. LLSaleInfo saleinfonotequal(LLSaleInfo::FS_ORIGINAL, sale_price*2);
  191. ensure("operator == fn. failed", true == (saleinfo == saleinfoequal));
  192. ensure("operator != fn. failed", true == (saleinfo != saleinfonotequal));
  193. }
  194. template<> template<>
  195. void llsaleinfo_test_t::test<9>()
  196. {
  197. //TBD: void LLSaleInfo::packMessage(LLMessageSystem* msg) const
  198. //TBD: void LLSaleInfo::unpackMessage(LLMessageSystem* msg, const char* block)
  199. //TBD: void LLSaleInfo::unpackMultiMessage(LLMessageSystem* msg, const char* block, S32 block_num)
  200. }
  201. }