summaryrefslogtreecommitdiff
path: root/indra/newview/tests
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/tests')
-rw-r--r--indra/newview/tests/lldateutil_test.cpp6
-rw-r--r--indra/newview/tests/llviewernetwork_test.cpp10
-rw-r--r--indra/newview/tests/llworldmap_test.cpp73
3 files changed, 80 insertions, 9 deletions
diff --git a/indra/newview/tests/lldateutil_test.cpp b/indra/newview/tests/lldateutil_test.cpp
index acbf019034..3e2e5e70a2 100644
--- a/indra/newview/tests/lldateutil_test.cpp
+++ b/indra/newview/tests/lldateutil_test.cpp
@@ -34,16 +34,16 @@
#include "lltrans.h"
#include "llui.h"
-#include <map>
+#include <unordered_map>
// Baked-in return values for getString()
-std::map< std::string, std::string, std::less<>> gString;
+std::unordered_map< std::string, std::string, ll::string_hash, std::equal_to<>> gString;
// Baked-in return values for getCountString()
// map of pairs of input xml_desc and integer count
typedef std::pair< std::string, int > count_string_t;
-std::map< count_string_t, std::string > gCountString;
+std::map<count_string_t, std::string> gCountString;
std::string LLTrans::getString(const std::string_view xml_desc, const LLStringUtil::format_map_t& args, bool def_string)
{
diff --git a/indra/newview/tests/llviewernetwork_test.cpp b/indra/newview/tests/llviewernetwork_test.cpp
index 94cf0fcf10..1cbb8b50eb 100644
--- a/indra/newview/tests/llviewernetwork_test.cpp
+++ b/indra/newview/tests/llviewernetwork_test.cpp
@@ -236,7 +236,7 @@ namespace tut
std::string("https://secondlife.com/helpers/"));
ensure_equals("Agni login page",
LLGridManager::getInstance()->getLoginPage("util.agni.lindenlab.com"),
- std::string("https://viewer-splash.secondlife.com/"));
+ std::string("https://viewer-splash-v2.secondlife.com/"));
ensure("Agni is a system grid",
LLGridManager::getInstance()->isSystemGrid("util.agni.lindenlab.com"));
@@ -261,7 +261,7 @@ namespace tut
std::string("https://secondlife.aditi.lindenlab.com/helpers/"));
ensure_equals("Aditi login page",
LLGridManager::getInstance()->getLoginPage("util.aditi.lindenlab.com"),
- std::string("https://viewer-splash.secondlife.com/"));
+ std::string("https://viewer-splash-v2.secondlife.com/"));
ensure("Aditi is a system grid",
LLGridManager::getInstance()->isSystemGrid("util.aditi.lindenlab.com"));
}
@@ -309,7 +309,7 @@ namespace tut
std::string("https://secondlife.com/helpers/"));
ensure_equals("Agni login page",
LLGridManager::getInstance()->getLoginPage("util.agni.lindenlab.com"),
- std::string("https://viewer-splash.secondlife.com/"));
+ std::string("https://viewer-splash-v2.secondlife.com/"));
ensure("Agni is a system grid",
LLGridManager::getInstance()->isSystemGrid("util.agni.lindenlab.com"));
@@ -333,7 +333,7 @@ namespace tut
std::string("https://secondlife.aditi.lindenlab.com/helpers/"));
ensure_equals("Aditi login page",
LLGridManager::getInstance()->getLoginPage("util.aditi.lindenlab.com"),
- std::string("https://viewer-splash.secondlife.com/"));
+ std::string("https://viewer-splash-v2.secondlife.com/"));
ensure("Aditi is a system grid",
LLGridManager::getInstance()->isSystemGrid("util.aditi.lindenlab.com"));
@@ -422,7 +422,7 @@ namespace tut
std::string("https://secondlife.com/helpers/"));
ensure_equals("getLoginPage",
LLGridManager::getInstance()->getLoginPage(),
- std::string("https://viewer-splash.secondlife.com/"));
+ std::string("https://viewer-splash-v2.secondlife.com/"));
ensure_equals("update url base for Agni", // relies on agni being the default
std::string("https://update.secondlife.com/update"),
LLGridManager::getInstance()->getUpdateServiceURL());
diff --git a/indra/newview/tests/llworldmap_test.cpp b/indra/newview/tests/llworldmap_test.cpp
index 60172b3960..692dd5638c 100644
--- a/indra/newview/tests/llworldmap_test.cpp
+++ b/indra/newview/tests/llworldmap_test.cpp
@@ -54,10 +54,22 @@ LLViewerFetchedTexture* LLViewerTextureManager::getFetchedTexture(const LLUUID&,
LLGLint, LLGLenum, LLHost ) { return NULL; }
// Stub related map calls
+
+// Records each sendMapBlockRequest call for inspection in tests
+struct MapBlockRequest
+{
+ U16 min_x, min_y, max_x, max_y;
+};
+static std::vector<MapBlockRequest> gMapBlockRequests;
+
LLWorldMapMessage::LLWorldMapMessage() { }
LLWorldMapMessage::~LLWorldMapMessage() { }
void LLWorldMapMessage::sendItemRequest(U32 type, U64 handle) { }
-void LLWorldMapMessage::sendMapBlockRequest(U16 min_x, U16 min_y, U16 max_x, U16 max_y, bool return_nonexistent) { }
+void LLWorldMapMessage::sendMapBlockRequest(U16 min_x, U16 min_y, U16 max_x, U16 max_y, bool return_nonexistent)
+{
+ MapBlockRequest req = { min_x, min_y, max_x, max_y };
+ gMapBlockRequests.push_back(req);
+}
LLWorldMipmap::LLWorldMipmap() { }
LLWorldMipmap::~LLWorldMipmap() { }
@@ -518,4 +530,63 @@ namespace tut
mWorld->cancelTracking();
ensure("LLWorldMap::cancelTracking() at end test failed", mWorld->isTracking() == false);
}
+ // Test updateRegions() request grouping, size limits, and bounds
+ template<> template<>
+ void worldmap_object_t::test<4>()
+ {
+ // Test 27 : 1x1 block (4x4 = 16 regions) - single small request within bounds
+ mWorld->reset();
+ gMapBlockRequests.clear();
+ mWorld->updateRegions(0, 0, 3, 3);
+ ensure("updateRegions 1x1 block: expected 1 request", gMapBlockRequests.size() == 1);
+ {
+ const MapBlockRequest& req = gMapBlockRequests[0];
+ ensure("updateRegions 1x1 block: min_x", req.min_x == 0);
+ ensure("updateRegions 1x1 block: min_y", req.min_y == 0);
+ ensure("updateRegions 1x1 block: max_x", req.max_x == 3);
+ ensure("updateRegions 1x1 block: max_y", req.max_y == 3);
+ S32 regions = (req.max_x - req.min_x + 1) * (req.max_y - req.min_y + 1);
+ ensure("updateRegions 1x1 block: must not exceed 64 regions", regions <= 64);
+ }
+
+ // Test 28 : 2x2 blocks (8x8 = 64 regions) - single request at the 64-region limit
+ mWorld->reset();
+ gMapBlockRequests.clear();
+ mWorld->updateRegions(0, 0, 7, 7);
+ ensure("updateRegions 2x2 blocks: expected 1 request", gMapBlockRequests.size() == 1);
+ {
+ const MapBlockRequest& req = gMapBlockRequests[0];
+ ensure("updateRegions 2x2 blocks: min_x", req.min_x == 0);
+ ensure("updateRegions 2x2 blocks: min_y", req.min_y == 0);
+ ensure("updateRegions 2x2 blocks: max_x", req.max_x == 7);
+ ensure("updateRegions 2x2 blocks: max_y", req.max_y == 7);
+ S32 regions = (req.max_x - req.min_x + 1) * (req.max_y - req.min_y + 1);
+ ensure("updateRegions 2x2 blocks: must not exceed 64 regions", regions <= 64);
+ }
+
+ // Test 29 : 4x4 blocks (16x16 = 256 total regions) - must split into multiple requests
+ // each spanning a 4x1 strip (64 regions), none exceeding the server limit
+ mWorld->reset();
+ gMapBlockRequests.clear();
+ mWorld->updateRegions(0, 0, 15, 15);
+ ensure("updateRegions 4x4 blocks: expected 4 requests", gMapBlockRequests.size() == 4);
+ for (size_t i = 0; i < gMapBlockRequests.size(); ++i)
+ {
+ const MapBlockRequest& req = gMapBlockRequests[i];
+ S32 regions = (req.max_x - req.min_x + 1) * (req.max_y - req.min_y + 1);
+ ensure("updateRegions 4x4 blocks: each request must not exceed 64 regions", regions <= 64);
+ // Requests must stay within the requested area (0..15)
+ ensure("updateRegions 4x4 blocks: max_x in bounds", req.max_x <= 15);
+ ensure("updateRegions 4x4 blocks: max_y in bounds", req.max_y <= 15);
+ }
+ // Each request covers one horizontal strip of 4 blocks (rows 0..3, 4..7, 8..11, 12..15)
+ ensure("updateRegions 4x4 blocks: request[0] min_y", gMapBlockRequests[0].min_y == 0);
+ ensure("updateRegions 4x4 blocks: request[0] max_y", gMapBlockRequests[0].max_y == 3);
+ ensure("updateRegions 4x4 blocks: request[1] min_y", gMapBlockRequests[1].min_y == 4);
+ ensure("updateRegions 4x4 blocks: request[1] max_y", gMapBlockRequests[1].max_y == 7);
+ ensure("updateRegions 4x4 blocks: request[2] min_y", gMapBlockRequests[2].min_y == 8);
+ ensure("updateRegions 4x4 blocks: request[2] max_y", gMapBlockRequests[2].max_y == 11);
+ ensure("updateRegions 4x4 blocks: request[3] min_y", gMapBlockRequests[3].min_y == 12);
+ ensure("updateRegions 4x4 blocks: request[3] max_y", gMapBlockRequests[3].max_y == 15);
+ }
}