of unit tests for the String class.legacy
| @@ -17,6 +17,7 @@ liblol_a_SOURCES = \ | |||||
| platform.cpp platform.h sprite.cpp sprite.h camera.cpp camera.h \ | platform.cpp platform.h sprite.cpp sprite.h camera.cpp camera.h \ | ||||
| \ | \ | ||||
| lol/unit.h lol/debug.h \ | lol/unit.h lol/debug.h \ | ||||
| lol/core/array.h lol/core/string.h \ | |||||
| lol/math/vector.h lol/math/half.h lol/math/real.h lol/math/remez.h \ | lol/math/vector.h lol/math/half.h lol/math/real.h lol/math/remez.h \ | ||||
| lol/math/math.h \ | lol/math/math.h \ | ||||
| \ | \ | ||||
| @@ -44,6 +44,11 @@ public: | |||||
| while (*str++); | while (*str++); | ||||
| } | } | ||||
| inline String(String const &s) | |||||
| : Super((Super const &)s) | |||||
| { | |||||
| } | |||||
| inline char &operator [](int n) | inline char &operator [](int n) | ||||
| { | { | ||||
| return ((Super &)*this)[n]; | return ((Super &)*this)[n]; | ||||
| @@ -54,7 +59,12 @@ public: | |||||
| return ((Super const &)*this)[n]; | return ((Super const &)*this)[n]; | ||||
| } | } | ||||
| inline String operator +(String const &s) | |||||
| inline int Count() const | |||||
| { | |||||
| return ((Super const &)*this).Count() - 1; | |||||
| } | |||||
| inline String operator +(String const &s) const | |||||
| { | { | ||||
| String ret(*this); | String ret(*this); | ||||
| return ret += s; | return ret += s; | ||||
| @@ -67,6 +77,36 @@ public: | |||||
| (Super &)*this += (Super const &)s; | (Super &)*this += (Super const &)s; | ||||
| return *this; | return *this; | ||||
| } | } | ||||
| inline String operator +(char c) const | |||||
| { | |||||
| String ret(*this); | |||||
| return ret += c; | |||||
| } | |||||
| inline String operator +=(char c) | |||||
| { | |||||
| ((Super &)*this).Last() = c; | |||||
| ((Super &)*this).Push('\0'); | |||||
| return *this; | |||||
| } | |||||
| inline bool operator ==(String const &s) const | |||||
| { | |||||
| if (this->m_count != s.m_count) | |||||
| return false; | |||||
| for (int i = 0; i < this->m_count; ++i) | |||||
| if ((*this)[i] != s[i]) | |||||
| return false; | |||||
| return true; | |||||
| } | |||||
| inline bool operator !=(String const &s) const | |||||
| { | |||||
| return !(*this == s); | |||||
| } | |||||
| }; | }; | ||||
| } /* namespace lol */ | } /* namespace lol */ | ||||
| @@ -22,7 +22,7 @@ endif | |||||
| testsuite_SOURCES = testsuite.cpp \ | testsuite_SOURCES = testsuite.cpp \ | ||||
| unit/vector.cpp unit/matrix.cpp unit/half.cpp unit/trig.cpp \ | unit/vector.cpp unit/matrix.cpp unit/half.cpp unit/trig.cpp \ | ||||
| unit/build.cpp unit/real.cpp unit/image.cpp unit/quat.cpp unit/cmplx.cpp \ | unit/build.cpp unit/real.cpp unit/image.cpp unit/quat.cpp unit/cmplx.cpp \ | ||||
| unit/array.cpp unit/rotation.cpp | |||||
| unit/array.cpp unit/rotation.cpp unit/string.cpp | |||||
| testsuite_CPPFLAGS = @LOL_CFLAGS@ | testsuite_CPPFLAGS = @LOL_CFLAGS@ | ||||
| testsuite_LDFLAGS = $(top_builddir)/src/liblol.a @LOL_LIBS@ | testsuite_LDFLAGS = $(top_builddir)/src/liblol.a @LOL_LIBS@ | ||||
| testsuite_DEPENDENCIES = $(top_builddir)/src/liblol.a | testsuite_DEPENDENCIES = $(top_builddir)/src/liblol.a | ||||
| @@ -0,0 +1,126 @@ | |||||
| // | |||||
| // Lol Engine | |||||
| // | |||||
| // Copyright: (c) 2010-2012 Sam Hocevar <sam@hocevar.net> | |||||
| // This program is free software; you can redistribute it and/or | |||||
| // modify it under the terms of the Do What The Fuck You Want To | |||||
| // Public License, Version 2, as published by Sam Hocevar. See | |||||
| // http://sam.zoy.org/projects/COPYING.WTFPL for more details. | |||||
| // | |||||
| #if defined HAVE_CONFIG_H | |||||
| # include "config.h" | |||||
| #endif | |||||
| #include "core.h" | |||||
| #include "lol/unit.h" | |||||
| namespace lol | |||||
| { | |||||
| LOLUNIT_FIXTURE(StringTest) | |||||
| { | |||||
| void SetUp() {} | |||||
| void TearDown() {} | |||||
| LOLUNIT_TEST(StringBuild) | |||||
| { | |||||
| String s1; | |||||
| LOLUNIT_ASSERT_EQUAL(s1.Count(), 0); | |||||
| LOLUNIT_ASSERT_EQUAL(s1[0], '\0'); | |||||
| String s2(""); | |||||
| LOLUNIT_ASSERT_EQUAL(s2.Count(), 0); | |||||
| LOLUNIT_ASSERT_EQUAL(s2[0], '\0'); | |||||
| String s3("a"); | |||||
| LOLUNIT_ASSERT_EQUAL(s3.Count(), 1); | |||||
| LOLUNIT_ASSERT_EQUAL(s3[0], 'a'); | |||||
| LOLUNIT_ASSERT_EQUAL(s3[1], '\0'); | |||||
| String s4(s3); | |||||
| LOLUNIT_ASSERT_EQUAL(s4.Count(), 1); | |||||
| LOLUNIT_ASSERT_EQUAL(s4[0], 'a'); | |||||
| LOLUNIT_ASSERT_EQUAL(s4[1], '\0'); | |||||
| } | |||||
| LOLUNIT_TEST(StringAppendChar) | |||||
| { | |||||
| String s; | |||||
| s += 'a'; | |||||
| s += 'b'; | |||||
| s += 'c'; | |||||
| LOLUNIT_ASSERT_EQUAL(s[0], 'a'); | |||||
| LOLUNIT_ASSERT_EQUAL(s[1], 'b'); | |||||
| LOLUNIT_ASSERT_EQUAL(s[2], 'c'); | |||||
| LOLUNIT_ASSERT_EQUAL(s[3], '\0'); | |||||
| } | |||||
| LOLUNIT_TEST(StringCopy) | |||||
| { | |||||
| String s1 = "abc"; | |||||
| String s2 = s1; | |||||
| LOLUNIT_ASSERT_EQUAL(s1[0], s2[0]); | |||||
| LOLUNIT_ASSERT_EQUAL(s1[1], s2[1]); | |||||
| LOLUNIT_ASSERT_EQUAL(s1[2], s2[2]); | |||||
| LOLUNIT_ASSERT_EQUAL(s1[3], s2[3]); | |||||
| } | |||||
| LOLUNIT_TEST(StringConcat) | |||||
| { | |||||
| String s1("ab"), s2("cd"); | |||||
| String s3 = s1 + s2; | |||||
| LOLUNIT_ASSERT_EQUAL(s3[0], 'a'); | |||||
| LOLUNIT_ASSERT_EQUAL(s3[1], 'b'); | |||||
| LOLUNIT_ASSERT_EQUAL(s3[2], 'c'); | |||||
| LOLUNIT_ASSERT_EQUAL(s3[3], 'd'); | |||||
| LOLUNIT_ASSERT_EQUAL(s3[4], '\0'); | |||||
| } | |||||
| LOLUNIT_TEST(StringAppendString) | |||||
| { | |||||
| String s1("ab"), s2("cd"); | |||||
| s1 += s2; | |||||
| LOLUNIT_ASSERT_EQUAL(s1[0], 'a'); | |||||
| LOLUNIT_ASSERT_EQUAL(s1[1], 'b'); | |||||
| LOLUNIT_ASSERT_EQUAL(s1[2], 'c'); | |||||
| LOLUNIT_ASSERT_EQUAL(s1[3], 'd'); | |||||
| LOLUNIT_ASSERT_EQUAL(s1[4], '\0'); | |||||
| s2 += s2; | |||||
| LOLUNIT_ASSERT_EQUAL(s2[0], 'c'); | |||||
| LOLUNIT_ASSERT_EQUAL(s2[1], 'd'); | |||||
| LOLUNIT_ASSERT_EQUAL(s2[2], 'c'); | |||||
| LOLUNIT_ASSERT_EQUAL(s2[3], 'd'); | |||||
| LOLUNIT_ASSERT_EQUAL(s2[4], '\0'); | |||||
| } | |||||
| LOLUNIT_TEST(StringEqual) | |||||
| { | |||||
| String s1("abc"); | |||||
| String s2("abc"); | |||||
| String s3("ab"); | |||||
| LOLUNIT_ASSERT(s1 == s2); | |||||
| LOLUNIT_ASSERT(!(s1 == s3)); | |||||
| } | |||||
| LOLUNIT_TEST(StringDifferent) | |||||
| { | |||||
| String s1("abc"); | |||||
| String s2("ab"); | |||||
| String s3("abc"); | |||||
| LOLUNIT_ASSERT(s1 != s2); | |||||
| LOLUNIT_ASSERT(!(s1 != s3)); | |||||
| } | |||||
| }; | |||||
| } /* namespace lol */ | |||||