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.

347 lines
9.7 KiB

  1. /* /////////////////////////////////////////////////////////////////////////
  2. * File: test/component/test.component.inserters.slice/test.component.inserters.slice.cpp
  3. *
  4. * Purpose: Implementation file for the test.component.inserters.slice project.
  5. *
  6. * Created: 14th February 2010
  7. * Updated: 6th August 2012
  8. *
  9. * Status: Wizard-generated
  10. *
  11. * License: (Licensed under the Synesis Software Open License)
  12. *
  13. * Copyright (c) 2010-2012, Synesis Software Pty Ltd.
  14. * All rights reserved.
  15. *
  16. * www: http://www.synesis.com.au/software
  17. *
  18. * ////////////////////////////////////////////////////////////////////// */
  19. #include <pantheios/util/test/compiler_warnings_suppression.first_include.h>
  20. /* xTests Header Files */
  21. #include <xtests/xtests.h>
  22. /* Pantheios Header Files */
  23. #include <pantheios/pantheios.hpp> // Pantheios C++ main header
  24. #include <pantheios/inserters/slice.hpp> // for pantheios::slice
  25. #include <pantheios/backends/bec.test.h>
  26. /* STLSOft Header Files */
  27. #include <stlsoft/conversion/integer_to_string.hpp>
  28. /* Standard C++ Header Files */
  29. #include <exception>
  30. #include <string>
  31. /* Standard C Header Files */
  32. #include <stdio.h>
  33. #include <stdlib.h>
  34. #include <pantheios/util/test/compiler_warnings_suppression.last_include.h>
  35. /* /////////////////////////////////////////////////////////////////////////
  36. * Forward declarations
  37. */
  38. static void test_1_01();
  39. static void test_1_02();
  40. static void test_1_03();
  41. static void test_1_04();
  42. static void test_1_05();
  43. static void test_1_06();
  44. static void test_1_07();
  45. static void test_1_08();
  46. static void test_1_09();
  47. #ifndef PANTHEIOS_NO_NAMESPACE
  48. using pantheios::pan_char_t;
  49. #endif /* !PANTHEIOS_NO_NAMESPACE */
  50. /* /////////////////////////////////////////////////////////////////////////
  51. * Globals
  52. */
  53. PANTHEIOS_EXTERN_C PAN_CHAR_T const PANTHEIOS_FE_PROCESS_IDENTITY[] = PANTHEIOS_LITERAL_STRING("test.component.inserters.slice");
  54. const pan_char_t alphabet[] = PANTHEIOS_LITERAL_STRING("abcdefghijklmnopqrstuvwxyz");
  55. /* /////////////////////////////////////////////////////////////////////////
  56. * Macros
  57. */
  58. #ifdef PANTHEIOS_USE_WIDE_STRINGS
  59. # define XTESTS_TEST_STRINGS_EQUAL_ XTESTS_TEST_WIDE_STRING_EQUAL
  60. #else
  61. # define XTESTS_TEST_STRINGS_EQUAL_ XTESTS_TEST_MULTIBYTE_STRING_EQUAL
  62. #endif
  63. /* /////////////////////////////////////////////////////////////////////////
  64. * Typedefs
  65. */
  66. typedef std::basic_string<pan_char_t> string_t;
  67. /* ////////////////////////////////////////////////////////////////////// */
  68. int main(int argc, char** argv)
  69. {
  70. int retCode = EXIT_SUCCESS;
  71. int verbosity = 2;
  72. XTESTS_COMMANDLINE_PARSEVERBOSITY(argc, argv, &verbosity);
  73. if(XTESTS_START_RUNNER("test.component.inserters.slice", verbosity))
  74. {
  75. XTESTS_RUN_CASE(test_1_01);
  76. XTESTS_RUN_CASE(test_1_02);
  77. XTESTS_RUN_CASE(test_1_03);
  78. XTESTS_RUN_CASE(test_1_04);
  79. XTESTS_RUN_CASE(test_1_05);
  80. XTESTS_RUN_CASE(test_1_06);
  81. XTESTS_RUN_CASE(test_1_07);
  82. XTESTS_RUN_CASE(test_1_08);
  83. XTESTS_RUN_CASE(test_1_09);
  84. XTESTS_PRINT_RESULTS();
  85. XTESTS_END_RUNNER_UPDATE_EXITCODE(&retCode);
  86. }
  87. return retCode;
  88. }
  89. /* ////////////////////////////////////////////////////////////////////// */
  90. static void test_1_01()
  91. {
  92. // 1. Setup
  93. pantheios::be::test::reset();
  94. // 2. Create test data
  95. { for(size_t i = 0; i != STLSOFT_NUM_ELEMENTS(alphabet); ++i)
  96. {
  97. pantheios::log_NOTICE(pantheios::slice(alphabet, i));
  98. }}
  99. // 3. Verification
  100. pantheios::be::test::Results results = pantheios::be::test::results();
  101. XTESTS_TEST(!results.empty());
  102. XTESTS_REQUIRE(XTESTS_TEST_INTEGER_EQUAL(27u, results.size()));
  103. { for(size_t i = 0; i != STLSOFT_NUM_ELEMENTS(alphabet); ++i)
  104. {
  105. XTESTS_TEST_STRINGS_EQUAL_(string_t(alphabet, i), results[i].statement);
  106. }}
  107. }
  108. static void test_1_02()
  109. {
  110. // 1. Setup
  111. pantheios::be::test::reset();
  112. // 2. Create test data
  113. { for(size_t i = 0; i != STLSOFT_NUM_ELEMENTS(alphabet); ++i)
  114. {
  115. pantheios::log_NOTICE(pantheios::slice(alphabet, i, PANTHEIOS_LITERAL_STRING("str")));
  116. }}
  117. // 3. Verification
  118. pantheios::be::test::Results results = pantheios::be::test::results();
  119. XTESTS_TEST(!results.empty());
  120. XTESTS_REQUIRE(XTESTS_TEST_INTEGER_EQUAL(27u, results.size()));
  121. { for(size_t i = 0; i != STLSOFT_NUM_ELEMENTS(alphabet); ++i)
  122. {
  123. XTESTS_TEST_STRINGS_EQUAL_(PANTHEIOS_LITERAL_STRING("str=") + string_t(alphabet, i), results[i].statement);
  124. }}
  125. }
  126. static void test_1_03()
  127. {
  128. // 1. Setup
  129. pantheios::be::test::reset();
  130. // 2. Create test data
  131. { for(size_t i = 0; i != STLSOFT_NUM_ELEMENTS(alphabet); ++i)
  132. {
  133. pantheios::log_NOTICE(pantheios::slice(alphabet, i, PANTHEIOS_LITERAL_STRING("str"), NULL, PANTHEIOS_LITERAL_STRING(":")));
  134. }}
  135. // 3. Verification
  136. pantheios::be::test::Results results = pantheios::be::test::results();
  137. XTESTS_TEST(!results.empty());
  138. XTESTS_REQUIRE(XTESTS_TEST_INTEGER_EQUAL(27u, results.size()));
  139. { for(size_t i = 0; i != STLSOFT_NUM_ELEMENTS(alphabet); ++i)
  140. {
  141. XTESTS_TEST_STRINGS_EQUAL_(PANTHEIOS_LITERAL_STRING("str:") + string_t(alphabet, i), results[i].statement);
  142. }}
  143. }
  144. static void test_1_04()
  145. {
  146. // 1. Setup
  147. pantheios::be::test::reset();
  148. // 2. Create test data
  149. { for(size_t i = 0; i != STLSOFT_NUM_ELEMENTS(alphabet); ++i)
  150. {
  151. pantheios::log_NOTICE(pantheios::slice(alphabet, i, PANTHEIOS_LITERAL_STRING("str"), PANTHEIOS_LITERAL_STRING("len")));
  152. }}
  153. // 3. Verification
  154. pantheios::be::test::Results results = pantheios::be::test::results();
  155. XTESTS_TEST(!results.empty());
  156. XTESTS_REQUIRE(XTESTS_TEST_INTEGER_EQUAL(27u, results.size()));
  157. { for(size_t i = 0; i != STLSOFT_NUM_ELEMENTS(alphabet); ++i)
  158. {
  159. pan_char_t num[21];
  160. XTESTS_TEST_STRINGS_EQUAL_(PANTHEIOS_LITERAL_STRING("str=") + string_t(alphabet, i) + PANTHEIOS_LITERAL_STRING(", len=") + stlsoft::integer_to_string(num, STLSOFT_NUM_ELEMENTS(num), i), results[i].statement);
  161. }}
  162. }
  163. static void test_1_05()
  164. {
  165. // 1. Setup
  166. pantheios::be::test::reset();
  167. // 2. Create test data
  168. { for(size_t i = 0; i != STLSOFT_NUM_ELEMENTS(alphabet); ++i)
  169. {
  170. pantheios::log_NOTICE(pantheios::slice(alphabet, i, PANTHEIOS_LITERAL_STRING("str"), PANTHEIOS_LITERAL_STRING("len"), PANTHEIOS_LITERAL_STRING(":")));
  171. }}
  172. // 3. Verification
  173. pantheios::be::test::Results results = pantheios::be::test::results();
  174. XTESTS_TEST(!results.empty());
  175. XTESTS_REQUIRE(XTESTS_TEST_INTEGER_EQUAL(27u, results.size()));
  176. { for(size_t i = 0; i != STLSOFT_NUM_ELEMENTS(alphabet); ++i)
  177. {
  178. pan_char_t num[21];
  179. XTESTS_TEST_STRINGS_EQUAL_(PANTHEIOS_LITERAL_STRING("str:") + string_t(alphabet, i) + PANTHEIOS_LITERAL_STRING(", len:") + stlsoft::integer_to_string(num, STLSOFT_NUM_ELEMENTS(num), i), results[i].statement);
  180. }}
  181. }
  182. static void test_1_06()
  183. {
  184. // 1. Setup
  185. pantheios::be::test::reset();
  186. // 2. Create test data
  187. { for(size_t i = 0; i != STLSOFT_NUM_ELEMENTS(alphabet); ++i)
  188. {
  189. pantheios::log_NOTICE(pantheios::slice(alphabet, i, PANTHEIOS_LITERAL_STRING("str"), PANTHEIOS_LITERAL_STRING("len"), PANTHEIOS_LITERAL_STRING(":"), PANTHEIOS_LITERAL_STRING("; ")));
  190. }}
  191. // 3. Verification
  192. pantheios::be::test::Results results = pantheios::be::test::results();
  193. XTESTS_TEST(!results.empty());
  194. XTESTS_REQUIRE(XTESTS_TEST_INTEGER_EQUAL(27u, results.size()));
  195. { for(size_t i = 0; i != STLSOFT_NUM_ELEMENTS(alphabet); ++i)
  196. {
  197. pan_char_t num[21];
  198. XTESTS_TEST_STRINGS_EQUAL_(PANTHEIOS_LITERAL_STRING("str:") + string_t(alphabet, i) + PANTHEIOS_LITERAL_STRING("; len:") + stlsoft::integer_to_string(num, STLSOFT_NUM_ELEMENTS(num), i), results[i].statement);
  199. }}
  200. }
  201. static void test_1_07()
  202. {
  203. // 1. Setup
  204. pantheios::be::test::reset();
  205. // 2. Create test data
  206. { for(size_t i = 0; i != STLSOFT_NUM_ELEMENTS(alphabet); ++i)
  207. {
  208. pantheios::log_NOTICE(pantheios::slice(alphabet, i, PANTHEIOS_LITERAL_STRING("str"), PANTHEIOS_LITERAL_STRING("len"), PANTHEIOS_LITERAL_STRING(":"), PANTHEIOS_LITERAL_STRING(";")));
  209. }}
  210. // 3. Verification
  211. pantheios::be::test::Results results = pantheios::be::test::results();
  212. XTESTS_TEST(!results.empty());
  213. XTESTS_REQUIRE(XTESTS_TEST_INTEGER_EQUAL(27u, results.size()));
  214. { for(size_t i = 0; i != STLSOFT_NUM_ELEMENTS(alphabet); ++i)
  215. {
  216. pan_char_t num[21];
  217. XTESTS_TEST_STRINGS_EQUAL_(PANTHEIOS_LITERAL_STRING("str:") + string_t(alphabet, i) + PANTHEIOS_LITERAL_STRING(";len:") + stlsoft::integer_to_string(num, STLSOFT_NUM_ELEMENTS(num), i), results[i].statement);
  218. }}
  219. }
  220. static void test_1_08()
  221. {
  222. // 1. Setup
  223. pantheios::be::test::reset();
  224. // 2. Create test data
  225. { for(size_t i = 0; i != STLSOFT_NUM_ELEMENTS(alphabet); ++i)
  226. {
  227. pantheios::log_NOTICE(pantheios::slice(alphabet, i, PANTHEIOS_LITERAL_STRING("str"), PANTHEIOS_LITERAL_STRING("len"), NULL, PANTHEIOS_LITERAL_STRING(";")));
  228. }}
  229. // 3. Verification
  230. pantheios::be::test::Results results = pantheios::be::test::results();
  231. XTESTS_TEST(!results.empty());
  232. XTESTS_REQUIRE(XTESTS_TEST_INTEGER_EQUAL(27u, results.size()));
  233. { for(size_t i = 0; i != STLSOFT_NUM_ELEMENTS(alphabet); ++i)
  234. {
  235. pan_char_t num[21];
  236. XTESTS_TEST_STRINGS_EQUAL_(PANTHEIOS_LITERAL_STRING("str=") + string_t(alphabet, i) + PANTHEIOS_LITERAL_STRING(";len=") + stlsoft::integer_to_string(num, STLSOFT_NUM_ELEMENTS(num), i), results[i].statement);
  237. }}
  238. }
  239. static void test_1_09()
  240. {
  241. }
  242. /* ///////////////////////////// end of file //////////////////////////// */