TestConverters.cpp 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204
  1. #include "TestSuite.h"
  2. #include "../Source/NumberToString.h"
  3. #include "../Source/JSONNode.h"
  4. void TestSuite::TestConverters(void){
  5. UnitTest::SetPrefix("TestConverters.cpp - Converters");
  6. assertEquals(sizeof(char), 1);
  7. assertEquals(NumberToString::_itoa<char>((char)127), JSON_TEXT("127"));
  8. assertEquals(NumberToString::_itoa<char>((char)15), JSON_TEXT("15"));
  9. assertEquals(NumberToString::_itoa<char>((char)0), JSON_TEXT("0"));
  10. assertEquals(NumberToString::_itoa<char>((char)-15), JSON_TEXT("-15"));
  11. assertEquals(NumberToString::_itoa<char>((char)-127), JSON_TEXT("-127"));
  12. assertEquals(sizeof(short), 2);
  13. assertEquals(NumberToString::_itoa<short>((short)32767), JSON_TEXT("32767"));
  14. assertEquals(NumberToString::_itoa<short>((short)15), JSON_TEXT("15"));
  15. assertEquals(NumberToString::_itoa<short>((short)0), JSON_TEXT("0"));
  16. assertEquals(NumberToString::_itoa<short>((short)-15), JSON_TEXT("-15"));
  17. assertEquals(NumberToString::_itoa<short>((short)-32767), JSON_TEXT("-32767"));
  18. assertEquals(sizeof(int), 4);
  19. assertEquals(NumberToString::_itoa<int>(2147483647), JSON_TEXT("2147483647"));
  20. assertEquals(NumberToString::_itoa<int>(15), JSON_TEXT("15"));
  21. assertEquals(NumberToString::_itoa<int>(0), JSON_TEXT("0"));
  22. assertEquals(NumberToString::_itoa<int>(-15), JSON_TEXT("-15"));
  23. assertEquals(NumberToString::_itoa<int>(-2147483647), JSON_TEXT("-2147483647"));
  24. #ifdef TEST_LONG_EXTREMES
  25. assertEquals(NumberToString::_itoa<long>(9223372036854775807L), JSON_TEXT("9223372036854775807"));
  26. assertEquals(NumberToString::_itoa<long>(-9223372036854775807L), JSON_TEXT("-9223372036854775807"));
  27. #ifndef JSON_LIBRARY
  28. assertEquals(NumberToString::_uitoa<unsigned long>(18446744073709551615UL), JSON_TEXT("18446744073709551615"));
  29. #endif
  30. #endif
  31. assertEquals(NumberToString::_itoa<long>(15), JSON_TEXT("15"));
  32. assertEquals(NumberToString::_itoa<long>(0), JSON_TEXT("0"));
  33. assertEquals(NumberToString::_itoa<long>(-15), JSON_TEXT("-15"));
  34. #ifndef JSON_LIBRARY
  35. assertEquals(NumberToString::_uitoa<unsigned char>(255), JSON_TEXT("255"));
  36. assertEquals(NumberToString::_uitoa<unsigned char>(15), JSON_TEXT("15"));
  37. assertEquals(NumberToString::_uitoa<unsigned char>(0), JSON_TEXT("0"));
  38. assertEquals(NumberToString::_uitoa<unsigned short>(65535), JSON_TEXT("65535"));
  39. assertEquals(NumberToString::_uitoa<unsigned short>(15), JSON_TEXT("15"));
  40. assertEquals(NumberToString::_uitoa<unsigned short>(0), JSON_TEXT("0"));
  41. assertEquals(NumberToString::_uitoa<unsigned int>(4294967295u), JSON_TEXT("4294967295"));
  42. assertEquals(NumberToString::_uitoa<unsigned int>(15), JSON_TEXT("15"));
  43. assertEquals(NumberToString::_uitoa<unsigned int>(0), JSON_TEXT("0"));
  44. assertEquals(NumberToString::_uitoa<unsigned long>(15), JSON_TEXT("15"));
  45. assertEquals(NumberToString::_uitoa<unsigned long>(0), JSON_TEXT("0"));
  46. #endif
  47. assertEquals(NumberToString::_ftoa((json_number)1.0), JSON_TEXT("1"));
  48. assertEquals(NumberToString::_ftoa((json_number)1.002), JSON_TEXT("1.002"));
  49. assertEquals(NumberToString::_ftoa((json_number)10.0), JSON_TEXT("10"));
  50. assertEquals(NumberToString::_ftoa((json_number)-1.0), JSON_TEXT("-1"));
  51. assertEquals(NumberToString::_ftoa((json_number)-1.002), JSON_TEXT("-1.002"));
  52. assertEquals(NumberToString::_ftoa((json_number)-10.0), JSON_TEXT("-10"));
  53. assertEquals(NumberToString::_ftoa((json_number)0.0), JSON_TEXT("0"));
  54. assertTrue(_floatsAreEqual(1.1, 1.1));
  55. assertTrue(_floatsAreEqual(1.000000001, 1.0));
  56. assertTrue(_floatsAreEqual(1.0, 1.000000001));
  57. assertFalse(_floatsAreEqual(1.0, 1.0001));
  58. assertFalse(_floatsAreEqual(1.0001, 1.0));
  59. #ifdef JSON_CASE_INSENSITIVE_FUNCTIONS
  60. #ifdef JSON_UNIT_TEST
  61. UnitTest::SetPrefix("TestConverters.cpp - Checking case-insensitive");
  62. assertTrue(internalJSONNode::AreEqualNoCase(JSON_TEXT("hello"), JSON_TEXT("HeLLo")));
  63. assertTrue(internalJSONNode::AreEqualNoCase(JSON_TEXT("hell5o"), JSON_TEXT("HELL5O")));
  64. assertTrue(internalJSONNode::AreEqualNoCase(JSON_TEXT("HeLLo"), JSON_TEXT("hello")));
  65. assertTrue(internalJSONNode::AreEqualNoCase(JSON_TEXT("HELL5O"), JSON_TEXT("hell5o")));
  66. assertFalse(internalJSONNode::AreEqualNoCase(JSON_TEXT("hello"), JSON_TEXT("Hello ")));
  67. assertFalse(internalJSONNode::AreEqualNoCase(JSON_TEXT("hello"), JSON_TEXT("hi")));
  68. assertFalse(internalJSONNode::AreEqualNoCase(JSON_TEXT("hello"), JSON_TEXT("55555")));
  69. assertFalse(internalJSONNode::AreEqualNoCase(JSON_TEXT("hello"), JSON_TEXT("jonny")));
  70. #endif
  71. #endif
  72. #ifdef JSON_SAFE
  73. assertTrue(NumberToString::isNumeric(JSON_TEXT("0")));
  74. assertTrue(NumberToString::isNumeric(JSON_TEXT("1")));
  75. assertTrue(NumberToString::isNumeric(JSON_TEXT("0.")));
  76. assertTrue(NumberToString::isNumeric(JSON_TEXT("1.")));
  77. assertTrue(NumberToString::isNumeric(JSON_TEXT("0.0")));
  78. assertTrue(NumberToString::isNumeric(JSON_TEXT("1.0")));
  79. assertTrue(NumberToString::isNumeric(JSON_TEXT("0e2")));
  80. assertTrue(NumberToString::isNumeric(JSON_TEXT("1e2")));
  81. assertTrue(NumberToString::isNumeric(JSON_TEXT("0.e2")));
  82. assertTrue(NumberToString::isNumeric(JSON_TEXT("1.e2")));
  83. assertTrue(NumberToString::isNumeric(JSON_TEXT("0.0e2")));
  84. assertTrue(NumberToString::isNumeric(JSON_TEXT("1.0e2")));
  85. assertTrue(NumberToString::isNumeric(JSON_TEXT("0e-2")));
  86. assertTrue(NumberToString::isNumeric(JSON_TEXT("1e-2")));
  87. assertTrue(NumberToString::isNumeric(JSON_TEXT("0.e-2")));
  88. assertTrue(NumberToString::isNumeric(JSON_TEXT("1.e-2")));
  89. assertTrue(NumberToString::isNumeric(JSON_TEXT("0.0e-2")));
  90. assertTrue(NumberToString::isNumeric(JSON_TEXT("1.0e-2")));
  91. assertTrue(NumberToString::isNumeric(JSON_TEXT("0e+2")));
  92. assertTrue(NumberToString::isNumeric(JSON_TEXT("1e+2")));
  93. assertTrue(NumberToString::isNumeric(JSON_TEXT("0.e+2")));
  94. assertTrue(NumberToString::isNumeric(JSON_TEXT("1.e+2")));
  95. assertTrue(NumberToString::isNumeric(JSON_TEXT("0.0e+2")));
  96. assertTrue(NumberToString::isNumeric(JSON_TEXT("1.0e+2")));
  97. assertTrue(NumberToString::isNumeric(JSON_TEXT("-0")));
  98. assertTrue(NumberToString::isNumeric(JSON_TEXT("-1")));
  99. assertTrue(NumberToString::isNumeric(JSON_TEXT("-0.")));
  100. assertTrue(NumberToString::isNumeric(JSON_TEXT("-1.")));
  101. assertTrue(NumberToString::isNumeric(JSON_TEXT("-0.0")));
  102. assertTrue(NumberToString::isNumeric(JSON_TEXT("-1.0")));
  103. assertTrue(NumberToString::isNumeric(JSON_TEXT("-0e2")));
  104. assertTrue(NumberToString::isNumeric(JSON_TEXT("-1e2")));
  105. assertTrue(NumberToString::isNumeric(JSON_TEXT("-0.e2")));
  106. assertTrue(NumberToString::isNumeric(JSON_TEXT("-1.e2")));
  107. assertTrue(NumberToString::isNumeric(JSON_TEXT("-0.0e2")));
  108. assertTrue(NumberToString::isNumeric(JSON_TEXT("-1.0e2")));
  109. assertTrue(NumberToString::isNumeric(JSON_TEXT("-0e-2")));
  110. assertTrue(NumberToString::isNumeric(JSON_TEXT("-1e-2")));
  111. assertTrue(NumberToString::isNumeric(JSON_TEXT("-0.e-2")));
  112. assertTrue(NumberToString::isNumeric(JSON_TEXT("-1.e-2")));
  113. assertTrue(NumberToString::isNumeric(JSON_TEXT("-0.0e-2")));
  114. assertTrue(NumberToString::isNumeric(JSON_TEXT("-1.0e-2")));
  115. assertTrue(NumberToString::isNumeric(JSON_TEXT("-0e+2")));
  116. assertTrue(NumberToString::isNumeric(JSON_TEXT("-1e+2")));
  117. assertTrue(NumberToString::isNumeric(JSON_TEXT("-0.e+2")));
  118. assertTrue(NumberToString::isNumeric(JSON_TEXT("-1.e+2")));
  119. assertTrue(NumberToString::isNumeric(JSON_TEXT("-0.0e+2")));
  120. assertTrue(NumberToString::isNumeric(JSON_TEXT("-1.0e+2")));
  121. #ifdef JSON_STRICT
  122. assertFalse(NumberToString::isNumeric(JSON_TEXT("0xABCD")));
  123. assertFalse(NumberToString::isNumeric(JSON_TEXT("0124")));
  124. assertFalse(NumberToString::isNumeric(JSON_TEXT("+0")));
  125. assertFalse(NumberToString::isNumeric(JSON_TEXT("+1")));
  126. assertFalse(NumberToString::isNumeric(JSON_TEXT("+0.")));
  127. assertFalse(NumberToString::isNumeric(JSON_TEXT("+1.")));
  128. assertFalse(NumberToString::isNumeric(JSON_TEXT("+0.0")));
  129. assertFalse(NumberToString::isNumeric(JSON_TEXT("+1.0")));
  130. assertFalse(NumberToString::isNumeric(JSON_TEXT("+0e2")));
  131. assertFalse(NumberToString::isNumeric(JSON_TEXT("+1e2")));
  132. assertFalse(NumberToString::isNumeric(JSON_TEXT("+0.e2")));
  133. assertFalse(NumberToString::isNumeric(JSON_TEXT("+1.e2")));
  134. assertFalse(NumberToString::isNumeric(JSON_TEXT("+0.0e2")));
  135. assertFalse(NumberToString::isNumeric(JSON_TEXT("+1.0e2")));
  136. assertFalse(NumberToString::isNumeric(JSON_TEXT("+0e-2")));
  137. assertFalse(NumberToString::isNumeric(JSON_TEXT("+1e-2")));
  138. assertFalse(NumberToString::isNumeric(JSON_TEXT("+0.e-2")));
  139. assertFalse(NumberToString::isNumeric(JSON_TEXT("+1.e-2")));
  140. assertFalse(NumberToString::isNumeric(JSON_TEXT("+0.0e-2")));
  141. assertFalse(NumberToString::isNumeric(JSON_TEXT("+1.0e-2")));
  142. assertFalse(NumberToString::isNumeric(JSON_TEXT("+0e+2")));
  143. assertFalse(NumberToString::isNumeric(JSON_TEXT("+1e+2")));
  144. assertFalse(NumberToString::isNumeric(JSON_TEXT("+0.e+2")));
  145. assertFalse(NumberToString::isNumeric(JSON_TEXT("+1.e+2")));
  146. assertFalse(NumberToString::isNumeric(JSON_TEXT("+0.0e+2")));
  147. assertFalse(NumberToString::isNumeric(JSON_TEXT("+1.0e+2")));
  148. #else
  149. assertTrue(NumberToString::isNumeric(JSON_TEXT("0xABCD")));
  150. assertTrue(NumberToString::isNumeric(JSON_TEXT("0124")));
  151. assertTrue(NumberToString::isNumeric(JSON_TEXT("+0")));
  152. assertTrue(NumberToString::isNumeric(JSON_TEXT("+1")));
  153. assertTrue(NumberToString::isNumeric(JSON_TEXT("+0.")));
  154. assertTrue(NumberToString::isNumeric(JSON_TEXT("+1.")));
  155. assertTrue(NumberToString::isNumeric(JSON_TEXT("+0.0")));
  156. assertTrue(NumberToString::isNumeric(JSON_TEXT("+1.0")));
  157. assertTrue(NumberToString::isNumeric(JSON_TEXT("+0e2")));
  158. assertTrue(NumberToString::isNumeric(JSON_TEXT("+1e2")));
  159. assertTrue(NumberToString::isNumeric(JSON_TEXT("+0.e2")));
  160. assertTrue(NumberToString::isNumeric(JSON_TEXT("+1.e2")));
  161. assertTrue(NumberToString::isNumeric(JSON_TEXT("+0.0e2")));
  162. assertTrue(NumberToString::isNumeric(JSON_TEXT("+1.0e2")));
  163. assertTrue(NumberToString::isNumeric(JSON_TEXT("+0e-2")));
  164. assertTrue(NumberToString::isNumeric(JSON_TEXT("+1e-2")));
  165. assertTrue(NumberToString::isNumeric(JSON_TEXT("+0.e-2")));
  166. assertTrue(NumberToString::isNumeric(JSON_TEXT("+1.e-2")));
  167. assertTrue(NumberToString::isNumeric(JSON_TEXT("+0.0e-2")));
  168. assertTrue(NumberToString::isNumeric(JSON_TEXT("+1.0e-2")));
  169. assertTrue(NumberToString::isNumeric(JSON_TEXT("+0e+2")));
  170. assertTrue(NumberToString::isNumeric(JSON_TEXT("+1e+2")));
  171. assertTrue(NumberToString::isNumeric(JSON_TEXT("+0.e+2")));
  172. assertTrue(NumberToString::isNumeric(JSON_TEXT("+1.e+2")));
  173. assertTrue(NumberToString::isNumeric(JSON_TEXT("+0.0e+2")));
  174. assertTrue(NumberToString::isNumeric(JSON_TEXT("+1.0e+2")));
  175. #endif
  176. assertFalse(NumberToString::isNumeric(JSON_TEXT("0xABCDv")));
  177. assertFalse(NumberToString::isNumeric(JSON_TEXT("00124")));
  178. assertFalse(NumberToString::isNumeric(JSON_TEXT("09124")));
  179. assertFalse(NumberToString::isNumeric(JSON_TEXT("0no")));
  180. assertFalse(NumberToString::isNumeric(JSON_TEXT("no")));
  181. assertFalse(NumberToString::isNumeric(JSON_TEXT("n1234")));
  182. assertFalse(NumberToString::isNumeric(JSON_TEXT("12no")));
  183. assertFalse(NumberToString::isNumeric(JSON_TEXT("0en5")));
  184. #endif
  185. }