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

游戏引擎

开发平台:

C++ Builder

  1. /** 
  2.  * @file llworldmipmap_test.cpp
  3.  * @author Merov Linden
  4.  * @date 2009-02-03
  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. // Precompiled header: almost always required for newview cpp files
  34. #include "../llviewerprecompiledheaders.h"
  35. // Class to test
  36. #include "../llworldmipmap.h"
  37. // Dependencies
  38. #include "../llviewerimagelist.h"
  39. // Tut header
  40. #include "../test/lltut.h"
  41. // -------------------------------------------------------------------------------------------
  42. // Stubbing: Declarations required to link and run the class being tested
  43. // Notes: 
  44. // * Add here stubbed implementation of the few classes and methods used in the class to be tested
  45. // * Add as little as possible (let the link errors guide you)
  46. // * Do not make any assumption as to how those classes or methods work (i.e. don't copy/paste code)
  47. // * A simulator for a class can be implemented here. Please comment and document thoroughly.
  48. LLViewerImageList::LLViewerImageList() { }
  49. LLViewerImageList::~LLViewerImageList() { }
  50. LLViewerImageList gImageList;
  51. LLViewerImage* LLViewerImageList::getImageFromUrl(const std::string& url,
  52.    BOOL usemipmaps,
  53.    BOOL level_immediate,
  54.    LLGLint internal_format,
  55.    LLGLenum primary_format, 
  56.    const LLUUID& force_id)
  57. { return NULL; }
  58. void LLViewerImage::setBoostLevel(S32 level) { }
  59. // End Stubbing
  60. // -------------------------------------------------------------------------------------------
  61. // -------------------------------------------------------------------------------------------
  62. // TUT
  63. // -------------------------------------------------------------------------------------------
  64. namespace tut
  65. {
  66. // Test wrapper declaration
  67. struct worldmipmap_test
  68. {
  69. // Derived test class
  70. class LLTestWorldMipmap : public LLWorldMipmap
  71. {
  72. // Put here stubbs of virtual methods we shouldn't call all the way down
  73. };
  74. // Instance to be tested
  75. LLTestWorldMipmap* mMap;
  76. // Constructor and destructor of the test wrapper
  77. worldmipmap_test()
  78. {
  79. mMap = new LLTestWorldMipmap;
  80. }
  81. ~worldmipmap_test()
  82. {
  83. delete mMap;
  84. }
  85. };
  86. // Tut templating thingamagic: test group, object and test instance
  87. typedef test_group<worldmipmap_test> worldmipmap_t;
  88. typedef worldmipmap_t::object worldmipmap_object_t;
  89. tut::worldmipmap_t tut_worldmipmap("worldmipmap");
  90. // ---------------------------------------------------------------------------------------
  91. // Test functions
  92. // Notes:
  93. // * Test as many as you possibly can without requiring a full blown simulation of everything
  94. // * The tests are executed in sequence so the test instance state may change between calls
  95. // * Remember that you cannot test private methods with tut
  96. // ---------------------------------------------------------------------------------------
  97. // Test static methods
  98. // Test 1 : scaleToLevel()
  99. template<> template<>
  100. void worldmipmap_object_t::test<1>()
  101. {
  102. S32 level = mMap->scaleToLevel(0.0);
  103. ensure("scaleToLevel() test 1 failed", level == LLWorldMipmap::MAP_LEVELS);
  104. level = mMap->scaleToLevel(LLWorldMipmap::MAP_TILE_SIZE);
  105. ensure("scaleToLevel() test 2 failed", level == 1);
  106. level = mMap->scaleToLevel(10 * LLWorldMipmap::MAP_TILE_SIZE);
  107. ensure("scaleToLevel() test 3 failed", level == 1);
  108. }
  109. // Test 2 : globalToMipmap()
  110. template<> template<>
  111. void worldmipmap_object_t::test<2>()
  112. {
  113. U32 grid_x, grid_y;
  114. mMap->globalToMipmap(1000.f*REGION_WIDTH_METERS, 1000.f*REGION_WIDTH_METERS, 1, &grid_x, &grid_y);
  115. ensure("globalToMipmap() test 1 failed", (grid_x == 1000) && (grid_y == 1000));
  116. mMap->globalToMipmap(0.0, 0.0, LLWorldMipmap::MAP_LEVELS, &grid_x, &grid_y);
  117. ensure("globalToMipmap() test 2 failed", (grid_x == 0) && (grid_y == 0));
  118. }
  119. // Test 3 : getObjectsTile()
  120. template<> template<>
  121. void worldmipmap_object_t::test<3>()
  122. {
  123. // Depends on some inline methods in LLViewerImage... Thinking about how to make this work
  124. // LLPointer<LLViewerImage> img = mMap->getObjectsTile(0, 0, 1);
  125. // ensure("getObjectsTile() test failed", img.isNull());
  126. }
  127. // Test 4 : equalizeBoostLevels()
  128. template<> template<>
  129. void worldmipmap_object_t::test<4>()
  130. {
  131. try
  132. {
  133. mMap->equalizeBoostLevels();
  134. catch (...)
  135. {
  136. fail("equalizeBoostLevels() test failed");
  137. }
  138. }
  139. // Test 5 : dropBoostLevels()
  140. template<> template<>
  141. void worldmipmap_object_t::test<5>()
  142. {
  143. try
  144. {
  145. mMap->dropBoostLevels();
  146. catch (...)
  147. {
  148. fail("dropBoostLevels() test failed");
  149. }
  150. }
  151. // Test 6 : reset()
  152. template<> template<>
  153. void worldmipmap_object_t::test<6>()
  154. {
  155. try
  156. {
  157. mMap->reset();
  158. catch (...)
  159. {
  160. fail("reset() test failed");
  161. }
  162. }
  163. }