diff options
Diffstat (limited to 'indra/newview/tests')
| -rw-r--r-- | indra/newview/tests/llcapabilitylistener_test.cpp | 271 | ||||
| -rw-r--r-- | indra/newview/tests/llhttpretrypolicy_test.cpp | 12 | ||||
| -rw-r--r-- | indra/newview/tests/llmediadataclient_test.cpp | 3 | ||||
| -rw-r--r-- | indra/newview/tests/llremoteparcelrequest_test.cpp | 2 | ||||
| -rw-r--r-- | indra/newview/tests/lltranslate_test.cpp | 340 | 
5 files changed, 10 insertions, 618 deletions
| diff --git a/indra/newview/tests/llcapabilitylistener_test.cpp b/indra/newview/tests/llcapabilitylistener_test.cpp deleted file mode 100644 index bde991a01e..0000000000 --- a/indra/newview/tests/llcapabilitylistener_test.cpp +++ /dev/null @@ -1,271 +0,0 @@ -/** - * @file   llcapabilitylistener_test.cpp - * @author Nat Goodspeed - * @date   2008-12-31 - * @brief  Test for llcapabilitylistener.cpp. - *  - * $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$ - */ - -// Precompiled header -#include "../llviewerprecompiledheaders.h" -// Own header -#include "../llcapabilitylistener.h" -// STL headers -#include <stdexcept> -#include <map> -#include <vector> -// std headers -// external library headers -#include "boost/bind.hpp" -// other Linden headers -#include "../test/lltut.h" -#include "../llcapabilityprovider.h" -#include "lluuid.h" -#include "tests/networkio.h" -#include "tests/commtest.h" -#include "tests/wrapllerrs.h" -#include "message.h" -#include "stringize.h" - -#if defined(LL_WINDOWS) -#pragma warning(disable: 4355)      // using 'this' in base-class ctor initializer expr -#endif - -/***************************************************************************** -*   TestCapabilityProvider -*****************************************************************************/ -struct TestCapabilityProvider: public LLCapabilityProvider -{ -    TestCapabilityProvider(const LLHost& host): -        mHost(host) -    {} - -    std::string getCapability(const std::string& cap) const -    { -        CapMap::const_iterator found = mCaps.find(cap); -        if (found != mCaps.end()) -            return found->second; -        // normal LLViewerRegion lookup failure mode -        return ""; -    } -    void setCapability(const std::string& cap, const std::string& url) -    { -        mCaps[cap] = url; -    } -    const LLHost& getHost() const { return mHost; } -    std::string getDescription() const { return "TestCapabilityProvider"; } - -    LLHost mHost; -    typedef std::map<std::string, std::string> CapMap; -    CapMap mCaps; -}; - -/***************************************************************************** -*   Dummy LLMessageSystem methods -*****************************************************************************/ -/*==========================================================================*| -// This doesn't work because we're already linking in llmessage.a, and we get -// duplicate-symbol errors from the linker. Perhaps if I wanted to go through -// the exercise of providing dummy versions of every single symbol defined in -// message.o -- maybe some day. -typedef std::vector< std::pair<std::string, std::string> > StringPairVector; -StringPairVector call_history; - -S32 LLMessageSystem::sendReliable(const LLHost& host) -{ -    call_history.push_back(StringPairVector::value_type("sendReliable", stringize(host))); -    return 0; -} -|*==========================================================================*/ - -/***************************************************************************** -*   TUT -*****************************************************************************/ -namespace tut -{ -    struct llcapears_data: public commtest_data -    { -        TestCapabilityProvider provider; -        LLCapabilityListener regionListener; -        LLEventPump& regionPump; - -        llcapears_data(): -            provider(host), -            regionListener("testCapabilityListener", NULL, provider, LLUUID(), LLUUID()), -            regionPump(regionListener.getCapAPI()) -        { -            LLCurl::initClass(); -            provider.setCapability("good", server + "capability-test"); -            provider.setCapability("fail", server + "fail"); -        } -    }; -    typedef test_group<llcapears_data> llcapears_group; -    typedef llcapears_group::object llcapears_object; -    llcapears_group llsdmgr("llcapabilitylistener"); - -    template<> template<> -    void llcapears_object::test<1>() -    { -        LLSD request, body; -        body["data"] = "yes"; -        request["payload"] = body; -        request["reply"] = replyPump.getName(); -        request["error"] = errorPump.getName(); -        std::string threw; -        try -        { -            WrapLLErrs capture; -            regionPump.post(request); -        } -        catch (const WrapLLErrs::FatalException& e) -        { -            threw = e.what(); -        } -        ensure_contains("missing capability name", threw, "without 'message' key"); -    } - -    template<> template<> -    void llcapears_object::test<2>() -    { -        LLSD request, body; -        body["data"] = "yes"; -        request["message"] = "good"; -        request["payload"] = body; -        request["reply"] = replyPump.getName(); -        request["error"] = errorPump.getName(); -        regionPump.post(request); -        ensure("got response", netio.pump()); -        ensure("success response", success); -        ensure_equals(result["reply"].asString(), "success"); - -        body["status"] = 499; -        body["reason"] = "custom error message"; -        request["message"] = "fail"; -        request["payload"] = body; -        regionPump.post(request); -        ensure("got response", netio.pump()); -        ensure("failure response", ! success); -        ensure_equals(result["status"].asInteger(), body["status"].asInteger()); -        ensure_equals(result["reason"].asString(),  body["reason"].asString()); -    } - -    template<> template<> -    void llcapears_object::test<3>() -    { -        LLSD request, body; -        body["data"] = "yes"; -        request["message"] = "unknown"; -        request["payload"] = body; -        request["reply"] = replyPump.getName(); -        request["error"] = errorPump.getName(); -        std::string threw; -        try -        { -            WrapLLErrs capture; -            regionPump.post(request); -        } -        catch (const WrapLLErrs::FatalException& e) -        { -            threw = e.what(); -        } -        ensure_contains("bad capability name", threw, "unsupported capability"); -    } - -    struct TestMapper: public LLCapabilityListener::CapabilityMapper -    { -        // Instantiator gets to specify whether mapper expects a reply. -        // I'd really like to be able to test CapabilityMapper::buildMessage() -        // functionality, too, but -- even though LLCapabilityListener accepts -        // the LLMessageSystem* that it passes to CapabilityMapper -- -        // LLMessageSystem::sendReliable(const LLHost&) isn't virtual, so it's -        // not helpful to pass a subclass instance. I suspect that making any -        // LLMessageSystem methods virtual would provoke howls of outrage, -        // given how heavily it's used. Nor can I just provide a local -        // definition of LLMessageSystem::sendReliable(const LLHost&) because -        // we're already linking in the rest of message.o via llmessage.a, and -        // that produces duplicate-symbol link errors. -        TestMapper(const std::string& replyMessage = std::string()): -            LLCapabilityListener::CapabilityMapper("test", replyMessage) -        {} -        virtual void buildMessage(LLMessageSystem* msg, -                                  const LLUUID& agentID, -                                  const LLUUID& sessionID, -                                  const std::string& capabilityName, -                                  const LLSD& payload) const -        { -            msg->newMessageFast(_PREHASH_SetStartLocationRequest); -            msg->nextBlockFast( _PREHASH_AgentData); -            msg->addUUIDFast(_PREHASH_AgentID, agentID); -            msg->addUUIDFast(_PREHASH_SessionID, sessionID); -            msg->nextBlockFast( _PREHASH_StartLocationData); -            // corrected by sim -            msg->addStringFast(_PREHASH_SimName, ""); -            msg->addU32Fast(_PREHASH_LocationID, payload["HomeLocation"]["LocationId"].asInteger()); -/*==========================================================================*| -            msg->addVector3Fast(_PREHASH_LocationPos, -                                ll_vector3_from_sdmap(payload["HomeLocation"]["LocationPos"])); -            msg->addVector3Fast(_PREHASH_LocationLookAt, -                                ll_vector3_from_sdmap(payload["HomeLocation"]["LocationLookAt"])); -|*==========================================================================*/ -        } -    }; - -    template<> template<> -    void llcapears_object::test<4>() -    { -        TestMapper testMapper("WantReply"); -        LLSD request, body; -        body["data"] = "yes"; -        request["message"] = "test"; -        request["payload"] = body; -        request["reply"] = replyPump.getName(); -        request["error"] = errorPump.getName(); -        std::string threw; -        try -        { -            WrapLLErrs capture; -            regionPump.post(request); -        } -        catch (const WrapLLErrs::FatalException& e) -        { -            threw = e.what(); -        } -        ensure_contains("capability mapper wants reply", threw, "unimplemented support for reply message"); -    } - -    template<> template<> -    void llcapears_object::test<5>() -    { -        TestMapper testMapper; -        std::string threw; -        try -        { -            TestMapper testMapper2; -        } -        catch (const std::runtime_error& e) -        { -            threw = e.what(); -        } -        ensure_contains("no dup cap mapper", threw, "DupCapMapper"); -    } -} diff --git a/indra/newview/tests/llhttpretrypolicy_test.cpp b/indra/newview/tests/llhttpretrypolicy_test.cpp index 25e6de46d9..21c83184dc 100644 --- a/indra/newview/tests/llhttpretrypolicy_test.cpp +++ b/indra/newview/tests/llhttpretrypolicy_test.cpp @@ -234,13 +234,13 @@ void RetryPolicyTestObject::test<6>()  	std::string str1("0");  	seconds_to_wait = F32_MAX; -	success = getSecondsUntilRetryAfter(str1, seconds_to_wait); +    success = LLAdaptiveRetryPolicy::getSecondsUntilRetryAfter(str1, seconds_to_wait);  	ensure("parse 1", success);  	ensure_equals("parse 1", seconds_to_wait, 0.0);  	std::string str2("999.9");  	seconds_to_wait = F32_MAX; -	success = getSecondsUntilRetryAfter(str2, seconds_to_wait); +    success = LLAdaptiveRetryPolicy::getSecondsUntilRetryAfter(str2, seconds_to_wait);  	ensure("parse 2", success);  	ensure_approximately_equals("parse 2", seconds_to_wait, 999.9F, 8); @@ -248,7 +248,7 @@ void RetryPolicyTestObject::test<6>()  	time(&nowseconds);  	std::string str3 = LLDate((F64)(nowseconds+44)).asRFC1123();  	seconds_to_wait = F32_MAX; -	success = getSecondsUntilRetryAfter(str3, seconds_to_wait); +    success = LLAdaptiveRetryPolicy::getSecondsUntilRetryAfter(str3, seconds_to_wait);  	std::cerr << " str3 [" << str3 << "]" << std::endl;  	ensure("parse 3", success);  	ensure_approximately_equals_range("parse 3", seconds_to_wait, 44.0F, 2.0F); @@ -285,10 +285,10 @@ void RetryPolicyTestObject::test<7>()  	ensure_approximately_equals_range("header 2", seconds_to_wait, 7.0F, 2.0F);  	LLCore::HttpResponse *response; -	LLCore::HttpHeaders *headers; +	LLCore::HttpHeaders::ptr_t headers;  	response = new LLCore::HttpResponse(); -	headers = new LLCore::HttpHeaders(); +	headers = LLCore::HttpHeaders::ptr_t(new LLCore::HttpHeaders());  	response->setStatus(503);  	response->setHeaders(headers);  	headers->append(HTTP_IN_HEADER_RETRY_AFTER, std::string("600")); @@ -299,7 +299,7 @@ void RetryPolicyTestObject::test<7>()  	response->release();  	response = new LLCore::HttpResponse(); -	headers = new LLCore::HttpHeaders(); +	headers = LLCore::HttpHeaders::ptr_t(new LLCore::HttpHeaders());  	response->setStatus(503);  	response->setHeaders(headers);  	time(&nowseconds); diff --git a/indra/newview/tests/llmediadataclient_test.cpp b/indra/newview/tests/llmediadataclient_test.cpp index 7cb4aeb121..4c0acded9e 100644 --- a/indra/newview/tests/llmediadataclient_test.cpp +++ b/indra/newview/tests/llmediadataclient_test.cpp @@ -106,7 +106,7 @@ const char *DATA = _DATA(VALID_OBJECT_ID,"1.0","true");  LLSD *gPostRecords = NULL;  F64   gMinimumInterestLevel = (F64)0.0; - +#if 0  // stubs:  void LLHTTPClient::post(  		const std::string& url, @@ -140,6 +140,7 @@ void LLHTTPClient::post(  	}  	responder->successResult(result);  } +#endif  const F32 HTTP_REQUEST_EXPIRY_SECS = 60.0f; diff --git a/indra/newview/tests/llremoteparcelrequest_test.cpp b/indra/newview/tests/llremoteparcelrequest_test.cpp index c49b0350e9..ea5014a59c 100644 --- a/indra/newview/tests/llremoteparcelrequest_test.cpp +++ b/indra/newview/tests/llremoteparcelrequest_test.cpp @@ -27,6 +27,7 @@  #include "linden_common.h"  #include "../test/lltut.h" +#if 0  #include "../llremoteparcelrequest.h" @@ -134,3 +135,4 @@ namespace tut  		processor.processParcelInfoReply(gMessageSystem, NULL);  	}  } +#endif diff --git a/indra/newview/tests/lltranslate_test.cpp b/indra/newview/tests/lltranslate_test.cpp deleted file mode 100644 index 5e73dbb981..0000000000 --- a/indra/newview/tests/lltranslate_test.cpp +++ /dev/null @@ -1,340 +0,0 @@ -/**  - * @file lltranslate_test.cpp - * - * $LicenseInfo:firstyear=2011&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2011, 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$ - */ - -#include "linden_common.h" - -#include "../test/lltut.h" -#include "../lltranslate.h" -#include "../llversioninfo.h" -#include "../llviewercontrol.h" - -#include "llbufferstream.h" -#include "lltrans.h" -#include "llui.h" - -#include "../../llmessage/llhttpconstants.cpp" - -static const std::string GOOGLE_VALID_RESPONSE1 = -"{\ - \"data\": {\ -  \"translations\": [\ -   {\ -    \"translatedText\": \"привет\",\ -    \"detectedSourceLanguage\": \"es\"\ -   }\ -  ]\ - }\ -}"; - -static const std::string GOOGLE_VALID_RESPONSE2 = -"{\ - \"data\": {\ -  \"translations\": [\ -   {\ -    \"translatedText\": \"привет\"\ -   }\ -  ]\ - }\ -}\ -"; - -static const std::string GOOGLE_VALID_RESPONSE3 = -"{\ - \"error\": {\ -  \"errors\": [\ -   {\ -    \"domain\": \"global\",\ -    \"reason\": \"invalid\",\ -    \"message\": \"Invalid Value\"\ -   }\ -  ],\ -  \"code\": 400,\ -  \"message\": \"Invalid Value\"\ - }\ -}"; - -static const std::string BING_VALID_RESPONSE1 = -"<string xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/\">Привет</string>"; - -static const std::string BING_VALID_RESPONSE2 = -"<html><body><h1>Argument Exception</h1><p>Method: Translate()</p><p>Parameter: </p>\ -<p>Message: 'from' must be a valid language</p><code></code>\ -<p>message id=3743.V2_Rest.Translate.58E8454F</p></body></html>"; - -static const std::string BING_VALID_RESPONSE3 = -"<html><body><h1>Argument Exception</h1><p>Method: Translate()</p>\ -<p>Parameter: appId</p><p>Message: Invalid appId
\nParameter name: appId</p>\ -<code></code><p>message id=3737.V2_Rest.Translate.56016759</p></body></html>"; - -namespace tut -{ -	class translate_test -	{ -	protected: -		void test_translation( -			LLTranslationAPIHandler& handler, -			int status, const std::string& resp, -			const std::string& exp_trans, const std::string& exp_lang, const std::string& exp_err) -		{ -			std::string translation, detected_lang, err_msg; -			bool rc = handler.parseResponse(status, resp, translation, detected_lang, err_msg); -			ensure_equals("rc", rc, (status == 200)); -			ensure_equals("err_msg", err_msg, exp_err); -			ensure_equals("translation", translation, exp_trans); -			ensure_equals("detected_lang", detected_lang,  exp_lang); -		} - -		LLGoogleTranslationHandler mGoogle; -		LLBingTranslationHandler mBing; -	}; - -	typedef test_group<translate_test> translate_test_group_t; -	typedef translate_test_group_t::object translate_test_object_t; -	tut::translate_test_group_t tut_translate("LLTranslate"); - -	template<> template<> -	void translate_test_object_t::test<1>() -	{ -		test_translation(mGoogle, 200, GOOGLE_VALID_RESPONSE1, "привет", "es", ""); -	} - -	template<> template<> -	void translate_test_object_t::test<2>() -	{ -		test_translation(mGoogle, 200, GOOGLE_VALID_RESPONSE2, "привет", "", ""); -	} - -	template<> template<> -	void translate_test_object_t::test<3>() -	{ -		test_translation(mGoogle, 400, GOOGLE_VALID_RESPONSE3, "", "", "Invalid Value"); -	} - -	template<> template<> -	void translate_test_object_t::test<4>() -	{ -		test_translation(mGoogle, 400, -			"", -			"", "", "* Line 1, Column 1\n  Syntax error: value, object or array expected.\n"); -	} - -	template<> template<> -	void translate_test_object_t::test<5>() -	{ -		test_translation(mGoogle, 400, -			"[]", -			"", "", ""); -	} - -	template<> template<> -	void translate_test_object_t::test<6>() -	{ -		test_translation(mGoogle, 400, -			"{\"oops\": \"invalid\"}", -			"", "", ""); -	} - -	template<> template<> -	void translate_test_object_t::test<7>() -	{ -		test_translation(mGoogle, 400, -			"{\"data\": {}}", -			"", "", ""); -	} - -	template<> template<> -	void translate_test_object_t::test<8>() -	{ -		test_translation(mGoogle, 400, -				"{\"data\": { \"translations\": [ {} ] }}", -			"", "", ""); -	} - -	template<> template<> -	void translate_test_object_t::test<9>() -	{ -		test_translation(mGoogle, 400, -				"{\"data\": { \"translations\": [ { \"translatedTextZZZ\": \"привет\", \"detectedSourceLanguageZZZ\": \"es\" } ] }}", -			"", "", ""); -	} - -	template<> template<> -	void translate_test_object_t::test<10>() -	{ -		test_translation(mBing, 200, BING_VALID_RESPONSE1, "Привет", "", ""); -	} - -	template<> template<> -	void translate_test_object_t::test<11>() -	{ -		test_translation(mBing, 400, BING_VALID_RESPONSE2, "", "", "'from' must be a valid language"); -	} - -	template<> template<> -	void translate_test_object_t::test<12>() -	{ -		test_translation(mBing, 400, BING_VALID_RESPONSE3, "", "", "Invalid appId\nParameter name: appId"); -	} - -	template<> template<> -	void translate_test_object_t::test<13>() -	{ -		test_translation(mBing, 200, -			"Привет</string>", -			"Привет", "", ""); -	} - -	template<> template<> -	void translate_test_object_t::test<14>() -	{ -		test_translation(mBing, 200, -			"<string xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/\">Привет", -			"Привет", "", ""); -	} - -	template<> template<> -	void translate_test_object_t::test<15>() -	{ -		test_translation(mBing, 200, -			"Привет", -			"Привет", "", ""); -	} - -	template<> template<> -	void translate_test_object_t::test<16>() -	{ -		test_translation(mBing, 400, -			"Message: some error</p>", -			"", "", "some error"); -	} - -	template<> template<> -	void translate_test_object_t::test<17>() -	{ -		test_translation(mBing, 400, -			"Message: some error", -			"", "", "some error"); -	} - -	template<> template<> -	void translate_test_object_t::test<18>() -	{ -		test_translation(mBing, 400, -			"some error</p>", -			"", "", "some error"); -	} - -	template<> template<> -	void translate_test_object_t::test<19>() -	{ -		test_translation(mBing, 400, -			"some error", -			"", "", "some error"); -	} - -	template<> template<> -	void translate_test_object_t::test<20>() -	{ -		std::string url; -		mBing.getTranslateURL(url, "en", "es", "hi"); -		ensure_equals("bing URL", url, -			"http://api.microsofttranslator.com/v2/Http.svc/Translate?appId=dummy&text=hi&to=es&from=en"); -	} - -	template<> template<> -	void translate_test_object_t::test<21>() -	{ -		std::string url; -		mBing.getTranslateURL(url, "", "es", "hi"); -		ensure_equals("bing URL", url, -			"http://api.microsofttranslator.com/v2/Http.svc/Translate?appId=dummy&text=hi&to=es"); -	} - -	template<> template<> -	void translate_test_object_t::test<22>() -	{ -		std::string url; -		mGoogle.getTranslateURL(url, "en", "es", "hi"); -		ensure_equals("google URL", url, -			"https://www.googleapis.com/language/translate/v2?key=dummy&q=hi&target=es&source=en"); -	} - -	template<> template<> -	void translate_test_object_t::test<23>() -	{ -		std::string url; -		mGoogle.getTranslateURL(url, "", "es", "hi"); -		ensure_equals("google URL", url, -			"https://www.googleapis.com/language/translate/v2?key=dummy&q=hi&target=es"); -	} -} - -//== Misc stubs =============================================================== -LLControlGroup gSavedSettings("test"); - -std::string LLUI::getLanguage() { return "en"; } -std::string LLTrans::getString(const std::string &xml_desc, const LLStringUtil::format_map_t& args) { return "dummy"; } - -LLControlGroup::LLControlGroup(const std::string& name) : LLInstanceTracker<LLControlGroup, std::string>(name) {} -std::string LLControlGroup::getString(const std::string& name) { return "dummy"; } -LLControlGroup::~LLControlGroup() {} - -LLCurl::Responder::Responder() {} -void LLCurl::Responder::httpFailure() { } -void LLCurl::Responder::httpSuccess() { } -void LLCurl::Responder::httpCompleted() { } -void LLCurl::Responder::completedRaw(LLChannelDescriptors const &,boost::shared_ptr<LLBufferArray> const &) { } -LLCurl::Responder::~Responder() {} - -void LLHTTPClient::get(const std::string&, const LLSD&, ResponderPtr, const LLSD&, const F32, bool) {} -void LLHTTPClient::get(const std::string&, LLPointer<LLCurl::Responder>, const LLSD&, const F32, bool) {} - -LLBufferStream::LLBufferStream(const LLChannelDescriptors& channels, LLBufferArray* buffer) -:	std::iostream(&mStreamBuf), mStreamBuf(channels, buffer) {} -LLBufferStream::~LLBufferStream() {} - -LLBufferStreamBuf::LLBufferStreamBuf(const LLChannelDescriptors&, LLBufferArray*) {} -#if( LL_WINDOWS || __GNUC__ > 2) -LLBufferStreamBuf::pos_type LLBufferStreamBuf::seekoff( -	off_type off, -	std::ios::seekdir way, -	std::ios::openmode which) -#else -streampos LLBufferStreamBuf::seekoff( -	streamoff off, -	std::ios::seekdir way, -	std::ios::openmode which) -#endif -{ return 0; } -int LLBufferStreamBuf::sync() {return 0;} -int LLBufferStreamBuf::underflow() {return 0;} -int LLBufferStreamBuf::overflow(int) {return 0;} -LLBufferStreamBuf::~LLBufferStreamBuf() {} - -S32 LLVersionInfo::getBuild() { return 0; } -const std::string& LLVersionInfo::getChannel() {static std::string dummy; return dummy;} -S32 LLVersionInfo::getMajor() { return 0; } -S32 LLVersionInfo::getMinor() { return 0; } -S32 LLVersionInfo::getPatch() { return 0; } | 
