137 lines
5.3 KiB
C++
137 lines
5.3 KiB
C++
/**
|
|
* @file stringize_test.cpp
|
|
* @author Nat Goodspeed
|
|
* @date 2008-09-12
|
|
* @brief Test of stringize.h
|
|
*
|
|
* $LicenseInfo:firstyear=2008&license=viewerlgpl$
|
|
* Second Life Viewer Source Code
|
|
* Copyright (C) 2010, Linden Research, Inc.
|
|
*
|
|
* This library is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
* License as published by the Free Software Foundation;
|
|
* version 2.1 of the License only.
|
|
*
|
|
* This library is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
* License along with this library; if not, write to the Free Software
|
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
*
|
|
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
|
|
* $/LicenseInfo$
|
|
*/
|
|
|
|
/*==========================================================================*|
|
|
#if LL_WINDOWS
|
|
#pragma warning (disable : 4675) // "resolved by ADL" -- just as I want!
|
|
#endif
|
|
|*==========================================================================*/
|
|
|
|
// STL headers
|
|
#include <iomanip>
|
|
|
|
// 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<std::string>, which doesn't handle embedded
|
|
// spaces so well.
|
|
abc("abc def")
|
|
{
|
|
llsd["i"] = i;
|
|
llsd["d"] = d;
|
|
llsd["abc"] = abc;
|
|
def = L"def ghi";
|
|
|
|
}
|
|
|
|
char c;
|
|
short s;
|
|
int i;
|
|
long l;
|
|
float f;
|
|
double d;
|
|
std::string abc;
|
|
std::wstring def;
|
|
LLSD llsd;
|
|
};
|
|
typedef test_group<stringize_data> stringize_group;
|
|
typedef stringize_group::object stringize_object;
|
|
tut::stringize_group strzgrp("stringize_h");
|
|
|
|
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(def), "def ghi"); //Will generate LL_WARNS() due to narrowing.
|
|
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");
|
|
}
|
|
|
|
template<> template<>
|
|
void stringize_object::test<3>()
|
|
{
|
|
//Tests rely on validity of wstring_to_utf8str()
|
|
#if LL_WINDOWS // Windows wstring is a 2byte UTF16 type
|
|
ensure_equals(ll_convert<std::string>(wstringize(c)), ll_convert<std::string>(std::wstring(L"c")));
|
|
ensure_equals(ll_convert<std::string>(wstringize(s)), ll_convert<std::string>(std::wstring(L"17")));
|
|
ensure_equals(ll_convert<std::string>(wstringize(i)), ll_convert<std::string>(std::wstring(L"34")));
|
|
ensure_equals(ll_convert<std::string>(wstringize(l)), ll_convert<std::string>(std::wstring(L"68")));
|
|
ensure_equals(ll_convert<std::string>(wstringize(f)), ll_convert<std::string>(std::wstring(L"3.14159")));
|
|
ensure_equals(ll_convert<std::string>(wstringize(d)), ll_convert<std::string>(std::wstring(L"3.14159")));
|
|
ensure_equals(ll_convert<std::string>(wstringize(abc)), ll_convert<std::string>(std::wstring(L"abc def")));
|
|
ensure_equals(ll_convert<std::string>(wstringize(abc)), ll_convert<std::string>(wstringize(abc.c_str())));
|
|
ensure_equals(ll_convert<std::string>(wstringize(def)), ll_convert<std::string>(std::wstring(L"def ghi")));
|
|
#else
|
|
ensure_equals(wstring_to_utf8str(wstringize(c)), wstring_to_utf8str(L"c"));
|
|
ensure_equals(wstring_to_utf8str(wstringize(s)), wstring_to_utf8str(L"17"));
|
|
ensure_equals(wstring_to_utf8str(wstringize(i)), wstring_to_utf8str(L"34"));
|
|
ensure_equals(wstring_to_utf8str(wstringize(l)), wstring_to_utf8str(L"68"));
|
|
ensure_equals(wstring_to_utf8str(wstringize(f)), wstring_to_utf8str(L"3.14159"));
|
|
ensure_equals(wstring_to_utf8str(wstringize(d)), wstring_to_utf8str(L"3.14159"));
|
|
ensure_equals(wstring_to_utf8str(wstringize(abc)), wstring_to_utf8str(L"abc def"));
|
|
ensure_equals(wstring_to_utf8str(wstringize(abc)), wstring_to_utf8str(wstringize(abc.c_str())));
|
|
ensure_equals(wstring_to_utf8str(wstringize(def)), wstring_to_utf8str(L"def ghi"));
|
|
#endif
|
|
// ensure_equals(wstring_to_utf8str(wstringize(llsd)), wstring_to_utf8str(L"{'abc':'abc def','d':r3.14159,'i':i34}"));
|
|
}
|
|
} // namespace tut
|