multi_ut.cpp 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #include "mem.h"
  2. #include "multi.h"
  3. #include "str.h"
  4. #include <library/cpp/testing/unittest/registar.h>
  5. Y_UNIT_TEST_SUITE(TestMultiInput) {
  6. struct TTestCase {
  7. TMemoryInput Input1;
  8. TMemoryInput Input2;
  9. TMultiInput MultiInput;
  10. TTestCase(const TStringBuf in1, const TStringBuf in2)
  11. : Input1(in1)
  12. , Input2(in2)
  13. , MultiInput(&Input1, &Input2)
  14. {
  15. }
  16. void TestReadToResult(char c, size_t expectedRetval,
  17. const TString& expectedValue,
  18. const TString& initValue = "") {
  19. TString t = initValue;
  20. UNIT_ASSERT_VALUES_EQUAL(MultiInput.ReadTo(t, c), expectedRetval);
  21. UNIT_ASSERT_VALUES_EQUAL(t, expectedValue);
  22. }
  23. };
  24. Y_UNIT_TEST(TestReadTo) {
  25. TString t;
  26. TTestCase simpleCase("0123456789abc", "defghijk");
  27. simpleCase.TestReadToResult('7', 8, "0123456");
  28. simpleCase.TestReadToResult('f', 8, "89abcde");
  29. simpleCase.TestReadToResult('z', 5, "ghijk");
  30. }
  31. Y_UNIT_TEST(TestReadToBetweenStreams) {
  32. TTestCase case1("0123456789abc", "defghijk");
  33. case1.TestReadToResult('c', 13, "0123456789ab");
  34. case1.TestReadToResult('k', 8, "defghij");
  35. case1.TestReadToResult('z', 0, "TRASH", "TRASH");
  36. TTestCase case2("0123456789abc", "defghijk");
  37. case2.TestReadToResult('d', 14, "0123456789abc");
  38. case2.TestReadToResult('j', 6, "efghi");
  39. case2.TestReadToResult('k', 1, "", "TRASH");
  40. TTestCase case3("0123456789abc", "defghijk");
  41. case3.TestReadToResult('e', 15, "0123456789abcd");
  42. case3.TestReadToResult('j', 5, "fghi");
  43. case3.TestReadToResult('k', 1, "", "TRASH");
  44. }
  45. }