wrapped.cpp 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250
  1. #include <iostream>
  2. #include "wrappedBuffer.hpp"
  3. #define FAILED(got, op, expt) {std::cout << __FILE__ << ":" << __LINE__ << ": failed asserting " << got << " " << op << " expected " << expt << std::endl; return false; }
  4. bool simpleTest()
  5. {
  6. WrappedBuffer<char, 5> test;
  7. if (test.toString().size() != 0)
  8. FAILED(test.toString().size(), "!=", 0);
  9. if (test.size() != 0)
  10. FAILED(test.size(), "!=", 0);
  11. test.put('a');
  12. if (test.size() != 1)
  13. FAILED(test.size(), "!=", 1);
  14. if (test.toString().size() != 1)
  15. FAILED(test.toString().size(), "!=", 1);
  16. if (test.toString() != "a")
  17. FAILED(test.toString(), "!=", "a");
  18. test.put('b');
  19. if (test.size() != 2)
  20. FAILED(test.size(), "!=", 2);
  21. if (test.toString().size() != 2)
  22. FAILED(test.toString().size(), "!=", 2);
  23. if (test.toString() != "ab")
  24. FAILED(test.toString(), "!=", "ab");
  25. test.put('c');
  26. if (test.size() != 3)
  27. FAILED(test.size(), "!=", 3);
  28. if (test.toString().size() != 3)
  29. FAILED(test.toString().size(), "!=", 3);
  30. if (test.toString() != "abc")
  31. FAILED(test.toString(), "!=", "abc");
  32. test.pop_back();
  33. if (test.size() != 2)
  34. FAILED(test.size(), "!=", 2);
  35. if (test.toString().size() != 2)
  36. FAILED(test.toString().size(), "!=", 2);
  37. if (test.toString() != "ab")
  38. FAILED(test.toString(), "!=", "ab");
  39. return true;
  40. }
  41. bool _testBorder(WrappedBuffer<char, 3> &test)
  42. {
  43. test.put('a');
  44. test.put('b');
  45. test.put('c');
  46. if (test.size() != 3)
  47. FAILED(test.size(), "!=", 3);
  48. if (test.toString() != "abc")
  49. FAILED(test.toString(), "!=", "abc");
  50. test.put('d');
  51. if (test.size() != 3)
  52. FAILED(test.size(), "!=", 3);
  53. if (test.toString() != "bcd")
  54. FAILED(test.toString(), "!=", "bcd");
  55. test.put('e');
  56. if (test.size() != 3)
  57. FAILED(test.size(), "!=", 3);
  58. if (test.toString() != "cde")
  59. FAILED(test.toString(), "!=", "cde");
  60. test.put('f');
  61. if (test.size() != 3)
  62. FAILED(test.size(), "!=", 3);
  63. if (test.toString() != "def")
  64. FAILED(test.toString(), "!=", "def");
  65. test.put('g');
  66. if (test.size() != 3)
  67. FAILED(test.size(), "!=", 3);
  68. if (test.toString() != "efg")
  69. FAILED(test.toString(), "!=", "efg");
  70. test.pop_back();
  71. if (test.size() != 2)
  72. FAILED(test.size(), "!=", 2);
  73. if (test.toString() != "ef")
  74. FAILED(test.toString(), "!=", "ef");
  75. test.put('g');
  76. if (test.size() != 3)
  77. FAILED(test.size(), "!=", 3);
  78. if (test.toString() != "efg")
  79. FAILED(test.toString(), "!=", "efg");
  80. test.put('h');
  81. if (test.size() != 3)
  82. FAILED(test.size(), "!=", 3);
  83. if (test.toString() != "fgh")
  84. FAILED(test.toString(), "!=", "fgh");
  85. test.pop_back();
  86. if (test.size() != 2)
  87. FAILED(test.size(), "!=", 2);
  88. if (test.toString() != "fg")
  89. FAILED(test.toString(), "!=", "fg");
  90. test.put('h');
  91. if (test.size() != 3)
  92. FAILED(test.size(), "!=", 3);
  93. if (test.toString() != "fgh")
  94. FAILED(test.toString(), "!=", "fgh");
  95. test.put('i');
  96. if (test.size() != 3)
  97. FAILED(test.size(), "!=", 3);
  98. if (test.toString() != "ghi")
  99. FAILED(test.toString(), "!=", "ghi");
  100. test.pop_back();
  101. if (test.size() != 2)
  102. FAILED(test.size(), "!=", 2);
  103. if (test.toString() != "gh")
  104. FAILED(test.toString(), "!=", "gh");
  105. test.pop_back();
  106. if (test.size() != 1)
  107. FAILED(test.size(), "!=", 1);
  108. if (test.toString() != "g")
  109. FAILED(test.toString(), "!=", "g");
  110. test.pop_back();
  111. if (test.size() != 0)
  112. FAILED(test.size(), "!=", 0);
  113. test.pop_back();
  114. if (test.size() != 0)
  115. FAILED(test.size(), "!=", 0);
  116. return true;
  117. }
  118. bool testBorder()
  119. {
  120. WrappedBuffer<char, 3> test;
  121. if (!_testBorder(test))
  122. return false;
  123. return _testBorder(test);
  124. }
  125. bool _testBatch(WrappedBuffer<char, 3> &test)
  126. {
  127. char buf[] = {'a', 'b', 'c', 'd', 'e'};
  128. test.put(buf, 2);
  129. if (test.size() != 2)
  130. FAILED(test.size(), "!=", 2);
  131. if (test.toString() != "ab")
  132. FAILED(test.toString(), "!=", "ab");
  133. test.put(&buf[2], 2);
  134. if (test.size() != 3)
  135. FAILED(test.size(), "!=", 3);
  136. if (test.toString() != "bcd")
  137. FAILED(test.toString(), "!=", "bcd");
  138. test.put(&buf[2], 2);
  139. if (test.size() != 3)
  140. FAILED(test.size(), "!=", 3);
  141. if (test.toString() != "dcd")
  142. FAILED(test.toString(), "!=", "dcd");
  143. test.put(&buf[3], 2);
  144. if (test.size() != 3)
  145. FAILED(test.size(), "!=", 3);
  146. if (test.toString() != "dde")
  147. FAILED(test.toString(), "!=", "dde");
  148. test.put(&buf[2], 2);
  149. if (test.size() != 3)
  150. FAILED(test.size(), "!=", 3);
  151. if (test.toString() != "ecd")
  152. FAILED(test.toString(), "!=", "ecd");
  153. test.put(buf, 3);
  154. if (test.size() != 3)
  155. FAILED(test.size(), "!=", 3);
  156. if (test.toString() != "abc")
  157. FAILED(test.toString(), "!=", "abc");
  158. test.put(buf, 5);
  159. if (test.size() != 3)
  160. FAILED(test.size(), "!=", 3);
  161. if (test.toString() != "cde")
  162. FAILED(test.toString(), "!=", "cde");
  163. test.pop_back();
  164. if (test.size() != 2)
  165. FAILED(test.size(), "!=", 2);
  166. if (test.toString() != "cd")
  167. FAILED(test.toString(), "!=", "cd");
  168. test.put(buf, 2);
  169. if (test.size() != 3)
  170. FAILED(test.size(), "!=", 3);
  171. if (test.toString() != "dab")
  172. FAILED(test.toString(), "!=", "dab");
  173. test.pop_back();
  174. if (test.size() != 2)
  175. FAILED(test.size(), "!=", 2);
  176. if (test.toString() != "da")
  177. FAILED(test.toString(), "!=", "da");
  178. test.put(buf, 2);
  179. if (test.size() != 3)
  180. FAILED(test.size(), "!=", 3);
  181. if (test.toString() != "aab")
  182. FAILED(test.toString(), "!=", "aab");
  183. test.pop_back();
  184. if (test.size() != 2)
  185. FAILED(test.size(), "!=", 2);
  186. if (test.toString() != "aa")
  187. FAILED(test.toString(), "!=", "aa");
  188. test.put(&buf[1], 2);
  189. if (test.size() != 3)
  190. FAILED(test.size(), "!=", 3);
  191. if (test.toString() != "abc")
  192. FAILED(test.toString(), "!=", "abc");
  193. test.pop_back();
  194. if (test.size() != 2)
  195. FAILED(test.size(), "!=", 2);
  196. if (test.toString() != "ab")
  197. FAILED(test.toString(), "!=", "ab");
  198. test.put(buf, 2);
  199. if (test.size() != 3)
  200. FAILED(test.size(), "!=", 3);
  201. if (test.toString() != "bab")
  202. FAILED(test.toString(), "!=", "bab");
  203. return true;
  204. }
  205. bool testBatch()
  206. {
  207. WrappedBuffer<char, 3> test;
  208. return _testBatch(test);
  209. }
  210. int main()
  211. {
  212. if (!simpleTest())
  213. exit(EXIT_FAILURE);
  214. if (!testBorder())
  215. exit(EXIT_FAILURE);
  216. if (!testBatch())
  217. exit(EXIT_FAILURE);
  218. exit(EXIT_SUCCESS);
  219. }