From f31397291b9212701679cd18bbb870ccec3a5732 Mon Sep 17 00:00:00 2001 From: Adam Moss <moss@lindenlab.com> Date: Thu, 15 Oct 2009 16:59:54 +0000 Subject: [PATCH] DEV-41345 turn llmodularmath_tut into a real llmath unit test. --- indra/llmath/CMakeLists.txt | 3 + indra/llmath/llmodularmath.cpp | 36 ++++++++++ indra/llmath/llrect.cpp | 2 + indra/llmath/tests/llmodularmath_test.cpp | 82 +++++++++++++++++++++++ indra/test/CMakeLists.txt | 1 - indra/test/test.cpp | 2 +- 6 files changed, 124 insertions(+), 2 deletions(-) create mode 100644 indra/llmath/llmodularmath.cpp create mode 100644 indra/llmath/tests/llmodularmath_test.cpp diff --git a/indra/llmath/CMakeLists.txt b/indra/llmath/CMakeLists.txt index e8b84eeabdc..e4a10f83106 100644 --- a/indra/llmath/CMakeLists.txt +++ b/indra/llmath/CMakeLists.txt @@ -15,6 +15,7 @@ set(llmath_SOURCE_FILES llcamera.cpp llcoordframe.cpp llline.cpp + llmodularmath.cpp llperlin.cpp llquaternion.cpp llrect.cpp @@ -48,6 +49,7 @@ set(llmath_HEADER_FILES llinterp.h llline.h llmath.h + llmodularmath.h lloctree.h llperlin.h llplane.h @@ -87,6 +89,7 @@ include(LLAddBuildTest) # UNIT TESTS SET(llmath_TEST_SOURCE_FILES llbboxlocal.cpp + llmodularmath.cpp llrect.cpp v2math.cpp v3color.cpp diff --git a/indra/llmath/llmodularmath.cpp b/indra/llmath/llmodularmath.cpp new file mode 100644 index 00000000000..4a6553ae7c3 --- /dev/null +++ b/indra/llmath/llmodularmath.cpp @@ -0,0 +1,36 @@ +/** + * @file llmodularmath.cpp + * @brief LLModularMath class implementation + * + * $LicenseInfo:firstyear=2001&license=viewergpl$ + * + * Copyright (c) 2001-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" + +// implementation is all in the header, this include dep ensures the unit test is rerun if the implementation changes. +#include "llmodularmath.h" diff --git a/indra/llmath/llrect.cpp b/indra/llmath/llrect.cpp index cba76dd2117..14e094792d0 100644 --- a/indra/llmath/llrect.cpp +++ b/indra/llmath/llrect.cpp @@ -1,5 +1,6 @@ /** * @file llrect.cpp + * @brief LLRect class implementation * * $LicenseInfo:firstyear=2001&license=viewergpl$ * @@ -31,4 +32,5 @@ #include "linden_common.h" +// implementation is all in the header, this include dep ensures the unit test is rerun if the implementation changes. #include "llrect.h" diff --git a/indra/llmath/tests/llmodularmath_test.cpp b/indra/llmath/tests/llmodularmath_test.cpp new file mode 100644 index 00000000000..a998a95618b --- /dev/null +++ b/indra/llmath/tests/llmodularmath_test.cpp @@ -0,0 +1,82 @@ +/** + * @file modularmath_tut.cpp + * @author babbage + * @date 2008-09 + * @brief llmodularmath tests + * + * $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 "../llmodularmath.h" + +#include "../test/lltut.h" + +namespace tut +{ + struct modularmath_data + { + }; + typedef test_group<modularmath_data> modularmath_test; + typedef modularmath_test::object modularmath_object; + tut::modularmath_test modularmath_testcase("modularmath"); + + template<> template<> + void modularmath_object::test<1>() + { + // lhs < rhs + const U32 lhs = 0x000001; + const U32 rhs = 0xFFFFFF; + const U32 width = 24; + U32 result = LLModularMath::subtract<width>(lhs, rhs); + ensure_equals("diff(0x000001, 0xFFFFFF, 24)", result, 2); + } + + template<> template<> + void modularmath_object::test<2>() + { + // lhs > rhs + const U32 lhs = 0x000002; + const U32 rhs = 0x000001; + const U32 width = 24; + U32 result = LLModularMath::subtract<width>(lhs, rhs); + ensure_equals("diff(0x000002, 0x000001, 24)", result, 1); + } + + template<> template<> + void modularmath_object::test<3>() + { + // lhs == rhs + const U32 lhs = 0xABCDEF; + const U32 rhs = 0xABCDEF; + const U32 width = 24; + U32 result = LLModularMath::subtract<width>(lhs, rhs); + ensure_equals("diff(0xABCDEF, 0xABCDEF, 24)", result, 0); + } +} diff --git a/indra/test/CMakeLists.txt b/indra/test/CMakeLists.txt index dd11a0bc7ea..db78b7b9ec7 100644 --- a/indra/test/CMakeLists.txt +++ b/indra/test/CMakeLists.txt @@ -44,7 +44,6 @@ set(test_SOURCE_FILES lliohttpserver_tut.cpp llmime_tut.cpp llmessageconfig_tut.cpp - llmodularmath_tut.cpp llpermissions_tut.cpp llpipeutil.cpp llsaleinfo_tut.cpp diff --git a/indra/test/test.cpp b/indra/test/test.cpp index 94766a0ba22..c2e0a11156e 100644 --- a/indra/test/test.cpp +++ b/indra/test/test.cpp @@ -147,7 +147,7 @@ class LLTestCallback : public tut::callback stream << "\tPassed Tests:\t" << mPassedTests; if (mPassedTests == mTotalTests) { - stream << "\t\\o/ yay!!"; + stream << "\tYAY!! \\o/"; } stream << std::endl; -- GitLab