diff options
| author | Xiaohong Bao <bao@lindenlab.com> | 2011-02-23 10:44:59 -0700 | 
|---|---|---|
| committer | Xiaohong Bao <bao@lindenlab.com> | 2011-02-23 10:44:59 -0700 | 
| commit | 01cdeb0cdd8c48b76a229d42ced4e5563cd18c5c (patch) | |
| tree | e7b7ca976f17c8af3c8a2648a801030594e94c8c /indra/llui/tests | |
| parent | 7daa3d1ca10199468946feef0ce8eb67489deee0 (diff) | |
| parent | ff5e3f5c2e566f3a8e86efaa763f7b12e07eeb53 (diff) | |
Merge from viewer-development
Diffstat (limited to 'indra/llui/tests')
| -rw-r--r-- | indra/llui/tests/llurlentry_stub.cpp | 144 | ||||
| -rw-r--r-- | indra/llui/tests/llurlentry_test.cpp | 179 | ||||
| -rw-r--r-- | indra/llui/tests/llurlmatch_test.cpp | 153 | 
3 files changed, 459 insertions, 17 deletions
| diff --git a/indra/llui/tests/llurlentry_stub.cpp b/indra/llui/tests/llurlentry_stub.cpp index ff53ae5624..96ebe83826 100644 --- a/indra/llui/tests/llurlentry_stub.cpp +++ b/indra/llui/tests/llurlentry_stub.cpp @@ -27,11 +27,29 @@  #include "llstring.h"  #include "llfile.h" +#include "llavatarnamecache.h"  #include "llcachename.h"  #include "lluuid.h" +#include "message.h"  #include <string> +// Stub for LLAvatarNameCache +bool LLAvatarNameCache::get(const LLUUID& agent_id, LLAvatarName *av_name) +{ +	return false; +} + +void LLAvatarNameCache::get(const LLUUID& agent_id, callback_slot_t slot) +{ +	return; +} + +bool LLAvatarNameCache::useDisplayNames() +{ +	return false; +} +  //  // Stub implementation for LLCacheName  // @@ -47,7 +65,12 @@ BOOL LLCacheName::getGroupName(const LLUUID& id, std::string& group)  	return TRUE;  } -boost::signals2::connection LLCacheName::get(const LLUUID& id, BOOL is_group, const LLCacheNameCallback& callback) +boost::signals2::connection LLCacheName::get(const LLUUID& id, bool is_group, const LLCacheNameCallback& callback) +{ +	return boost::signals2::connection(); +} + +boost::signals2::connection LLCacheName::getGroup(const LLUUID& id, const LLCacheNameCallback& callback)  {  	return boost::signals2::connection();  } @@ -67,3 +90,122 @@ std::string LLTrans::getString(const std::string &xml_desc, const LLStringUtil::  {  	return std::string();  } + +// +// Stub implementation for LLStyle::Params::Params +// + +LLStyle::Params::Params() +{ +} + +// +// Stub implementations for various LLInitParam classes +// + +namespace LLInitParam +{ +	BaseBlock::BaseBlock() {} +	BaseBlock::~BaseBlock() {} +	Param::Param(BaseBlock* enclosing_block) +	:	mIsProvided(false) +	{ +		const U8* my_addr = reinterpret_cast<const U8*>(this); +		const U8* block_addr = reinterpret_cast<const U8*>(enclosing_block); +		mEnclosingBlockOffset = (U16)(my_addr - block_addr); +	} +	void BaseBlock::setLastChangedParam(const Param& last_param, bool user_provided) {} + +	void BaseBlock::addParam(BlockDescriptor& block_data, const ParamDescriptor& in_param, const char* char_name){} +	param_handle_t BaseBlock::getHandleFromParam(const Param* param) const {return 0;} +	 +	void BaseBlock::init(BlockDescriptor& descriptor, BlockDescriptor& base_descriptor, size_t block_size) +	{ +		descriptor.mCurrentBlockPtr = this; +	} +	bool BaseBlock::deserializeBlock(Parser& p, Parser::name_stack_range_t name_stack){ return true; } +	bool BaseBlock::serializeBlock(Parser& parser, Parser::name_stack_t name_stack, const LLInitParam::BaseBlock* diff_block) const { return true; } +	bool BaseBlock::inspectBlock(Parser& parser, Parser::name_stack_t name_stack) const { return true; } +	bool BaseBlock::merge(BlockDescriptor& block_data, const BaseBlock& other, bool overwrite) { return true; } +	bool BaseBlock::validateBlock(bool emit_errors) const { return true; } + +	TypedParam<LLUIColor >::TypedParam(BlockDescriptor& descriptor, const char* name, const LLUIColor& value, ParamDescriptor::validation_func_t func, S32 min_count, S32 max_count) +	:	super_t(descriptor, name, value, func, min_count, max_count) +	{} + +	void TypedParam<LLUIColor>::setValueFromBlock() const +	{} +	 +	void TypedParam<LLUIColor>::setBlockFromValue() +	{} + +	void TypeValues<LLUIColor>::declareValues() +	{} + +	bool ParamCompare<const LLFontGL*, false>::equals(const LLFontGL* a, const LLFontGL* b) +	{ +		return false; +	} + +	TypedParam<const LLFontGL*>::TypedParam(BlockDescriptor& descriptor, const char* _name, const LLFontGL*const value, ParamDescriptor::validation_func_t func, S32 min_count, S32 max_count) +	:	super_t(descriptor, _name, value, func, min_count, max_count) +	{} + +	void TypedParam<const LLFontGL*>::setValueFromBlock() const +	{} +	 +	void TypedParam<const LLFontGL*>::setBlockFromValue() +	{} + +	void TypeValues<LLFontGL::HAlign>::declareValues() +	{} + +	void TypeValues<LLFontGL::VAlign>::declareValues() +	{} + +	void TypeValues<LLFontGL::ShadowType>::declareValues() +	{} + +	void TypedParam<LLUIImage*>::setValueFromBlock() const +	{} +	 +	void TypedParam<LLUIImage*>::setBlockFromValue() +	{} + +	 +	bool ParamCompare<LLUIImage*, false>::equals( +		LLUIImage* const &a, +		LLUIImage* const &b) +	{ +		return false; +	} + +	bool ParamCompare<LLUIColor, false>::equals(const LLUIColor &a, const LLUIColor &b) +	{ +		return false; +	} + +} + +//static +LLFontGL* LLFontGL::getFontDefault() +{ +	return NULL;  +} + +char* _PREHASH_AgentData = "AgentData"; +char* _PREHASH_AgentID = "AgentID"; + +LLHost LLHost::invalid(INVALID_PORT,INVALID_HOST_IP_ADDRESS); + +LLMessageSystem* gMessageSystem = NULL; + +// +// Stub implementation for LLMessageSystem +// +void LLMessageSystem::newMessage(const char *name) { } +void LLMessageSystem::nextBlockFast(const char *blockname) { } +void LLMessageSystem::nextBlock(const char *blockname) { } +void LLMessageSystem::addUUIDFast( const char *varname, const LLUUID& uuid) { } +void LLMessageSystem::addUUID( const char *varname, const LLUUID& uuid) { } +S32 LLMessageSystem::sendReliable(const LLHost &host) { return 0; } diff --git a/indra/llui/tests/llurlentry_test.cpp b/indra/llui/tests/llurlentry_test.cpp index 95affe4460..8f0a48018f 100644 --- a/indra/llui/tests/llurlentry_test.cpp +++ b/indra/llui/tests/llurlentry_test.cpp @@ -27,12 +27,22 @@  #include "linden_common.h"  #include "../llurlentry.h" +#include "../lluictrl.h"  #include "llurlentry_stub.cpp"  #include "lltut.h"  #include "../lluicolortable.h" +#include "../lluiimage.h"  #include <boost/regex.hpp> +typedef std::map<std::string, LLControlGroup*> settings_map_t; +settings_map_t LLUI::sSettingGroups; + +BOOL LLControlGroup::getBOOL(const std::string& name) +{ +	return false; +} +  LLUIColor LLUIColorTable::getColor(const std::string& name, const LLColor4& default_color) const  {  	return LLUIColor(); @@ -40,6 +50,26 @@ LLUIColor LLUIColorTable::getColor(const std::string& name, const LLColor4& defa  LLUIColor::LLUIColor() : mColorPtr(NULL) {} +LLUIImage::LLUIImage(const std::string& name, LLPointer<LLTexture> image) +{ +} + +LLUIImage::~LLUIImage() +{ +} + +//virtual +S32 LLUIImage::getWidth() const +{ +	return 0; +} + +//virtual +S32 LLUIImage::getHeight() const +{ +	return 0; +} +  namespace tut  {  	struct LLUrlEntryData @@ -73,6 +103,45 @@ namespace tut  		ensure_equals(testname, url, expected);  	} +	void dummyCallback(const std::string &url, const std::string &label, const std::string& icon) +	{ +	} + +	void testLabel(const std::string &testname, LLUrlEntryBase &entry, +				   const char *text, const std::string &expected) +	{ +		boost::regex regex = entry.getPattern(); +		std::string label = ""; +		boost::cmatch result; +		bool found = boost::regex_search(text, result, regex); +		if (found) +		{ +			S32 start = static_cast<U32>(result[0].first - text); +			S32 end = static_cast<U32>(result[0].second - text); +			std::string url = std::string(text+start, end-start); +			label = entry.getLabel(url, boost::bind(dummyCallback, _1, _2, _3)); +		} +		ensure_equals(testname, label, expected); +	} + +	void testLocation(const std::string &testname, LLUrlEntryBase &entry, +					  const char *text, const std::string &expected) +	{ +		boost::regex regex = entry.getPattern(); +		std::string location = ""; +		boost::cmatch result; +		bool found = boost::regex_search(text, result, regex); +		if (found) +		{ +			S32 start = static_cast<U32>(result[0].first - text); +			S32 end = static_cast<U32>(result[0].second - text); +			std::string url = std::string(text+start, end-start); +			location = entry.getLocation(url); +		} +		ensure_equals(testname, location, expected); +	} + +  	template<> template<>  	void object::test<1>()  	{ @@ -667,4 +736,114 @@ namespace tut  				  "<nolink>My Object</nolink>",  				  "My Object");  	} + +	template<> template<> +	void object::test<13>() +	{ +		// +		// test LLUrlEntryRegion - secondlife:///app/region/<location> URLs +		// +		LLUrlEntryRegion url; + +		// Regex tests. +		testRegex("no valid region", url, +				  "secondlife:///app/region/", +				  ""); + +		testRegex("invalid coords", url, +				  "secondlife:///app/region/Korea2/a/b/c", +				  "secondlife:///app/region/Korea2/"); // don't count invalid coords + +		testRegex("Ahern (50,50,50) [1]", url, +				  "secondlife:///app/region/Ahern/50/50/50/", +				  "secondlife:///app/region/Ahern/50/50/50/"); + +		testRegex("Ahern (50,50,50) [2]", url, +				  "XXX secondlife:///app/region/Ahern/50/50/50/ XXX", +				  "secondlife:///app/region/Ahern/50/50/50/"); + +		testRegex("Ahern (50,50,50) [3]", url, +				  "XXX secondlife:///app/region/Ahern/50/50/50 XXX", +				  "secondlife:///app/region/Ahern/50/50/50"); + +		testRegex("Ahern (50,50,50) multicase", url, +				  "XXX secondlife:///app/region/Ahern/50/50/50/ XXX", +				  "secondlife:///app/region/Ahern/50/50/50/"); + +		testRegex("Ahern (50,50) [1]", url, +				  "XXX secondlife:///app/region/Ahern/50/50/ XXX", +				  "secondlife:///app/region/Ahern/50/50/"); + +		testRegex("Ahern (50,50) [2]", url, +				  "XXX secondlife:///app/region/Ahern/50/50 XXX", +				  "secondlife:///app/region/Ahern/50/50"); + +		// DEV-21577: In-world SLURLs containing "(" or ")" are not treated as a hyperlink in chat +		testRegex("Region with brackets", url, +				  "XXX secondlife:///app/region/Burning%20Life%20(Hyper)/27/210/30 XXX", +				  "secondlife:///app/region/Burning%20Life%20(Hyper)/27/210/30"); + +		// DEV-35459: SLURLs and teleport Links not parsed properly +		testRegex("Region with quote", url, +				  "XXX secondlife:///app/region/A'ksha%20Oasis/41/166/701 XXX", +			          "secondlife:///app/region/A%27ksha%20Oasis/41/166/701"); + +		// Rendering tests. +		testLabel("Render /app/region/Ahern/50/50/50/", url, +			"secondlife:///app/region/Ahern/50/50/50/", +			"Ahern (50,50,50)"); + +		testLabel("Render /app/region/Ahern/50/50/50", url, +			"secondlife:///app/region/Ahern/50/50/50", +			"Ahern (50,50,50)"); + +		testLabel("Render /app/region/Ahern/50/50/", url, +			"secondlife:///app/region/Ahern/50/50/", +			"Ahern (50,50)"); + +		testLabel("Render /app/region/Ahern/50/50", url, +			"secondlife:///app/region/Ahern/50/50", +			"Ahern (50,50)"); + +		testLabel("Render /app/region/Ahern/50/", url, +			"secondlife:///app/region/Ahern/50/", +			"Ahern (50)"); + +		testLabel("Render /app/region/Ahern/50", url, +			"secondlife:///app/region/Ahern/50", +			"Ahern (50)"); + +		testLabel("Render /app/region/Ahern/", url, +			"secondlife:///app/region/Ahern/", +			"Ahern"); + +		testLabel("Render /app/region/Ahern/ within context", url, +			"XXX secondlife:///app/region/Ahern/ XXX", +			"Ahern"); + +		testLabel("Render /app/region/Ahern", url, +			"secondlife:///app/region/Ahern", +			"Ahern"); + +		testLabel("Render /app/region/Ahern within context", url, +			"XXX secondlife:///app/region/Ahern XXX", +			"Ahern"); + +		testLabel("Render /app/region/Product%20Engine/", url, +			"secondlife:///app/region/Product%20Engine/", +			"Product Engine"); + +		testLabel("Render /app/region/Product%20Engine", url, +			"secondlife:///app/region/Product%20Engine", +			"Product Engine"); + +		// Location parsing texts. +		testLocation("Location /app/region/Ahern/50/50/50/", url, +			"secondlife:///app/region/Ahern/50/50/50/", +			"Ahern"); + +		testLocation("Location /app/region/Product%20Engine", url, +			"secondlife:///app/region/Product%20Engine", +			"Product Engine"); +	}  } diff --git a/indra/llui/tests/llurlmatch_test.cpp b/indra/llui/tests/llurlmatch_test.cpp index 4e38bea1bd..fdaab00f18 100644 --- a/indra/llui/tests/llurlmatch_test.cpp +++ b/indra/llui/tests/llurlmatch_test.cpp @@ -25,14 +25,135 @@   * $/LicenseInfo$   */ +#include "linden_common.h" +  #include "../llurlmatch.h" +#include "../lluiimage.h"  #include "lltut.h" -// link seam +// link seams +  LLUIColor::LLUIColor()  	: mColorPtr(NULL)  {} +LLStyle::Params::Params() +{ +} + +LLUIImage::LLUIImage(const std::string& name, LLPointer<LLTexture> image) +{ +} + +LLUIImage::~LLUIImage() +{ +} + +//virtual +S32 LLUIImage::getWidth() const +{ +	return 0; +} + +//virtual +S32 LLUIImage::getHeight() const +{ +	return 0; +} + +namespace LLInitParam +{ +	BaseBlock::BaseBlock() {} +	BaseBlock::~BaseBlock() {} + +	void BaseBlock::setLastChangedParam(const Param& last_param, bool user_provided) {} + +	void BaseBlock::addParam(BlockDescriptor& block_data, const ParamDescriptor& in_param, const char* char_name){} +	param_handle_t BaseBlock::getHandleFromParam(const Param* param) const {return 0;} +	 +	void BaseBlock::init(BlockDescriptor& descriptor, BlockDescriptor& base_descriptor, size_t block_size) +	{ +		descriptor.mCurrentBlockPtr = this; +	} + +	Param::Param(BaseBlock* enclosing_block) +	:	mIsProvided(false) +	{ +		const U8* my_addr = reinterpret_cast<const U8*>(this); +		const U8* block_addr = reinterpret_cast<const U8*>(enclosing_block); +		mEnclosingBlockOffset = (U16)(my_addr - block_addr); +	} + +	bool BaseBlock::deserializeBlock(Parser& p, Parser::name_stack_range_t name_stack){ return true; } +	bool BaseBlock::serializeBlock(Parser& parser, Parser::name_stack_t name_stack, const LLInitParam::BaseBlock* diff_block) const { return true; } +	bool BaseBlock::inspectBlock(Parser& parser, Parser::name_stack_t name_stack) const { return true; } +	bool BaseBlock::merge(BlockDescriptor& block_data, const BaseBlock& other, bool overwrite) { return true; } +	bool BaseBlock::validateBlock(bool emit_errors) const { return true; } + +	TypedParam<LLUIColor >::TypedParam(BlockDescriptor& descriptor, const char* name, const LLUIColor& value, ParamDescriptor::validation_func_t func, S32 min_count, S32 max_count) +	:	super_t(descriptor, name, value, func, min_count, max_count) +	{} + +	void TypedParam<LLUIColor>::setValueFromBlock() const +	{} +	 +	void TypedParam<LLUIColor>::setBlockFromValue() +	{} + +	void TypeValues<LLUIColor>::declareValues() +	{} + +	bool ParamCompare<const LLFontGL*, false>::equals(const LLFontGL* a, const LLFontGL* b) +	{ +		return false; +	} + +	TypedParam<const LLFontGL*>::TypedParam(BlockDescriptor& descriptor, const char* _name, const LLFontGL*const value, ParamDescriptor::validation_func_t func, S32 min_count, S32 max_count) +	:	super_t(descriptor, _name, value, func, min_count, max_count) +	{} + +	void TypedParam<const LLFontGL*>::setValueFromBlock() const +	{} +	 +	void TypedParam<const LLFontGL*>::setBlockFromValue() +	{} + +	void TypeValues<LLFontGL::HAlign>::declareValues() +	{} + +	void TypeValues<LLFontGL::VAlign>::declareValues() +	{} + +	void TypeValues<LLFontGL::ShadowType>::declareValues() +	{} + +	void TypedParam<LLUIImage*>::setValueFromBlock() const +	{} +	 +	void TypedParam<LLUIImage*>::setBlockFromValue() +	{} +	 +	bool ParamCompare<LLUIImage*, false>::equals( +		LLUIImage* const &a, +		LLUIImage* const &b) +	{ +		return false; +	} + +	bool ParamCompare<LLUIColor, false>::equals(const LLUIColor &a, const LLUIColor &b) +	{ +		return false; +	} + +} + +//static +LLFontGL* LLFontGL::getFontDefault() +{ +	return NULL;  +} + +  namespace tut  {  	struct LLUrlMatchData @@ -59,7 +180,7 @@ namespace tut  		LLUrlMatch match;  		ensure("empty()", match.empty()); -		match.setValues(0, 1, "http://secondlife.com", "Second Life", "", "", LLUIColor(), "", "", false,LLUUID::null); +		match.setValues(0, 1, "http://secondlife.com", "Second Life", "", "", LLStyle::Params(), "", "", LLUUID::null);  		ensure("! empty()", ! match.empty());  	} @@ -72,7 +193,7 @@ namespace tut  		LLUrlMatch match;  		ensure_equals("getStart() == 0", match.getStart(), 0); -		match.setValues(10, 20, "", "", "", "", LLUIColor(), "", "", false,LLUUID::null); +		match.setValues(10, 20, "", "", "", "", LLStyle::Params(), "", "", LLUUID::null);  		ensure_equals("getStart() == 10", match.getStart(), 10);  	} @@ -85,7 +206,7 @@ namespace tut  		LLUrlMatch match;  		ensure_equals("getEnd() == 0", match.getEnd(), 0); -		match.setValues(10, 20, "", "", "", "", LLUIColor(), "", "", false,LLUUID::null); +		match.setValues(10, 20, "", "", "", "", LLStyle::Params(), "", "", LLUUID::null);  		ensure_equals("getEnd() == 20", match.getEnd(), 20);  	} @@ -98,10 +219,10 @@ namespace tut  		LLUrlMatch match;  		ensure_equals("getUrl() == ''", match.getUrl(), ""); -		match.setValues(10, 20, "http://slurl.com/", "", "", "", LLUIColor(), "", "", false,LLUUID::null); +		match.setValues(10, 20, "http://slurl.com/", "", "", "", LLStyle::Params(), "", "", LLUUID::null);  		ensure_equals("getUrl() == 'http://slurl.com/'", match.getUrl(), "http://slurl.com/"); -		match.setValues(10, 20, "", "", "", "", LLUIColor(), "", "", false,LLUUID::null); +		match.setValues(10, 20, "", "", "", "", LLStyle::Params(), "", "", LLUUID::null);  		ensure_equals("getUrl() == '' (2)", match.getUrl(), "");  	} @@ -114,10 +235,10 @@ namespace tut  		LLUrlMatch match;  		ensure_equals("getLabel() == ''", match.getLabel(), ""); -		match.setValues(10, 20, "", "Label", "", "", LLUIColor(), "", "", false,LLUUID::null); +		match.setValues(10, 20, "", "Label", "", "", LLStyle::Params(), "", "", LLUUID::null);  		ensure_equals("getLabel() == 'Label'", match.getLabel(), "Label"); -		match.setValues(10, 20, "", "", "", "", LLUIColor(), "", "", false,LLUUID::null); +		match.setValues(10, 20, "", "", "", "", LLStyle::Params(), "", "", LLUUID::null);  		ensure_equals("getLabel() == '' (2)", match.getLabel(), "");  	} @@ -130,10 +251,10 @@ namespace tut  		LLUrlMatch match;  		ensure_equals("getTooltip() == ''", match.getTooltip(), ""); -		match.setValues(10, 20, "", "", "Info", "", LLUIColor(), "", "", false,LLUUID::null); +		match.setValues(10, 20, "", "", "Info", "", LLStyle::Params(), "", "", LLUUID::null);  		ensure_equals("getTooltip() == 'Info'", match.getTooltip(), "Info"); -		match.setValues(10, 20, "", "", "", "", LLUIColor(), "", "", false,LLUUID::null); +		match.setValues(10, 20, "", "", "", "", LLStyle::Params(), "", "", LLUUID::null);  		ensure_equals("getTooltip() == '' (2)", match.getTooltip(), "");  	} @@ -146,10 +267,10 @@ namespace tut  		LLUrlMatch match;  		ensure_equals("getIcon() == ''", match.getIcon(), ""); -		match.setValues(10, 20, "", "", "", "Icon", LLUIColor(), "", "", false,LLUUID::null); +		match.setValues(10, 20, "", "", "", "Icon", LLStyle::Params(), "", "", LLUUID::null);  		ensure_equals("getIcon() == 'Icon'", match.getIcon(), "Icon"); -		match.setValues(10, 20, "", "", "", "", LLUIColor(), "", "", false,LLUUID::null); +		match.setValues(10, 20, "", "", "", "", LLStyle::Params(), "", "", LLUUID::null);  		ensure_equals("getIcon() == '' (2)", match.getIcon(), "");  	} @@ -162,10 +283,10 @@ namespace tut  		LLUrlMatch match;  		ensure("getMenuName() empty", match.getMenuName().empty()); -		match.setValues(10, 20, "", "", "", "Icon", LLUIColor(), "xui_file.xml", "", false,LLUUID::null); +		match.setValues(10, 20, "", "", "", "Icon", LLStyle::Params(), "xui_file.xml", "", LLUUID::null);  		ensure_equals("getMenuName() == \"xui_file.xml\"", match.getMenuName(), "xui_file.xml"); -		match.setValues(10, 20, "", "", "", "", LLUIColor(), "", "", false,LLUUID::null); +		match.setValues(10, 20, "", "", "", "", LLStyle::Params(), "", "", LLUUID::null);  		ensure("getMenuName() empty (2)", match.getMenuName().empty());  	} @@ -178,10 +299,10 @@ namespace tut  		LLUrlMatch match;  		ensure("getLocation() empty", match.getLocation().empty()); -		match.setValues(10, 20, "", "", "", "Icon", LLUIColor(), "xui_file.xml", "Paris", false,LLUUID::null); +		match.setValues(10, 20, "", "", "", "Icon", LLStyle::Params(), "xui_file.xml", "Paris", LLUUID::null);  		ensure_equals("getLocation() == \"Paris\"", match.getLocation(), "Paris"); -		match.setValues(10, 20, "", "", "", "", LLUIColor(), "", "", false,LLUUID::null); +		match.setValues(10, 20, "", "", "", "", LLStyle::Params(), "", "", LLUUID::null);  		ensure("getLocation() empty (2)", match.getLocation().empty());  	}  } | 
