You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

248 line
6.2 KiB

  1. //
  2. // Lol Engine
  3. //
  4. // Copyright: (c) 2010-2014 Sam Hocevar <sam@hocevar.net>
  5. // This program is free software; you can redistribute it and/or
  6. // modify it under the terms of the Do What The Fuck You Want To
  7. // Public License, Version 2, as published by Sam Hocevar. See
  8. // http://www.wtfpl.net/ for more details.
  9. //
  10. #include <lol/engine-internal.h>
  11. #include <lolunit.h>
  12. namespace lol
  13. {
  14. lolunit_declare_fixture(StringTest)
  15. {
  16. void SetUp() {}
  17. void TearDown() {}
  18. lolunit_declare_test(StringBuild)
  19. {
  20. String s1;
  21. lolunit_assert_equal(s1.Count(), 0);
  22. lolunit_assert_equal(s1[0], '\0');
  23. String s2("");
  24. lolunit_assert_equal(s2.Count(), 0);
  25. lolunit_assert_equal(s2[0], '\0');
  26. String s3("a");
  27. lolunit_assert_equal(s3.Count(), 1);
  28. lolunit_assert_equal(s3[0], 'a');
  29. lolunit_assert_equal(s3[1], '\0');
  30. String s4(s3);
  31. lolunit_assert_equal(s4.Count(), 1);
  32. lolunit_assert_equal(s4[0], 'a');
  33. lolunit_assert_equal(s4[1], '\0');
  34. }
  35. lolunit_declare_test(StringAppendChar)
  36. {
  37. String s;
  38. s += 'a';
  39. s += 'b';
  40. s += 'c';
  41. lolunit_assert_equal(s[0], 'a');
  42. lolunit_assert_equal(s[1], 'b');
  43. lolunit_assert_equal(s[2], 'c');
  44. lolunit_assert_equal(s[3], '\0');
  45. }
  46. lolunit_declare_test(StringCopy)
  47. {
  48. String s1 = "abc";
  49. String s2 = s1;
  50. lolunit_assert_equal(s1[0], s2[0]);
  51. lolunit_assert_equal(s1[1], s2[1]);
  52. lolunit_assert_equal(s1[2], s2[2]);
  53. lolunit_assert_equal(s1[3], s2[3]);
  54. }
  55. lolunit_declare_test(StringConcat)
  56. {
  57. String s1("ab"), s2("cd");
  58. String s3 = s1 + s2;
  59. lolunit_assert_equal(s3[0], 'a');
  60. lolunit_assert_equal(s3[1], 'b');
  61. lolunit_assert_equal(s3[2], 'c');
  62. lolunit_assert_equal(s3[3], 'd');
  63. lolunit_assert_equal(s3[4], '\0');
  64. }
  65. lolunit_declare_test(StringAppendString)
  66. {
  67. String s1("ab"), s2("cd");
  68. s1 += s2;
  69. lolunit_assert_equal(s1.Count(), 4);
  70. lolunit_assert_equal(s1[0], 'a');
  71. lolunit_assert_equal(s1[1], 'b');
  72. lolunit_assert_equal(s1[2], 'c');
  73. lolunit_assert_equal(s1[3], 'd');
  74. lolunit_assert_equal(s1[4], '\0');
  75. s2 += s2;
  76. lolunit_assert_equal(s2.Count(), 4);
  77. lolunit_assert_equal(s2[0], 'c');
  78. lolunit_assert_equal(s2[1], 'd');
  79. lolunit_assert_equal(s2[2], 'c');
  80. lolunit_assert_equal(s2[3], 'd');
  81. lolunit_assert_equal(s2[4], '\0');
  82. }
  83. lolunit_declare_test(StringEqual)
  84. {
  85. String s1("abc");
  86. String s2("abc");
  87. String s3("ab");
  88. lolunit_assert(s1 == s2);
  89. lolunit_assert(!(s1 == s3));
  90. }
  91. lolunit_declare_test(StringDifferent)
  92. {
  93. String s1("abc");
  94. String s2("ab");
  95. String s3("abc");
  96. lolunit_assert(s1 != s2);
  97. lolunit_assert(!(s1 != s3));
  98. }
  99. lolunit_declare_test(StringCharsEqual)
  100. {
  101. char const* sz = "abc";
  102. String s1("abc");
  103. String s2("ab");
  104. lolunit_assert(s1 == sz);
  105. lolunit_assert(sz == s1);
  106. lolunit_assert(!(s2 == sz));
  107. lolunit_assert(!(sz == s2));
  108. }
  109. lolunit_declare_test(StringCharsDifferent)
  110. {
  111. char const* sz = "abc";
  112. String s1("ab");
  113. String s2("abc");
  114. lolunit_assert(s1 != sz);
  115. lolunit_assert(sz != s1);
  116. lolunit_assert(!(s2 != sz));
  117. lolunit_assert(!(sz != s2));
  118. }
  119. lolunit_declare_test(StringPrintf)
  120. {
  121. String s1 = "3a";
  122. String s2 = String::Printf("%d%x", 3, 10);
  123. lolunit_assert(s1 == s2);
  124. String s3 = "abc 3";
  125. String s4 = String::Printf("abc %d", 3);
  126. lolunit_assert(s3 == s4);
  127. }
  128. lolunit_declare_test(SubString)
  129. {
  130. String s1 = "Hello World";
  131. String s2 = s1.Sub(0, 5);
  132. String s3 = "Hello";
  133. lolunit_assert(s2 == s3);
  134. String s4 = s1.Sub(6, 5);
  135. String s5 = "World";
  136. lolunit_assert(s4 == s5);
  137. }
  138. lolunit_declare_test(IndexOf)
  139. {
  140. String s1 = "Hello World";
  141. ptrdiff_t i1 = s1.IndexOf('H');
  142. ptrdiff_t i2 = s1.IndexOf('W');
  143. ptrdiff_t i3 = s1.IndexOf('d');
  144. ptrdiff_t i4 = s1.IndexOf("Hello");
  145. ptrdiff_t i5 = s1.IndexOf("World");
  146. ptrdiff_t i6 = s1.IndexOf("lo");
  147. ptrdiff_t i7 = s1.IndexOf("Hello World");
  148. ptrdiff_t i8 = s1.IndexOf("Sup' dude");
  149. lolunit_assert(i1 == 0);
  150. lolunit_assert(i2 == 6);
  151. lolunit_assert(i3 == 10);
  152. lolunit_assert(i4 == i1);
  153. lolunit_assert(i5 == i2);
  154. lolunit_assert(i6 == 3);
  155. lolunit_assert(i7 == 0);
  156. lolunit_assert(i8 == -1);
  157. }
  158. lolunit_declare_test(LastIndexOf)
  159. {
  160. String s1 = "Hello World";
  161. ptrdiff_t i1 = s1.LastIndexOf('H');
  162. ptrdiff_t i2 = s1.LastIndexOf('W');
  163. ptrdiff_t i3 = s1.LastIndexOf('d');
  164. ptrdiff_t i4 = s1.LastIndexOf("Hello");
  165. ptrdiff_t i5 = s1.LastIndexOf("World");
  166. ptrdiff_t i6 = s1.LastIndexOf("lo");
  167. ptrdiff_t i7 = s1.LastIndexOf("Hello World");
  168. ptrdiff_t i8 = s1.LastIndexOf("Sup' dude");
  169. ptrdiff_t i9 = s1.LastIndexOf('l');
  170. lolunit_assert(i1 == 0);
  171. lolunit_assert(i2 == 6);
  172. lolunit_assert(i3 == 10);
  173. lolunit_assert(i4 == i1);
  174. lolunit_assert(i5 == i2);
  175. lolunit_assert(i6 == 3);
  176. lolunit_assert(i7 == 0);
  177. lolunit_assert(i8 == -1);
  178. lolunit_assert(i9 == 9);
  179. }
  180. lolunit_declare_test(StartsEndsWith)
  181. {
  182. String s = "lolilol";
  183. lolunit_assert(s.StartsWith("loli"));
  184. lolunit_assert(!s.StartsWith("lolo"));
  185. lolunit_assert(!s.StartsWith("lolilolilol"));
  186. lolunit_assert(s.EndsWith("ilol"));
  187. lolunit_assert(!s.EndsWith("olol"));
  188. lolunit_assert(!s.EndsWith("lolilolilol"));
  189. }
  190. lolunit_declare_test(StringCompare)
  191. {
  192. String s1 = "lolilol";
  193. String s2 = s1;
  194. String s3 = "trololol";
  195. String s4 = "lolilololol";
  196. lolunit_assert(!(s1 < s2));
  197. lolunit_assert(!(s2 < s1));
  198. lolunit_assert(s1 < s3);
  199. lolunit_assert(s1 < s4);
  200. lolunit_assert(!(s4 < s1));
  201. }
  202. };
  203. } /* namespace lol */