/** * @file stringize_test.cpp * @author Nat Goodspeed * @date 2008-09-12 * @brief Test of stringize.h * * $LicenseInfo:firstyear=2008&license=viewergpl$ * * Copyright (c) 2008-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$ */ /*==========================================================================*| #if LL_WINDOWS #pragma warning (disable : 4675) // "resolved by ADL" -- just as I want! #endif |*==========================================================================*/ // STL headers #include // Precompiled header #include "linden_common.h" // associated header #include "../stringize.h" // std headers // external library headers // other Linden headers #include "../llsd.h" #include "../test/lltut.h" namespace tut { struct stringize_data { stringize_data(): c('c'), s(17), i(34), l(68), f(3.14159265358979f), d(3.14159265358979), // Including a space differentiates this from // boost::lexical_cast, which doesn't handle embedded // spaces so well. abc("abc def") { llsd["i"] = i; llsd["d"] = d; llsd["abc"] = abc; } char c; short s; int i; long l; float f; double d; std::string abc; LLSD llsd; }; typedef test_group stringize_group; typedef stringize_group::object stringize_object; tut::stringize_group strzgrp("stringize"); template<> template<> void stringize_object::test<1>() { ensure_equals(stringize(c), "c"); ensure_equals(stringize(s), "17"); ensure_equals(stringize(i), "34"); ensure_equals(stringize(l), "68"); ensure_equals(stringize(f), "3.14159"); ensure_equals(stringize(d), "3.14159"); ensure_equals(stringize(abc), "abc def"); ensure_equals(stringize(llsd), "{'abc':'abc def','d':r3.14159,'i':i34}"); } template<> template<> void stringize_object::test<2>() { ensure_equals(STRINGIZE("c is " << c), "c is c"); ensure_equals(STRINGIZE(std::setprecision(4) << d), "3.142"); } } // namespace tut