| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197 |
- #include "TestSuite.h"
- #ifdef JSON_STRING_HEADER
- #ifdef JSON_UNICODE
- #include "UStringTest.h"
- #else
- #include "StringTest.h"
- #endif
- #else
- //otherwise it will use the regular STL strings and act as a control
- #include "../../libjson.h"
- #endif
- static void assertConstEmpty(const json_string & s){
- assertEquals(s.length(), 0);
- assertTrue(s.empty());
- assertCStringSame(s.c_str(), JSON_TEXT(""));
- assertEquals(s, s);
- assertEquals(s, JSON_TEXT(""));
- }
- static void assertEmpty(json_string & s){
- assertEquals(s.length(), 0);
- assertTrue(s.empty());
- assertCStringSame(s.c_str(), JSON_TEXT(""));
- assertEquals(s, s);
- assertEquals(s, JSON_TEXT(""));
- assertConstEmpty(s);
- }
- static void assertSame(json_string & s, json_string & m){
- assertEquals(s, m);
- assertCStringSame(s.c_str(), m.c_str());
- assertEquals(s.length(), m.length());
- s.swap(m);
- assertEquals(s, m);
- assertCStringSame(s.c_str(), m.c_str());
- assertEquals(s.length(), m.length());
- }
- static void assertDifferent(json_string & s, json_string & m){
- assertNotEquals(s, m);
- assertCStringNotSame(s.c_str(), m.c_str());
- }
- void TestSuite::TestString(void){
- UnitTest::SetPrefix("TestString.cpp - Test String Class");
- {
- json_string s;
- assertEmpty(s);
- }
- {
- json_string s;
- assertEmpty(s);
- json_string m(s);
- assertEmpty(m);
- assertEmpty(s);
- assertSame(s, m);
- }
- {
- json_string s(JSON_TEXT("hello"));
- assertEquals(s.length(), 5);
- assertFalse(s.empty());
- assertCStringSame(s.c_str(), JSON_TEXT("hello"));
- assertEquals(s, s);
- assertEquals(s, JSON_TEXT("hello"));
- s.clear();
- assertEmpty(s);
- }
- {
- json_string s(5, 'h');
- assertEquals(s.length(), 5);
- assertFalse(s.empty());
- assertCStringSame(s.c_str(), JSON_TEXT("hhhhh"));
- assertEquals(s, s);
- assertEquals(s, JSON_TEXT("hhhhh"));
- s.clear();
- assertEmpty(s);
- }
- {
- json_string s(5, 'h');
- json_string m(s);
- assertSame(s, m);
- }
- {
- json_string s(5, 'h');
- json_string m(s);
- assertSame(s, m);
- s.clear();
- assertEmpty(s);
- assertEquals(s.length(), 0);
- assertDifferent(s, m);
- }
- {
- json_string s(JSON_TEXT("hello"));
- json_string m = s;
- assertSame(s, m);
- m = s.substr(1, 3);
- assertEquals(m.length(), 3);
- assertEquals(m, JSON_TEXT("ell"));
- }
- {
- json_string s(JSON_TEXT("hello"));
- json_string m = s;
- assertSame(s, m);
- m = s.substr(1);
- assertEquals(m.length(), 4);
- assertEquals(m, JSON_TEXT("ello"));
- }
- {
- json_string s(JSON_TEXT("hello"));
- s += JSON_TEXT(" world");
- assertEquals(s.length(), 11);
- assertEquals(s, JSON_TEXT("hello world"));
- }
- {
- json_string s(JSON_TEXT("hello"));
- json_string m = s + JSON_TEXT(" world ") + s;
- assertEquals(m.length(), 17);
- assertEquals(m, JSON_TEXT("hello world hello"));
- }
- {
- json_string s(JSON_TEXT("hello"));
- s += 'a';
- s += 'a';
- s += 'a';
- s += 'a';
- assertEquals(s.length(), 9);
- assertEquals(s, JSON_TEXT("helloaaaa"));
- }
- {
- json_string s(JSON_TEXT("hello world"));
- size_t pos = s.find('w');
- assertEquals(pos, 6);
- }
- {
- json_string s(JSON_TEXT("hello world"));
- size_t pos = s.find('z');
- assertEquals(pos, json_string::npos);
- }
- {
- json_string s(JSON_TEXT("hello world"));
- size_t pos = s.find_first_not_of(JSON_TEXT("helo"));
- assertEquals(pos, 5);
- }
- {
- json_string s(JSON_TEXT("hello world"));
- size_t pos = s.find_first_of(JSON_TEXT("ol"));
- assertEquals(pos, 2);
- }
- {
- json_string s(JSON_TEXT("hello world"));
- s.erase(s.begin(), s.begin() + 3);
- assertEquals(s, JSON_TEXT("lo world"));
- }
-
- {
- json_string s(JSON_TEXT("hello world"), 5);
- assertEquals(s, JSON_TEXT("hello"));
- }
-
- #ifndef JSON_LIBRARY
- #ifndef JSON_STRING_HEADER
- {
- json_string s(JSON_TEXT("hello world"));
- std::wstring wtest(L"hello world");
- std::string stest("hello world");
- assertEquals(libjson::to_std_string(s), stest);
- assertEquals(stest, libjson::to_std_string(s));
- assertEquals(libjson::to_std_wstring(s), wtest);
- assertEquals(wtest, libjson::to_std_wstring(s));
-
- assertEquals(s, libjson::to_json_string(stest));
- assertEquals(libjson::to_json_string(stest), s);
- assertEquals(s, libjson::to_json_string(wtest));
- assertEquals(libjson::to_json_string(wtest), s);
- }
- #endif
- #endif
- }
|