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

游戏引擎

开发平台:

C++ Builder

  1. /** 
  2.  * @file llapp_tut.cpp
  3.  * @author Phoenix
  4.  * @date 2006-09-12
  5.  *
  6.  * $LicenseInfo:firstyear=2006&license=viewergpl$
  7.  * 
  8.  * Copyright (c) 2006-2010, Linden Research, Inc.
  9.  * 
  10.  * Second Life Viewer Source Code
  11.  * The source code in this file ("Source Code") is provided by Linden Lab
  12.  * to you under the terms of the GNU General Public License, version 2.0
  13.  * ("GPL"), unless you have obtained a separate licensing agreement
  14.  * ("Other License"), formally executed by you and Linden Lab.  Terms of
  15.  * the GPL can be found in doc/GPL-license.txt in this distribution, or
  16.  * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
  17.  * 
  18.  * There are special exceptions to the terms and conditions of the GPL as
  19.  * it is applied to this Source Code. View the full text of the exception
  20.  * in the file doc/FLOSS-exception.txt in this software distribution, or
  21.  * online at
  22.  * http://secondlifegrid.net/programs/open_source/licensing/flossexception
  23.  * 
  24.  * By copying, modifying or distributing this software, you acknowledge
  25.  * that you have read and understood your obligations described above,
  26.  * and agree to abide by those obligations.
  27.  * 
  28.  * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
  29.  * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
  30.  * COMPLETENESS OR PERFORMANCE.
  31.  * $/LicenseInfo$
  32.  */
  33. #include <tut/tut.hpp>
  34. #include "linden_common.h"
  35. #include "llapp.h"
  36. #include "lltut.h"
  37. namespace tut
  38. {
  39. struct application
  40. {
  41. class LLTestApp : public LLApp
  42. {
  43. public:
  44. virtual bool init() { return true; }
  45. virtual bool cleanup() { return true; }
  46. virtual bool mainLoop() { return true; }
  47. };
  48. LLTestApp* mApp;
  49. application()
  50. {
  51. mApp = new LLTestApp;
  52. }
  53. ~application()
  54. {
  55. delete mApp;
  56. }
  57. };
  58. typedef test_group<application> application_t;
  59. typedef application_t::object application_object_t;
  60. tut::application_t tut_application("application");
  61. template<> template<>
  62. void application_object_t::test<1>()
  63. {
  64. LLSD defaults;
  65. defaults["template"] = "../../../scripts/messages/message_template.msg";
  66. defaults["configdir"] = ".";
  67. defaults["db_host"] = "mysql.shakti.lindenlab.com";
  68. defaults["db_user"] = "linden";
  69. defaults["db_password"] = "gomez";
  70. defaults["datadir"] = "data";
  71. mApp->setOptionData(LLApp::PRIORITY_DEFAULT, defaults);
  72. LLSD db_user_sd = mApp->getOption("db_user");
  73. ensure_equals("data type", db_user_sd.type(), LLSD::TypeString);
  74. ensure_equals(
  75. "data value", db_user_sd.asString(), std::string("linden"));
  76. }
  77. template<> template<>
  78. void application_object_t::test<2>()
  79. {
  80. const int ARGC = 13;
  81. char* ARGV[ARGC] =
  82. {
  83. "", // argv[0] is usually the application name
  84. "-crashcount",
  85. "2",
  86. "-space",
  87. "spaceserver.grid.lindenlab.com",
  88. "-db_host",
  89. "localhost",
  90. "--allowlslhttprequests",
  91. "-asset-uri",
  92. "http://asset.grid.lindenlab.com/assets",
  93. "-data",
  94. "127.0.0.1",
  95. "--smtp"
  96. };
  97. bool ok = mApp->parseCommandOptions(ARGC, ARGV);
  98. ensure("command line parsed", ok);
  99. ensure_equals(
  100. "crashcount", mApp->getOption("crashcount").asInteger(), 2);
  101. ensure_equals(
  102. "space",
  103. mApp->getOption("space").asString(),
  104. std::string("spaceserver.grid.lindenlab.com"));
  105. ensure_equals(
  106. "db_host",
  107. mApp->getOption("db_host").asString(),
  108. std::string("localhost"));
  109. ensure("allowlshlttprequests", mApp->getOption("smtp"));
  110. ensure_equals(
  111. "asset-uri",
  112. mApp->getOption("asset-uri").asString(),
  113. std::string("http://asset.grid.lindenlab.com/assets"));
  114. ensure_equals(
  115. "data",
  116. mApp->getOption("data").asString(),
  117. std::string("127.0.0.1"));
  118. ensure("smtp", mApp->getOption("smtp"));
  119. }
  120. template<> template<>
  121. void application_object_t::test<3>()
  122. {
  123. const int ARGC = 4;
  124. char* ARGV[ARGC] =
  125. {
  126. "", // argv[0] is usually the application name
  127. "crashcount",
  128. "2",
  129. "--space"
  130. };
  131. bool ok = mApp->parseCommandOptions(ARGC, ARGV);
  132. ensure("command line parse failure", !ok);
  133. }
  134. template<> template<>
  135. void application_object_t::test<4>()
  136. {
  137. const int ARGC = 4;
  138. char* ARGV[ARGC] =
  139. {
  140. "", // argv[0] is usually the application name
  141. "--crashcount",
  142. "2",
  143. "space"
  144. };
  145. bool ok = mApp->parseCommandOptions(ARGC, ARGV);
  146. ensure("command line parse failure", !ok);
  147. }
  148. template<> template<>
  149. void application_object_t::test<5>()
  150. {
  151. LLSD options;
  152. options["boolean-test"] = true;
  153. mApp->setOptionData(LLApp::PRIORITY_GENERAL_CONFIGURATION, options);
  154. ensure("bool set", mApp->getOption("boolean-test").asBoolean());
  155. options["boolean-test"] = false;
  156. mApp->setOptionData(LLApp::PRIORITY_RUNTIME_OVERRIDE, options);
  157. ensure("bool unset", !mApp->getOption("boolean-test").asBoolean());
  158. }
  159. }