DEV-41343 lljoint unit test - resurrected - this was previously disabled (and old-style monolithic tut)
parent
423f5b0078
commit
226c08130d
|
|
@ -75,3 +75,13 @@ set_source_files_properties(${llcharacter_HEADER_FILES}
|
|||
list(APPEND llcharacter_SOURCE_FILES ${llcharacter_HEADER_FILES})
|
||||
|
||||
add_library (llcharacter ${llcharacter_SOURCE_FILES})
|
||||
|
||||
|
||||
# Add tests
|
||||
include(LLAddBuildTest)
|
||||
# UNIT TESTS
|
||||
SET(llcharacter_TEST_SOURCE_FILES
|
||||
lljoint.cpp
|
||||
)
|
||||
LL_ADD_PROJECT_UNIT_TESTS(llcharacter "${llcharacter_TEST_SOURCE_FILES}")
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,246 @@
|
|||
/**
|
||||
* @file lljoint_tut.cpp
|
||||
* @author Adroit
|
||||
* @date 2007-03
|
||||
* @brief lljoint test cases.
|
||||
*
|
||||
* $LicenseInfo:firstyear=2007&license=viewergpl$
|
||||
*
|
||||
* Copyright (c) 2007-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 "linden_common.h"
|
||||
#include "m4math.h"
|
||||
#include "v3math.h"
|
||||
|
||||
#include "../lljoint.h"
|
||||
|
||||
#include "../test/lltut.h"
|
||||
|
||||
|
||||
namespace tut
|
||||
{
|
||||
struct lljoint_data
|
||||
{
|
||||
};
|
||||
typedef test_group<lljoint_data> lljoint_test;
|
||||
typedef lljoint_test::object lljoint_object;
|
||||
tut::lljoint_test lljoint_testcase("lljoint");
|
||||
|
||||
template<> template<>
|
||||
void lljoint_object::test<1>()
|
||||
{
|
||||
LLJoint lljoint;
|
||||
LLJoint* jnt = lljoint.getParent();
|
||||
ensure("getParent() failed ", (NULL == jnt));
|
||||
ensure("getRoot() failed ", (&lljoint == lljoint.getRoot()));
|
||||
}
|
||||
|
||||
template<> template<>
|
||||
void lljoint_object::test<2>()
|
||||
{
|
||||
std::string str = "LLJoint";
|
||||
LLJoint parent(str), child;
|
||||
child.setup(str, &parent);
|
||||
LLJoint* jnt = child.getParent();
|
||||
ensure("setup() failed ", (&parent == jnt));
|
||||
}
|
||||
|
||||
template<> template<>
|
||||
void lljoint_object::test<3>()
|
||||
{
|
||||
LLJoint parent, child;
|
||||
std::string str = "LLJoint";
|
||||
child.setup(str, &parent);
|
||||
LLJoint* jnt = parent.findJoint(str);
|
||||
ensure("findJoint() failed ", (&child == jnt));
|
||||
}
|
||||
|
||||
template<> template<>
|
||||
void lljoint_object::test<4>()
|
||||
{
|
||||
LLJoint parent;
|
||||
std::string str1 = "LLJoint", str2;
|
||||
parent.setName(str1);
|
||||
str2 = parent.getName();
|
||||
ensure("setName() failed ", (str1 == str2));
|
||||
}
|
||||
|
||||
template<> template<>
|
||||
void lljoint_object::test<5>()
|
||||
{
|
||||
LLJoint lljoint;
|
||||
LLVector3 vec3(2.3f,30.f,10.f);
|
||||
lljoint.setPosition(vec3);
|
||||
LLVector3 pos = lljoint.getPosition();
|
||||
ensure("setPosition()/getPosition() failed ", (vec3 == pos));
|
||||
}
|
||||
|
||||
template<> template<>
|
||||
void lljoint_object::test<6>()
|
||||
{
|
||||
LLJoint lljoint;
|
||||
LLVector3 vec3(2.3f,30.f,10.f);
|
||||
lljoint.setWorldPosition(vec3);
|
||||
LLVector3 pos = lljoint.getWorldPosition();
|
||||
ensure("1:setWorldPosition()/getWorldPosition() failed ", (vec3 == pos));
|
||||
LLVector3 lastPos = lljoint.getLastWorldPosition();
|
||||
ensure("2:getLastWorldPosition failed ", (vec3 == lastPos));
|
||||
}
|
||||
|
||||
template<> template<>
|
||||
void lljoint_object::test<7>()
|
||||
{
|
||||
LLJoint lljoint("LLJoint");
|
||||
LLQuaternion q(2.3f,30.f,10.f,1.f);
|
||||
lljoint.setRotation(q);
|
||||
LLQuaternion rot = lljoint.getRotation();
|
||||
ensure("setRotation()/getRotation() failed ", (q == rot));
|
||||
}
|
||||
template<> template<>
|
||||
void lljoint_object::test<8>()
|
||||
{
|
||||
LLJoint lljoint("LLJoint");
|
||||
LLQuaternion q(2.3f,30.f,10.f,1.f);
|
||||
lljoint.setWorldRotation(q);
|
||||
LLQuaternion rot = lljoint.getWorldRotation();
|
||||
ensure("1:setWorldRotation()/getWorldRotation() failed ", (q == rot));
|
||||
LLQuaternion lastRot = lljoint.getLastWorldRotation();
|
||||
ensure("2:getLastWorldRotation failed ", (q == lastRot));
|
||||
}
|
||||
|
||||
template<> template<>
|
||||
void lljoint_object::test<9>()
|
||||
{
|
||||
LLJoint lljoint;
|
||||
LLVector3 vec3(2.3f,30.f,10.f);
|
||||
lljoint.setScale(vec3);
|
||||
LLVector3 scale = lljoint.getScale();
|
||||
ensure("setScale()/getScale failed ", (vec3 == scale));
|
||||
}
|
||||
|
||||
template<> template<>
|
||||
void lljoint_object::test<10>()
|
||||
{
|
||||
LLJoint lljoint("LLJoint");
|
||||
LLMatrix4 mat;
|
||||
mat.setIdentity();
|
||||
lljoint.setWorldMatrix(mat);//giving warning setWorldMatrix not correctly implemented;
|
||||
LLMatrix4 mat4 = lljoint.getWorldMatrix();
|
||||
ensure("setWorldMatrix()/getWorldMatrix failed ", (mat4 == mat));
|
||||
}
|
||||
|
||||
template<> template<>
|
||||
void lljoint_object::test<11>()
|
||||
{
|
||||
LLJoint lljoint("parent");
|
||||
S32 joint_num = 12;
|
||||
lljoint.setJointNum(joint_num);
|
||||
S32 jointNum = lljoint.getJointNum();
|
||||
ensure("setJointNum()/getJointNum failed ", (jointNum == joint_num));
|
||||
}
|
||||
|
||||
template<> template<>
|
||||
void lljoint_object::test<12>()
|
||||
{
|
||||
LLJoint lljoint;
|
||||
LLVector3 vec3(2.3f,30.f,10.f);
|
||||
lljoint.setSkinOffset(vec3);
|
||||
LLVector3 offset = lljoint.getSkinOffset();
|
||||
ensure("1:setSkinOffset()/getSkinOffset() failed ", (vec3 == offset));
|
||||
}
|
||||
|
||||
template<> template<>
|
||||
void lljoint_object::test<13>()
|
||||
{
|
||||
LLJoint lljointgp("gparent");
|
||||
LLJoint lljoint("parent");
|
||||
LLJoint lljoint1("child1");
|
||||
lljoint.addChild(&lljoint1);
|
||||
LLJoint lljoint2("child2");
|
||||
lljoint.addChild(&lljoint2);
|
||||
LLJoint lljoint3("child3");
|
||||
lljoint.addChild(&lljoint3);
|
||||
|
||||
LLJoint* jnt = NULL;
|
||||
jnt = lljoint2.getParent();
|
||||
ensure("addChild() failed ", (&lljoint == jnt));
|
||||
LLJoint* jnt1 = lljoint.findJoint("child3");
|
||||
ensure("findJoint() failed ", (&lljoint3 == jnt1));
|
||||
lljoint.removeChild(&lljoint3);
|
||||
LLJoint* jnt2 = lljoint.findJoint("child3");
|
||||
ensure("removeChild() failed ", (NULL == jnt2));
|
||||
|
||||
lljointgp.addChild(&lljoint);
|
||||
ensure("GetParent() failed ", (&lljoint== lljoint2.getParent()));
|
||||
ensure("getRoot() failed ", (&lljointgp == lljoint2.getRoot()));
|
||||
|
||||
ensure("getRoot() failed ", &lljoint1 == lljoint.findJoint("child1"));
|
||||
|
||||
lljointgp.removeAllChildren();
|
||||
// parent removed from grandparent - so should not be able to locate child
|
||||
ensure("removeAllChildren() failed ", (NULL == lljointgp.findJoint("child1")));
|
||||
// it should still exist in parent though
|
||||
ensure("removeAllChildren() failed ", (&lljoint1 == lljoint.findJoint("child1")));
|
||||
}
|
||||
|
||||
template<> template<>
|
||||
void lljoint_object::test<14>()
|
||||
{
|
||||
LLJoint lljointgp("gparent");
|
||||
|
||||
LLJoint llparent1("parent1");
|
||||
LLJoint llparent2("parent2");
|
||||
|
||||
LLJoint llchild("child1");
|
||||
LLJoint lladoptedchild("child2");
|
||||
llparent1.addChild(&llchild);
|
||||
llparent1.addChild(&lladoptedchild);
|
||||
|
||||
llparent2.addChild(&lladoptedchild);
|
||||
ensure("1. addChild failed to remove prior parent", lladoptedchild.getParent() == &llparent2);
|
||||
ensure("2. addChild failed to remove prior parent", llparent1.findJoint("child2") == NULL);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Test cases for the following not added. They perform operations
|
||||
on underlying LLXformMatrix and LLVector3 elements which have
|
||||
been unit tested separately.
|
||||
Unit Testing these functions will basically require re-implementing
|
||||
logic of these function in the test case itself
|
||||
|
||||
1) void WorldMatrixChildren();
|
||||
2) void updateWorldMatrixParent();
|
||||
3) void updateWorldPRSParent();
|
||||
4) void updateWorldMatrix();
|
||||
5) LLXformMatrix *getXform() { return &mXform; }
|
||||
6) void setConstraintSilhouette(LLDynamicArray<LLVector3>& silhouette);
|
||||
7) void clampRotation(LLQuaternion old_rot, LLQuaternion new_rot);
|
||||
|
||||
*/
|
||||
}
|
||||
|
||||
|
|
@ -42,7 +42,6 @@ set(test_SOURCE_FILES
|
|||
llhttpnode_tut.cpp
|
||||
llinventoryparcel_tut.cpp
|
||||
lliohttpserver_tut.cpp
|
||||
lljoint_tut.cpp
|
||||
llmime_tut.cpp
|
||||
llmessageconfig_tut.cpp
|
||||
llmodularmath_tut.cpp
|
||||
|
|
|
|||
Loading…
Reference in New Issue