TestString.cpp 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  1. #include "TestSuite.h"
  2. #ifdef JSON_STRING_HEADER
  3. #ifdef JSON_UNICODE
  4. #include "UStringTest.h"
  5. #else
  6. #include "StringTest.h"
  7. #endif
  8. #else
  9. //otherwise it will use the regular STL strings and act as a control
  10. #include "../../libjson.h"
  11. #endif
  12. static void assertConstEmpty(const json_string & s){
  13. assertEquals(s.length(), 0);
  14. assertTrue(s.empty());
  15. assertCStringSame(s.c_str(), JSON_TEXT(""));
  16. assertEquals(s, s);
  17. assertEquals(s, JSON_TEXT(""));
  18. }
  19. static void assertEmpty(json_string & s){
  20. assertEquals(s.length(), 0);
  21. assertTrue(s.empty());
  22. assertCStringSame(s.c_str(), JSON_TEXT(""));
  23. assertEquals(s, s);
  24. assertEquals(s, JSON_TEXT(""));
  25. assertConstEmpty(s);
  26. }
  27. static void assertSame(json_string & s, json_string & m){
  28. assertEquals(s, m);
  29. assertCStringSame(s.c_str(), m.c_str());
  30. assertEquals(s.length(), m.length());
  31. s.swap(m);
  32. assertEquals(s, m);
  33. assertCStringSame(s.c_str(), m.c_str());
  34. assertEquals(s.length(), m.length());
  35. }
  36. static void assertDifferent(json_string & s, json_string & m){
  37. assertNotEquals(s, m);
  38. assertCStringNotSame(s.c_str(), m.c_str());
  39. }
  40. void TestSuite::TestString(void){
  41. UnitTest::SetPrefix("TestString.cpp - Test String Class");
  42. {
  43. json_string s;
  44. assertEmpty(s);
  45. }
  46. {
  47. json_string s;
  48. assertEmpty(s);
  49. json_string m(s);
  50. assertEmpty(m);
  51. assertEmpty(s);
  52. assertSame(s, m);
  53. }
  54. {
  55. json_string s(JSON_TEXT("hello"));
  56. assertEquals(s.length(), 5);
  57. assertFalse(s.empty());
  58. assertCStringSame(s.c_str(), JSON_TEXT("hello"));
  59. assertEquals(s, s);
  60. assertEquals(s, JSON_TEXT("hello"));
  61. s.clear();
  62. assertEmpty(s);
  63. }
  64. {
  65. json_string s(5, 'h');
  66. assertEquals(s.length(), 5);
  67. assertFalse(s.empty());
  68. assertCStringSame(s.c_str(), JSON_TEXT("hhhhh"));
  69. assertEquals(s, s);
  70. assertEquals(s, JSON_TEXT("hhhhh"));
  71. s.clear();
  72. assertEmpty(s);
  73. }
  74. {
  75. json_string s(5, 'h');
  76. json_string m(s);
  77. assertSame(s, m);
  78. }
  79. {
  80. json_string s(5, 'h');
  81. json_string m(s);
  82. assertSame(s, m);
  83. s.clear();
  84. assertEmpty(s);
  85. assertEquals(s.length(), 0);
  86. assertDifferent(s, m);
  87. }
  88. {
  89. json_string s(JSON_TEXT("hello"));
  90. json_string m = s;
  91. assertSame(s, m);
  92. m = s.substr(1, 3);
  93. assertEquals(m.length(), 3);
  94. assertEquals(m, JSON_TEXT("ell"));
  95. }
  96. {
  97. json_string s(JSON_TEXT("hello"));
  98. json_string m = s;
  99. assertSame(s, m);
  100. m = s.substr(1);
  101. assertEquals(m.length(), 4);
  102. assertEquals(m, JSON_TEXT("ello"));
  103. }
  104. {
  105. json_string s(JSON_TEXT("hello"));
  106. s += JSON_TEXT(" world");
  107. assertEquals(s.length(), 11);
  108. assertEquals(s, JSON_TEXT("hello world"));
  109. }
  110. {
  111. json_string s(JSON_TEXT("hello"));
  112. json_string m = s + JSON_TEXT(" world ") + s;
  113. assertEquals(m.length(), 17);
  114. assertEquals(m, JSON_TEXT("hello world hello"));
  115. }
  116. {
  117. json_string s(JSON_TEXT("hello"));
  118. s += 'a';
  119. s += 'a';
  120. s += 'a';
  121. s += 'a';
  122. assertEquals(s.length(), 9);
  123. assertEquals(s, JSON_TEXT("helloaaaa"));
  124. }
  125. {
  126. json_string s(JSON_TEXT("hello world"));
  127. size_t pos = s.find('w');
  128. assertEquals(pos, 6);
  129. }
  130. {
  131. json_string s(JSON_TEXT("hello world"));
  132. size_t pos = s.find('z');
  133. assertEquals(pos, json_string::npos);
  134. }
  135. {
  136. json_string s(JSON_TEXT("hello world"));
  137. size_t pos = s.find_first_not_of(JSON_TEXT("helo"));
  138. assertEquals(pos, 5);
  139. }
  140. {
  141. json_string s(JSON_TEXT("hello world"));
  142. size_t pos = s.find_first_of(JSON_TEXT("ol"));
  143. assertEquals(pos, 2);
  144. }
  145. {
  146. json_string s(JSON_TEXT("hello world"));
  147. s.erase(s.begin(), s.begin() + 3);
  148. assertEquals(s, JSON_TEXT("lo world"));
  149. }
  150. {
  151. json_string s(JSON_TEXT("hello world"), 5);
  152. assertEquals(s, JSON_TEXT("hello"));
  153. }
  154. #ifndef JSON_LIBRARY
  155. #ifndef JSON_STRING_HEADER
  156. {
  157. json_string s(JSON_TEXT("hello world"));
  158. std::wstring wtest(L"hello world");
  159. std::string stest("hello world");
  160. assertEquals(libjson::to_std_string(s), stest);
  161. assertEquals(stest, libjson::to_std_string(s));
  162. assertEquals(libjson::to_std_wstring(s), wtest);
  163. assertEquals(wtest, libjson::to_std_wstring(s));
  164. assertEquals(s, libjson::to_json_string(stest));
  165. assertEquals(libjson::to_json_string(stest), s);
  166. assertEquals(s, libjson::to_json_string(wtest));
  167. assertEquals(libjson::to_json_string(wtest), s);
  168. }
  169. #endif
  170. #endif
  171. }