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

游戏引擎

开发平台:

C++ Builder

  1. /** 
  2.  * @file lldateutil_test.cpp
  3.  *
  4.  * $LicenseInfo:firstyear=2001&license=viewergpl$
  5.  * 
  6.  * Copyright (c) 2001-2010, Linden Research, Inc.
  7.  * 
  8.  * Second Life Viewer Source Code
  9.  * The source code in this file ("Source Code") is provided by Linden Lab
  10.  * to you under the terms of the GNU General Public License, version 2.0
  11.  * ("GPL"), unless you have obtained a separate licensing agreement
  12.  * ("Other License"), formally executed by you and Linden Lab.  Terms of
  13.  * the GPL can be found in doc/GPL-license.txt in this distribution, or
  14.  * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
  15.  * 
  16.  * There are special exceptions to the terms and conditions of the GPL as
  17.  * it is applied to this Source Code. View the full text of the exception
  18.  * in the file doc/FLOSS-exception.txt in this software distribution, or
  19.  * online at
  20.  * http://secondlifegrid.net/programs/open_source/licensing/flossexception
  21.  * 
  22.  * By copying, modifying or distributing this software, you acknowledge
  23.  * that you have read and understood your obligations described above,
  24.  * and agree to abide by those obligations.
  25.  * 
  26.  * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
  27.  * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
  28.  * COMPLETENESS OR PERFORMANCE.
  29.  * $/LicenseInfo$
  30.  */
  31. #include "linden_common.h"
  32. #include "../test/lltut.h"
  33. #include "../lldateutil.h"
  34. #include "lldate.h"
  35. #include "llstring.h" // LLStringUtil::format()
  36. #include "lltrans.h"
  37. #include "llui.h"
  38. #include <map>
  39. // Baked-in return values for getString()
  40. std::map< std::string, std::string > gString;
  41. // Baked-in return values for getCountString()
  42. // map of pairs of input xml_desc and integer count
  43. typedef std::pair< std::string, int > count_string_t;
  44. std::map< count_string_t, std::string > gCountString;
  45. std::string LLTrans::getString(const std::string &xml_desc, const LLStringUtil::format_map_t& args)
  46. {
  47. std::string text = gString[xml_desc];
  48. LLStringUtil::format(text, args);
  49. return text;
  50. }
  51. std::string LLTrans::getCountString(const std::string& language, const std::string& xml_desc, S32 count)
  52. {
  53. count_string_t key(xml_desc, count);
  54. if (gCountString.find(key) == gCountString.end())
  55. {
  56. return std::string("Couldn't find ") + xml_desc;
  57. }
  58. return gCountString[ count_string_t(xml_desc, count) ];
  59. }
  60. std::string LLUI::getLanguage()
  61. {
  62. return "en";
  63. }
  64. namespace tut
  65. {
  66.     struct dateutil
  67.     {
  68. // Hard-code a "now" date so unit test doesn't change with
  69. // current time.  Because server strings are in Pacific time
  70. // roll this forward 8 hours to compensate.  This represents
  71. // 2009-12-31T00:00:00Z UTC.
  72. dateutil()
  73. : mNow(std::string("2009-12-31T08:00:00Z"))
  74. {
  75. // copied from strings.xml
  76. gString["YearsMonthsOld"] = "[AGEYEARS] [AGEMONTHS] old";
  77. gString["YearsOld"] = "[AGEYEARS] old";
  78. gString["MonthsOld"] = "[AGEMONTHS] old";
  79. gString["WeeksOld"] = "[AGEWEEKS] old";
  80. gString["DaysOld"] = "[AGEDAYS] old";
  81. gString["TodayOld"] = "Joined today";
  82. gCountString[ count_string_t("AgeYears", 1) ]  = "1 year";
  83. gCountString[ count_string_t("AgeYears", 2) ]  = "2 years";
  84. gCountString[ count_string_t("AgeMonths", 1) ] = "1 month";
  85. gCountString[ count_string_t("AgeMonths", 2) ] = "2 months";
  86. gCountString[ count_string_t("AgeMonths", 11) ]= "11 months";
  87. gCountString[ count_string_t("AgeWeeks", 1) ]  = "1 week";
  88. gCountString[ count_string_t("AgeWeeks", 2) ]  = "2 weeks";
  89. gCountString[ count_string_t("AgeWeeks", 3) ]  = "3 weeks";
  90. gCountString[ count_string_t("AgeWeeks", 4) ]  = "4 weeks";
  91. gCountString[ count_string_t("AgeDays", 1) ]   = "1 day";
  92. gCountString[ count_string_t("AgeDays", 2) ]   = "2 days";
  93. }
  94. LLDate mNow;
  95.     };
  96.     
  97. typedef test_group<dateutil> dateutil_t;
  98. typedef dateutil_t::object dateutil_object_t;
  99. tut::dateutil_t tut_dateutil("dateutil");
  100. template<> template<>
  101. void dateutil_object_t::test<1>()
  102. {
  103. set_test_name("Years");
  104. ensure_equals("years + months",
  105. LLDateUtil::ageFromDate("10/30/2007", mNow),
  106. "2 years 2 months old" );
  107. ensure_equals("years",
  108. LLDateUtil::ageFromDate("12/31/2007", mNow),
  109. "2 years old" );
  110. ensure_equals("years",
  111. LLDateUtil::ageFromDate("1/1/2008", mNow),
  112. "1 year 11 months old" );
  113. ensure_equals("single year + one month",
  114. LLDateUtil::ageFromDate("11/30/2008", mNow),
  115. "1 year 1 month old" );
  116. ensure_equals("single year + a bit",
  117. LLDateUtil::ageFromDate("12/12/2008", mNow),
  118. "1 year old" );
  119. ensure_equals("single year",
  120. LLDateUtil::ageFromDate("12/31/2008", mNow),
  121. "1 year old" );
  122.     }
  123. template<> template<>
  124. void dateutil_object_t::test<2>()
  125. {
  126. set_test_name("Months");
  127. ensure_equals("months",
  128. LLDateUtil::ageFromDate("10/30/2009", mNow),
  129. "2 months old" );
  130. ensure_equals("months 2",
  131. LLDateUtil::ageFromDate("10/31/2009", mNow),
  132. "2 months old" );
  133. ensure_equals("single month",
  134. LLDateUtil::ageFromDate("11/30/2009", mNow),
  135. "1 month old" );
  136. }
  137. template<> template<>
  138. void dateutil_object_t::test<3>()
  139. {
  140. set_test_name("Weeks");
  141. ensure_equals("4 weeks",
  142. LLDateUtil::ageFromDate("12/1/2009", mNow),
  143. "4 weeks old" );
  144. ensure_equals("weeks",
  145. LLDateUtil::ageFromDate("12/17/2009", mNow),
  146. "2 weeks old" );
  147. ensure_equals("single week",
  148. LLDateUtil::ageFromDate("12/24/2009", mNow),
  149. "1 week old" );
  150. }
  151. template<> template<>
  152. void dateutil_object_t::test<4>()
  153. {
  154. set_test_name("Days");
  155. ensure_equals("days",
  156. LLDateUtil::ageFromDate("12/29/2009", mNow),
  157. "2 days old" );
  158. ensure_equals("single day",
  159. LLDateUtil::ageFromDate("12/30/2009", mNow),
  160. "1 day old" );
  161. ensure_equals("today",
  162. LLDateUtil::ageFromDate("12/31/2009", mNow),
  163. "Joined today" );
  164. }
  165. template<> template<>
  166. void dateutil_object_t::test<5>()
  167. {
  168. set_test_name("2010 rollover");
  169. LLDate now(std::string("2010-01-04T12:00:00Z"));
  170. ensure_equals("days",
  171. LLDateUtil::ageFromDate("12/13/2009", now),
  172. "3 weeks old" );
  173. }
  174. }