Index: ps/trunk/source/gui/CChart.cpp =================================================================== --- ps/trunk/source/gui/CChart.cpp +++ ps/trunk/source/gui/CChart.cpp @@ -196,7 +196,7 @@ { CChartData& data = m_Series[i]; - if (i < pSeriesColor->m_Items.size() && !data.m_Color.ParseString(pSeriesColor->m_Items[i].GetOriginalString().ToUTF8(), 0)) + if (i < pSeriesColor->m_Items.size() && !data.m_Color.ParseString(m_pGUI, pSeriesColor->m_Items[i].GetOriginalString().ToUTF8(), 0)) LOGWARNING("GUI: Error parsing 'series_color' (\"%s\")", utf8_from_wstring(pSeriesColor->m_Items[i].GetOriginalString())); data.m_Points = pSeries->m_Series[i]; Index: ps/trunk/source/gui/CGUI.cpp =================================================================== --- ps/trunk/source/gui/CGUI.cpp +++ ps/trunk/source/gui/CGUI.cpp @@ -359,7 +359,7 @@ // TODO: Clipping? - Sprite.Draw(Rect, CellID, m_Sprites, Z); + Sprite.Draw(this, Rect, CellID, m_Sprites, Z); } void CGUI::Destroy() @@ -1450,7 +1450,7 @@ else if (attr_name == "size") { CClientArea ca; - if (!GUI::ParseString(attr_value, ca)) + if (!GUI::ParseString(this, attr_value, ca)) LOGERROR("GUI: Error parsing '%s' (\"%s\")", attr_name, utf8_from_wstring(attr_value)); else Image->m_Size = ca; @@ -1458,7 +1458,7 @@ else if (attr_name == "texture_size") { CClientArea ca; - if (!GUI::ParseString(attr_value, ca)) + if (!GUI::ParseString(this, attr_value, ca)) LOGERROR("GUI: Error parsing '%s' (\"%s\")", attr_name, utf8_from_wstring(attr_value)); else Image->m_TextureSize = ca; @@ -1466,7 +1466,7 @@ else if (attr_name == "real_texture_placement") { CRect rect; - if (!GUI::ParseString(attr_value, rect)) + if (!GUI::ParseString(this, attr_value, rect)) LOGERROR("GUI: Error parsing '%s' (\"%s\")", attr_name, utf8_from_wstring(attr_value)); else Image->m_TexturePlacementInFile = rect; @@ -1474,7 +1474,7 @@ else if (attr_name == "cell_size") { CSize size; - if (!GUI::ParseString(attr_value, size)) + if (!GUI::ParseString(this, attr_value, size)) LOGERROR("GUI: Error parsing '%s' (\"%s\")", attr_name, utf8_from_wstring(attr_value)); else Image->m_CellSize = size; @@ -1482,7 +1482,7 @@ else if (attr_name == "fixed_h_aspect_ratio") { float val; - if (!GUI::ParseString(attr_value, val)) + if (!GUI::ParseString(this, attr_value, val)) LOGERROR("GUI: Error parsing '%s' (\"%s\")", attr_name, utf8_from_wstring(attr_value)); else Image->m_FixedHAspectRatio = val; @@ -1490,7 +1490,7 @@ else if (attr_name == "round_coordinates") { bool b; - if (!GUI::ParseString(attr_value, b)) + if (!GUI::ParseString(this, attr_value, b)) LOGERROR("GUI: Error parsing '%s' (\"%s\")", attr_name, utf8_from_wstring(attr_value)); else Image->m_RoundCoordinates = b; @@ -1509,7 +1509,7 @@ else if (attr_name == "z_level") { float z_level; - if (!GUI::ParseString(attr_value, z_level)) + if (!GUI::ParseString(this, attr_value, z_level)) LOGERROR("GUI: Error parsing '%s' (\"%s\")", attr_name, utf8_from_wstring(attr_value)); else Image->m_DeltaZ = z_level/100.f; @@ -1517,7 +1517,7 @@ else if (attr_name == "backcolor") { CGUIColor color; - if (!GUI::ParseString(attr_value, color)) + if (!GUI::ParseString(this, attr_value, color)) LOGERROR("GUI: Error parsing '%s' (\"%s\")", attr_name, utf8_from_wstring(attr_value)); else Image->m_BackColor = color; @@ -1525,7 +1525,7 @@ else if (attr_name == "bordercolor") { CGUIColor color; - if (!GUI::ParseString(attr_value, color)) + if (!GUI::ParseString(this, attr_value, color)) LOGERROR("GUI: Error parsing '%s' (\"%s\")", attr_name, utf8_from_wstring(attr_value)); else Image->m_BorderColor = color; @@ -1533,7 +1533,7 @@ else if (attr_name == "border") { bool b; - if (!GUI::ParseString(attr_value, b)) + if (!GUI::ParseString(this, attr_value, b)) LOGERROR("GUI: Error parsing '%s' (\"%s\")", attr_name, utf8_from_wstring(attr_value)); else Image->m_Border = b; @@ -1572,7 +1572,7 @@ if (attr_name == "add_color") { CGUIColor color; - if (!color.ParseString(attr.Value, 0)) + if (!color.ParseString(this, attr.Value, 0)) LOGERROR("GUI: Error parsing '%s' (\"%s\")", attr_name, attr.Value); else effects.m_AddColor = color; } @@ -1628,7 +1628,7 @@ else if (attr_name == "show_edge_buttons") { bool b; - if (!GUI::ParseString(attr_value.FromUTF8(), b)) + if (!GUI::ParseString(this, attr_value.FromUTF8(), b)) LOGERROR("GUI: Error parsing '%s' (\"%s\")", attr_name, attr_value); else scrollbar.m_UseEdgeButtons = b; @@ -1636,7 +1636,7 @@ else if (attr_name == "width") { float f; - if (!GUI::ParseString(attr_value.FromUTF8(), f)) + if (!GUI::ParseString(this, attr_value.FromUTF8(), f)) LOGERROR("GUI: Error parsing '%s' (\"%s\")", attr_name, attr_value); else scrollbar.m_Width = f; @@ -1644,7 +1644,7 @@ else if (attr_name == "minimum_bar_size") { float f; - if (!GUI::ParseString(attr_value.FromUTF8(), f)) + if (!GUI::ParseString(this, attr_value.FromUTF8(), f)) LOGERROR("GUI: Error parsing '%s' (\"%s\")", attr_name, attr_value); else scrollbar.m_MinimumBarSize = f; @@ -1652,7 +1652,7 @@ else if (attr_name == "maximum_bar_size") { float f; - if (!GUI::ParseString(attr_value.FromUTF8(), f)) + if (!GUI::ParseString(this, attr_value.FromUTF8(), f)) LOGERROR("GUI: Error parsing '%s' (\"%s\")", attr_name, attr_value); else scrollbar.m_MaximumBarSize = f; @@ -1707,7 +1707,7 @@ else if (attr_name == "size") { CSize size; - if (!GUI::ParseString(attr_value.FromUTF8(), size)) + if (!GUI::ParseString(this, attr_value.FromUTF8(), size)) LOGERROR("Error parsing '%s' (\"%s\") inside .", attr_name, attr_value); else icon.m_Size = size; @@ -1715,7 +1715,7 @@ else if (attr_name == "cell_id") { int cell_id; - if (!GUI::ParseString(attr_value.FromUTF8(), cell_id)) + if (!GUI::ParseString(this, attr_value.FromUTF8(), cell_id)) LOGERROR("GUI: Error parsing '%s' (\"%s\") inside .", attr_name, attr_value); else icon.m_CellID = cell_id; @@ -1759,7 +1759,7 @@ return; // Try setting color to value - if (!color.ParseString(value)) + if (!color.ParseString(this, value)) { LOGERROR("GUI: Unable to create custom color '%s'. Invalid color syntax.", name.c_str()); return; Index: ps/trunk/source/gui/CGUIColor.h =================================================================== --- ps/trunk/source/gui/CGUIColor.h +++ ps/trunk/source/gui/CGUIColor.h @@ -19,7 +19,9 @@ #define INCLUDED_GUICOLOR #include "graphics/Color.h" -#include "gui/GUIManager.h" +#include "ps/CStr.h" + +class CGUI; /** * Same as the CColor class, but this one can also parse colors predefined in the GUI page (such as "yellow"). @@ -30,10 +32,14 @@ CGUIColor(float r, float g, float b, float a) : CColor(r, g, b, a) {} - bool ParseString(const CStr& value, int defaultAlpha = 255) - { - return g_GUI->GetPreDefinedColor(value, *this) || CColor::ParseString(value, defaultAlpha); - } + /** + * Load color depending on current GUI page. + */ + bool ParseString(const CGUI* pGUI, const CStr& value, int defaultAlpha = 255); + + /** + * Ensure that all users check for predefined colors. + */ + bool ParseString(const CStr& value, int defaultAlpha = 255) = delete; }; #endif // INCLUDED_GUICOLOR - Index: ps/trunk/source/gui/CGUIColor.cpp =================================================================== --- ps/trunk/source/gui/CGUIColor.cpp +++ ps/trunk/source/gui/CGUIColor.cpp @@ -0,0 +1,27 @@ +/* Copyright (C) 2019 Wildfire Games. + * This file is part of 0 A.D. + * + * 0 A.D. is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * 0 A.D. 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with 0 A.D. If not, see . + */ + +#include "precompiled.h" + +#include "CGUIColor.h" +#include "ps/CStr.h" +#include "gui/CGUI.h" + +bool CGUIColor::ParseString(const CGUI* pGUI, const CStr& value, int defaultAlpha) +{ + return (pGUI != nullptr && pGUI->GetPreDefinedColor(value, *this)) || CColor::ParseString(value, defaultAlpha); +} Index: ps/trunk/source/gui/CGUISprite.h =================================================================== --- ps/trunk/source/gui/CGUISprite.h +++ ps/trunk/source/gui/CGUISprite.h @@ -164,7 +164,7 @@ CGUISpriteInstance(); CGUISpriteInstance(const CStr& SpriteName); - void Draw(const CRect& Size, int CellID, std::map& Sprites, float Z) const; + void Draw(const CGUI* pGUI, const CRect& Size, int CellID, std::map& Sprites, float Z) const; bool IsEmpty() const; const CStr& GetName() const { return m_SpriteName; } void SetName(const CStr& SpriteName); Index: ps/trunk/source/gui/CGUISprite.cpp =================================================================== --- ps/trunk/source/gui/CGUISprite.cpp +++ ps/trunk/source/gui/CGUISprite.cpp @@ -30,11 +30,11 @@ m_Images.push_back(image); } -void CGUISpriteInstance::Draw(const CRect& Size, int CellID, std::map& Sprites, float Z) const +void CGUISpriteInstance::Draw(const CGUI* pGUI, const CRect& Size, int CellID, std::map& Sprites, float Z) const { if (m_CachedSize != Size || m_CachedCellID != CellID) { - GUIRenderer::UpdateDrawCallCache(m_DrawCallCache, m_SpriteName, Size, CellID, Sprites); + GUIRenderer::UpdateDrawCallCache(pGUI, m_DrawCallCache, m_SpriteName, Size, CellID, Sprites); m_CachedSize = Size; m_CachedCellID = CellID; } Index: ps/trunk/source/gui/CGUIString.cpp =================================================================== --- ps/trunk/source/gui/CGUIString.cpp +++ ps/trunk/source/gui/CGUIString.cpp @@ -144,7 +144,7 @@ // Displace the sprite CSize displacement; // Parse the value - if (!GUI::ParseString(tagAttrib.value, displacement)) + if (!GUI::ParseString(pGUI, tagAttrib.value, displacement)) LOGERROR("Error parsing 'displace' value for tag [ICON]"); else SpriteCall.m_Area += displacement; @@ -190,7 +190,7 @@ case TextChunk::Tag::TAG_COLOR: TextCall.m_UseCustomColor = true; - if (!GUI::ParseString(tag.m_TagValue, TextCall.m_Color) && pObject) + if (!GUI::ParseString(pGUI, tag.m_TagValue, TextCall.m_Color) && pObject) LOGERROR("Error parsing the value of a [color]-tag in GUI text when reading object \"%s\".", pObject->GetPresentableName().c_str()); break; case TextChunk::Tag::TAG_FONT: Index: ps/trunk/source/gui/COList.cpp =================================================================== --- ps/trunk/source/gui/COList.cpp +++ ps/trunk/source/gui/COList.cpp @@ -231,7 +231,7 @@ if (attr_name == "color") { CGUIColor color; - if (!GUI::ParseString(attr_value.FromUTF8(), color)) + if (!GUI::ParseString(m_pGUI, attr_value.FromUTF8(), color)) LOGERROR("GUI: Error parsing '%s' (\"%s\")", attr_name.c_str(), attr_value.c_str()); else column.m_TextColor = color; @@ -242,13 +242,13 @@ } else if (attr_name == "hidden") { - if (!GUI::ParseString(attr_value.FromUTF8(), hidden)) + if (!GUI::ParseString(m_pGUI, attr_value.FromUTF8(), hidden)) LOGERROR("GUI: Error parsing '%s' (\"%s\")", attr_name.c_str(), attr_value.c_str()); } else if (attr_name == "width") { float width; - if (!GUI::ParseString(attr_value.FromUTF8(), width)) + if (!GUI::ParseString(m_pGUI, attr_value.FromUTF8(), width)) LOGERROR("GUI: Error parsing '%s' (\"%s\")", attr_name.c_str(), attr_value.c_str()); else { Index: ps/trunk/source/gui/GUIManager.h =================================================================== --- ps/trunk/source/gui/GUIManager.h +++ ps/trunk/source/gui/GUIManager.h @@ -103,11 +103,6 @@ InReaction HandleEvent(const SDL_Event_* ev); /** - * See CGUI::GetPreDefinedColor; applies to the currently active page. - */ - bool GetPreDefinedColor(const CStr& name, CGUIColor& output) const; - - /** * See CGUI::SendEventToAll; applies to the currently active page. */ void SendEventToAll(const CStr& eventName) const; Index: ps/trunk/source/gui/GUIManager.cpp =================================================================== --- ps/trunk/source/gui/GUIManager.cpp +++ ps/trunk/source/gui/GUIManager.cpp @@ -350,12 +350,6 @@ return IN_PASS; } - -bool CGUIManager::GetPreDefinedColor(const CStr& name, CGUIColor& output) const -{ - return top()->GetPreDefinedColor(name, output); -} - void CGUIManager::SendEventToAll(const CStr& eventName) const { top()->SendEventToAll(eventName); Index: ps/trunk/source/gui/GUIRenderer.h =================================================================== --- ps/trunk/source/gui/GUIRenderer.h +++ ps/trunk/source/gui/GUIRenderer.h @@ -71,7 +71,7 @@ namespace GUIRenderer { - void UpdateDrawCallCache(DrawCalls& Calls, const CStr& SpriteName, const CRect& Size, int CellID, std::map& Sprites); + void UpdateDrawCallCache(const CGUI* pGUI, DrawCalls& Calls, const CStr& SpriteName, const CRect& Size, int CellID, std::map& Sprites); void Draw(DrawCalls& Calls, float Z); } Index: ps/trunk/source/gui/GUIRenderer.cpp =================================================================== --- ps/trunk/source/gui/GUIRenderer.cpp +++ ps/trunk/source/gui/GUIRenderer.cpp @@ -59,7 +59,7 @@ } -void GUIRenderer::UpdateDrawCallCache(DrawCalls& Calls, const CStr& SpriteName, const CRect& Size, int CellID, std::map& Sprites) +void GUIRenderer::UpdateDrawCallCache(const CGUI* pGUI, DrawCalls& Calls, const CStr& SpriteName, const CRect& Size, int CellID, std::map& Sprites) { // This is called only when something has changed (like the size of the // sprite), so it doesn't need to be particularly efficient. @@ -144,7 +144,7 @@ CGUIColor color; // Check color is valid - if (!GUI::ParseString(value, color)) + if (!GUI::ParseString(pGUI, value, color)) { LOGERROR("GUI: Error parsing sprite 'color' (\"%s\")", utf8_from_wstring(value)); return; Index: ps/trunk/source/gui/GUIutil.h =================================================================== --- ps/trunk/source/gui/GUIutil.h +++ ps/trunk/source/gui/GUIutil.h @@ -111,7 +111,7 @@ }; template -bool __ParseString(const CStrW& Value, T& tOutput); +bool __ParseString(const CGUI* pGUI, const CStrW& Value, T& tOutput); struct SGUIMessage; @@ -206,9 +206,9 @@ * * @see __ParseString() */ - static bool ParseString(const CStrW& Value, T& tOutput) + static bool ParseString(const CGUI* pGUI, const CStrW& Value, T& tOutput) { - return __ParseString(Value, tOutput); + return __ParseString(pGUI, Value, tOutput); } private: Index: ps/trunk/source/gui/GUIutil.cpp =================================================================== --- ps/trunk/source/gui/GUIutil.cpp +++ ps/trunk/source/gui/GUIutil.cpp @@ -34,13 +34,36 @@ { T settingValue; - if (!GUI::ParseString(Value, settingValue)) + if (!GUI::ParseString(m_pObject.GetGUI(), Value, settingValue)) return false; GUI::SetSetting(&m_pObject, m_Name, settingValue, SkipMessage); return true; }; +template<> +bool CGUISetting::FromJSVal(JSContext* cx, JS::HandleValue Value) +{ + CGUIColor settingValue; + if (Value.isString()) + { + CStr name; + if (!ScriptInterface::FromJSVal(cx, Value, name)) + return false; + + if (!settingValue.ParseString(m_pObject.GetGUI(), name)) + { + JS_ReportError(cx, "Invalid color '%s'", name.c_str()); + return false; + } + } + else if (!ScriptInterface::FromJSVal(cx, Value, settingValue)) + return false; + + GUI::SetSetting(&m_pObject, m_Name, settingValue); + return true; +}; + template bool CGUISetting::FromJSVal(JSContext* cx, JS::HandleValue Value) { @@ -59,7 +82,7 @@ }; template <> -bool __ParseString(const CStrW& Value, bool& Output) +bool __ParseString(const CGUI* UNUSED(pGUI), const CStrW& Value, bool& Output) { if (Value == L"true") Output = true; @@ -72,28 +95,28 @@ } template <> -bool __ParseString(const CStrW& Value, int& Output) +bool __ParseString(const CGUI* UNUSED(pGUI), const CStrW& Value, int& Output) { Output = Value.ToInt(); return true; } template <> -bool __ParseString(const CStrW& Value, u32& Output) +bool __ParseString(const CGUI* UNUSED(pGUI), const CStrW& Value, u32& Output) { Output = Value.ToUInt(); return true; } template <> -bool __ParseString(const CStrW& Value, float& Output) +bool __ParseString(const CGUI* UNUSED(pGUI), const CStrW& Value, float& Output) { Output = Value.ToFloat(); return true; } template <> -bool __ParseString(const CStrW& Value, CRect& Output) +bool __ParseString(const CGUI* UNUSED(pGUI), const CStrW& Value, CRect& Output) { const unsigned int NUM_COORDS = 4; float coords[NUM_COORDS]; @@ -128,19 +151,19 @@ } template <> -bool __ParseString(const CStrW& Value, CClientArea& Output) +bool __ParseString(const CGUI* UNUSED(pGUI), const CStrW& Value, CClientArea& Output) { return Output.SetClientArea(Value.ToUTF8()); } template <> -bool __ParseString(const CStrW& Value, CGUIColor& Output) +bool __ParseString(const CGUI* pGUI, const CStrW& Value, CGUIColor& Output) { - return Output.ParseString(Value.ToUTF8()); + return Output.ParseString(pGUI, Value.ToUTF8()); } template <> -bool __ParseString(const CStrW& Value, CSize& Output) +bool __ParseString(const CGUI* UNUSED(pGUI), const CStrW& Value, CSize& Output) { const unsigned int NUM_COORDS = 2; float coords[NUM_COORDS]; @@ -175,7 +198,7 @@ } template <> -bool __ParseString(const CStrW& Value, CPos& Output) +bool __ParseString(const CGUI* UNUSED(pGUI), const CStrW& Value, CPos& Output) { const unsigned int NUM_COORDS = 2; float coords[NUM_COORDS]; @@ -210,7 +233,7 @@ } template <> -bool __ParseString(const CStrW& Value, EAlign& Output) +bool __ParseString(const CGUI* UNUSED(pGUI), const CStrW& Value, EAlign& Output) { if (Value == L"left") Output = EAlign_Left; @@ -225,7 +248,7 @@ } template <> -bool __ParseString(const CStrW& Value, EVAlign& Output) +bool __ParseString(const CGUI* UNUSED(pGUI), const CStrW& Value, EVAlign& Output) { if (Value == L"top") Output = EVAlign_Top; @@ -240,42 +263,41 @@ } template <> -bool __ParseString(const CStrW& Value, CGUIString& Output) +bool __ParseString(const CGUI* UNUSED(pGUI), const CStrW& Value, CGUIString& Output) { Output.SetValue(Value); return true; } template <> -bool __ParseString(const CStrW& Value, CStr& Output) +bool __ParseString(const CGUI* UNUSED(pGUI), const CStrW& Value, CStr& Output) { - // Do very little. Output = Value.ToUTF8(); return true; } template <> -bool __ParseString(const CStrW& Value, CStrW& Output) +bool __ParseString(const CGUI* UNUSED(pGUI), const CStrW& Value, CStrW& Output) { Output = Value; return true; } template <> -bool __ParseString(const CStrW& Value, CGUISpriteInstance& Output) +bool __ParseString(const CGUI* UNUSED(pGUI), const CStrW& Value, CGUISpriteInstance& Output) { Output = CGUISpriteInstance(Value.ToUTF8()); return true; } template <> -bool __ParseString(const CStrW& UNUSED(Value), CGUIList& UNUSED(Output)) +bool __ParseString(const CGUI* UNUSED(pGUI), const CStrW& UNUSED(Value), CGUIList& UNUSED(Output)) { return false; } template <> -bool __ParseString(const CStrW& UNUSED(Value), CGUISeries& UNUSED(Output)) +bool __ParseString(const CGUI* UNUSED(pGUI), const CStrW& UNUSED(Value), CGUISeries& UNUSED(Output)) { return false; } Index: ps/trunk/source/gui/scripting/GuiScriptConversions.cpp =================================================================== --- ps/trunk/source/gui/scripting/GuiScriptConversions.cpp +++ ps/trunk/source/gui/scripting/GuiScriptConversions.cpp @@ -150,25 +150,10 @@ ToJSVal(cx, ret, val); } -template<> bool ScriptInterface::FromJSVal(JSContext* cx, JS::HandleValue v, CGUIColor& out) -{ - if (v.isString()) - { - CStr name; - if (!FromJSVal(cx, v, name)) - return false; - - if (!out.ParseString(name)) - { - JS_ReportError(cx, "Invalid color '%s'", name.c_str()); - return false; - } - return true; - } - - // Parse as object - return FromJSVal(cx, v, out); -} +/** + * The color depends on the predefined color database stored in the current GUI page. + */ +template<> bool ScriptInterface::FromJSVal(JSContext* cx, JS::HandleValue v, CGUIColor& out) = delete; template<> void ScriptInterface::ToJSVal(JSContext* cx, JS::MutableHandleValue ret, const CSize& val) { Index: ps/trunk/source/gui/tests/test_ParseString.h =================================================================== --- ps/trunk/source/gui/tests/test_ParseString.h +++ ps/trunk/source/gui/tests/test_ParseString.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2014 Wildfire Games. +/* Copyright (C) 2019 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -68,12 +68,12 @@ TestLogger nolog; CRect test; - TS_ASSERT(__ParseString(CStrW(L"0.0 10.0 20.0 30.0"), test)); + TS_ASSERT(__ParseString(nullptr, CStrW(L"0.0 10.0 20.0 30.0"), test)); TS_ASSERT_EQUALS(CRect(0.0, 10.0, 20.0, 30.0), test); - TS_ASSERT(!__ParseString(CStrW(L"0 10 20"), test)); - TS_ASSERT(!__ParseString(CStrW(L"0 10 20 30 40"), test)); - TS_ASSERT(!__ParseString(CStrW(L"0,0 10,0 20,0 30,0"), test)); + TS_ASSERT(!__ParseString(nullptr, CStrW(L"0 10 20"), test)); + TS_ASSERT(!__ParseString(nullptr, CStrW(L"0 10 20 30 40"), test)); + TS_ASSERT(!__ParseString(nullptr, CStrW(L"0,0 10,0 20,0 30,0"), test)); } void test_size() @@ -81,12 +81,12 @@ TestLogger nolog; CSize test; - TS_ASSERT(__ParseString(CStrW(L"0.0 10.0"), test)); + TS_ASSERT(__ParseString(nullptr, CStrW(L"0.0 10.0"), test)); TS_ASSERT_EQUALS(CSize(0.0, 10.0), test); - TS_ASSERT(!__ParseString(CStrW(L"0"), test)); - TS_ASSERT(!__ParseString(CStrW(L"0 10 20"), test)); - TS_ASSERT(!__ParseString(CStrW(L"0,0 10,0"), test)); + TS_ASSERT(!__ParseString(nullptr, CStrW(L"0"), test)); + TS_ASSERT(!__ParseString(nullptr, CStrW(L"0 10 20"), test)); + TS_ASSERT(!__ParseString(nullptr, CStrW(L"0,0 10,0"), test)); } void test_pos() @@ -94,11 +94,11 @@ TestLogger nolog; CPos test; - TS_ASSERT(__ParseString(CStrW(L"0.0 10.0"), test)); + TS_ASSERT(__ParseString(nullptr, CStrW(L"0.0 10.0"), test)); TS_ASSERT_EQUALS(CPos(0.0, 10.0), test); - TS_ASSERT(!__ParseString(CStrW(L"0"), test)); - TS_ASSERT(!__ParseString(CStrW(L"0 10 20"), test)); - TS_ASSERT(!__ParseString(CStrW(L"0,0 10,0"), test)); + TS_ASSERT(!__ParseString(nullptr, CStrW(L"0"), test)); + TS_ASSERT(!__ParseString(nullptr, CStrW(L"0 10 20"), test)); + TS_ASSERT(!__ParseString(nullptr, CStrW(L"0,0 10,0"), test)); } };