Files
SingularityViewer/indra/test/llsdmessagereader_tut.cpp
Aleric Inglewood 6848c2df6f Fix underlinkage of libmedia_plugin_webkit.so
Fixed by updating indra/cmake/WebKitLibPlugin.cmake with
version from imprudence.

This commit also contains removal of execute permissions
of source files and configure files, sorry...
2011-05-02 23:13:15 +02:00

330 lines
9.9 KiB
C++

/**
* @file llsdmessagereader_tut.cpp
* @date February 2006
* @brief LLSDMessageReader unit tests
*
* $LicenseInfo:firstyear=2006&license=viewergpl$
*
* Copyright (c) 2006-2009, Linden Research, Inc.
*
* Second Life Viewer Source Code
* The source code in this file ("Source Code") is provided by Linden Lab
* to you under the terms of the GNU General Public License, version 2.0
* ("GPL"), unless you have obtained a separate licensing agreement
* ("Other License"), formally executed by you and Linden Lab. Terms of
* the GPL can be found in doc/GPL-license.txt in this distribution, or
* online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
*
* There are special exceptions to the terms and conditions of the GPL as
* it is applied to this Source Code. View the full text of the exception
* in the file doc/FLOSS-exception.txt in this software distribution, or
* online at
* http://secondlifegrid.net/programs/open_source/licensing/flossexception
*
* By copying, modifying or distributing this software, you acknowledge
* that you have read and understood your obligations described above,
* and agree to abide by those obligations.
*
* ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
* WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
* COMPLETENESS OR PERFORMANCE.
* $/LicenseInfo$
*/
#include <tut/tut.hpp>
#include "linden_common.h"
#include "lltut.h"
#include "v3dmath.h"
#include "v3math.h"
#include "v4math.h"
#include "llquaternion.h"
#include "message.h"
#include "llsdmessagereader.h"
#include "llsdutil.h"
namespace tut
{
struct LLSDMessageReaderTestData {
static void ensureMessageName(const std::string& msg_name,
const LLSD& msg_data,
const std::string& expected_name)
{
LLSDMessageReader msg;
msg.setMessage(LLMessageStringTable::getInstance()->getString(msg_name.c_str()), msg_data);
ensure_equals("Ensure name", std::string(msg.getMessageName()),
expected_name);
}
static void ensureNumberOfBlocks(const LLSD& msg_data,
const std::string& block,
S32 expected_number)
{
LLSDMessageReader msg;
msg.setMessage("fakename", msg_data);
ensure_equals("Ensure number of blocks", msg.getNumberOfBlocks(block.c_str()),
expected_number);
}
static void ensureMessageSize(const LLSD& msg_data,
S32 expected_size)
{
LLSDMessageReader msg;
msg.setMessage("fakename", msg_data);
ensure_equals( "Ensure size", msg.getMessageSize(), expected_size);
}
static void ensureBool(const LLSD& msg_data,
const std::string& block,
const std::string& var,
S32 blocknum,
BOOL expected)
{
LLSDMessageReader msg;
msg.setMessage("fakename", msg_data);
BOOL test_data;
msg.getBOOL(block.c_str(), var.c_str(), test_data, blocknum);
ensure_equals( "Ensure bool field", test_data, expected);
}
};
typedef test_group<LLSDMessageReaderTestData> LLSDMessageReaderTestGroup;
typedef LLSDMessageReaderTestGroup::object LLSDMessageReaderTestObject;
LLSDMessageReaderTestGroup llsdMessageReaderTestGroup("LLSDMessageReader");
template<> template<>
void LLSDMessageReaderTestObject::test<1>()
// construction and test of empty LLSD
{
LLSD message = LLSD::emptyMap();
ensureMessageName("", message, "");
ensureNumberOfBlocks(message, "Fakeblock", 0);
ensureMessageSize(message, 0);
}
template<> template<>
void LLSDMessageReaderTestObject::test<2>()
// construction and test of simple message with one block
{
LLSD message = LLSD::emptyMap();
message["block1"] = LLSD::emptyArray();
message["block1"][0] = LLSD::emptyMap();
message["block1"][0]["Field1"] = 0;
ensureMessageName("name2", message, "name2");
ensureNumberOfBlocks(message, "block1", 1);
ensureMessageSize(message, 0);
}
template<> template<>
void LLSDMessageReaderTestObject::test<3>()
// multiple blocks
{
LLSD message = LLSD::emptyMap();
message["block1"] = LLSD::emptyArray();
BOOL bool_true = TRUE;
BOOL bool_false = FALSE;
message["block1"][0] = LLSD::emptyMap();
message["block1"][0]["BoolField1"] = bool_true;
message["block1"][1] = LLSD::emptyMap();
message["block1"][1]["BoolField1"] = bool_false;
message["block1"][1]["BoolField2"] = bool_true;
ensureMessageName("name3", message, "name3");
ensureBool(message, "block1", "BoolField1", 0, TRUE);
ensureBool(message, "block1", "BoolField1", 1, FALSE);
ensureBool(message, "block1", "BoolField2", 1, TRUE);
ensureNumberOfBlocks(message, "block1", 2);
ensureMessageSize(message, 0);
}
template<typename T>
LLSDMessageReader testType(const T& value)
{
LLSD message = LLSD::emptyMap();
message["block"][0]["var"] = value;
LLSDMessageReader msg;
msg.setMessage("fakename", message);
return msg;
}
template<> template<>
void LLSDMessageReaderTestObject::test<4>()
// S8
{
S8 outValue, inValue = -3;
LLSDMessageReader msg = testType(inValue);
msg.getS8("block", "var", outValue);
ensure_equals("Ensure S8", outValue, inValue);
}
template<> template<>
void
LLSDMessageReaderTestObject::test<5>()
// U8
{
U8 outValue, inValue = 2;
LLSDMessageReader msg = testType(inValue);
msg.getU8("block", "var", outValue);
ensure_equals("Ensure U8", outValue, inValue);
}
template<> template<>
void LLSDMessageReaderTestObject::test<6>()
// S16
{
S16 outValue, inValue = 90;
LLSDMessageReader msg = testType(inValue);
msg.getS16("block", "var", outValue);
ensure_equals("Ensure S16", outValue, inValue);
}
template<> template<>
void LLSDMessageReaderTestObject::test<7>()
// U16
{
U16 outValue, inValue = 3;
LLSDMessageReader msg = testType(inValue);
msg.getU16("block", "var", outValue);
ensure_equals("Ensure S16", outValue, inValue);
}
template<> template<>
void LLSDMessageReaderTestObject::test<8>()
// S32
{
S32 outValue, inValue = 44;
LLSDMessageReader msg = testType(inValue);
msg.getS32("block", "var", outValue);
ensure_equals("Ensure S32", outValue, inValue);
}
template<> template<>
void LLSDMessageReaderTestObject::test<9>()
// F32
{
F32 outValue, inValue = 121.44f;
LLSDMessageReader msg = testType(inValue);
msg.getF32("block", "var", outValue);
ensure_equals("Ensure F32", outValue, inValue);
}
template<> template<>
void LLSDMessageReaderTestObject::test<10>()
// U32
{
U32 outValue, inValue = 88;
LLSD sdValue = ll_sd_from_U32(inValue);
LLSDMessageReader msg = testType(sdValue);
msg.getU32("block", "var", outValue);
ensure_equals("Ensure U32", outValue, inValue);
}
template<> template<>
void LLSDMessageReaderTestObject::test<11>()
// U64
{
U64 outValue, inValue = 121;
LLSD sdValue = ll_sd_from_U64(inValue);
LLSDMessageReader msg = testType(sdValue);
msg.getU64("block", "var", outValue);
ensure_equals("Ensure U64", outValue, inValue);
}
template<> template<>
void LLSDMessageReaderTestObject::test<12>()
// F64
{
F64 outValue, inValue = 3232143.33;
LLSDMessageReader msg = testType(inValue);
msg.getF64("block", "var", outValue);
ensure_equals("Ensure F64", outValue, inValue);
}
template<> template<>
void LLSDMessageReaderTestObject::test<13>()
// String
{
std::string outValue, inValue = "testing";
LLSDMessageReader msg = testType<std::string>(inValue.c_str());
char buffer[MAX_STRING];
msg.getString("block", "var", MAX_STRING, buffer);
outValue = buffer;
ensure_equals("Ensure String", outValue, inValue);
}
template<> template<>
void LLSDMessageReaderTestObject::test<14>()
// Vector3
{
LLVector3 outValue, inValue = LLVector3(1,2,3);
LLSD sdValue = ll_sd_from_vector3(inValue);
LLSDMessageReader msg = testType(sdValue);
msg.getVector3("block", "var", outValue);
ensure_equals("Ensure Vector3", outValue, inValue);
}
template<> template<>
void LLSDMessageReaderTestObject::test<15>()
// Vector4
{
LLVector4 outValue, inValue = LLVector4(1,2,3,4);
LLSD sdValue = ll_sd_from_vector4(inValue);
LLSDMessageReader msg = testType(sdValue);
msg.getVector4("block", "var", outValue);
ensure_equals("Ensure Vector4", outValue, inValue);
}
template<> template<>
void LLSDMessageReaderTestObject::test<16>()
// Vector3d
{
LLVector3d outValue, inValue = LLVector3d(1,2,3);
LLSD sdValue = ll_sd_from_vector3d(inValue);
LLSDMessageReader msg = testType(sdValue);
msg.getVector3d("block", "var", outValue);
ensure_equals("Ensure Vector3d", outValue, inValue);
}
template<> template<>
void LLSDMessageReaderTestObject::test<17>()
// Quaternion
{
LLQuaternion outValue, inValue = LLQuaternion(1,2,3,4);
LLSD sdValue = ll_sd_from_quaternion(inValue);
LLSDMessageReader msg = testType(sdValue);
msg.getQuat("block", "var", outValue);
ensure_equals("Ensure Quaternion", outValue, inValue);
}
template<> template<>
void LLSDMessageReaderTestObject::test<18>()
// UUID
{
LLUUID outValue, inValue;
inValue.generate();
LLSDMessageReader msg = testType(inValue);
msg.getUUID("block", "var", outValue);
ensure_equals("Ensure UUID", outValue, inValue);
}
template<> template<>
void LLSDMessageReaderTestObject::test<19>()
// IPAddr
{
U32 outValue, inValue = 12344556;
LLSD sdValue = ll_sd_from_ipaddr(inValue);
LLSDMessageReader msg = testType(sdValue);
msg.getIPAddr("block", "var", outValue);
ensure_equals("Ensure IPAddr", outValue, inValue);
}
template<> template<>
void LLSDMessageReaderTestObject::test<20>()
// IPPort
{
U16 outValue, inValue = 80;
LLSDMessageReader msg = testType(inValue);
msg.getIPPort("block", "var", outValue);
ensure_equals("Ensure IPPort", outValue, inValue);
}
template<> template<>
void LLSDMessageReaderTestObject::test<21>()
// Binary
{
std::vector<U8> outValue(2), inValue(2);
inValue[0] = 0;
inValue[1] = 1;
LLSDMessageReader msg = testType(inValue);
msg.getBinaryData("block", "var", &(outValue[0]), inValue.size());
ensure_equals("Ensure Binary", outValue, inValue);
}
}