udf_counter_ut.cpp 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. #include "udf_counter.h"
  2. #include <library/cpp/testing/unittest/registar.h>
  3. using namespace NYql::NUdf;
  4. Y_UNIT_TEST_SUITE(TUdfCounter) {
  5. Y_UNIT_TEST(NullCounter) {
  6. TCounter c;
  7. c.Inc();
  8. c.Dec();
  9. c.Add(1);
  10. c.Sub(2);
  11. c.Set(3);
  12. }
  13. Y_UNIT_TEST(RealCounter) {
  14. i64 value = 10;
  15. TCounter c(&value);
  16. c.Inc();
  17. UNIT_ASSERT_VALUES_EQUAL(value, 11);
  18. c.Dec();
  19. UNIT_ASSERT_VALUES_EQUAL(value, 10);
  20. c.Add(1);
  21. UNIT_ASSERT_VALUES_EQUAL(value, 11);
  22. c.Sub(2);
  23. UNIT_ASSERT_VALUES_EQUAL(value, 9);
  24. c.Set(3);
  25. UNIT_ASSERT_VALUES_EQUAL(value, 3);
  26. }
  27. Y_UNIT_TEST(Copy) {
  28. i64 value = 1;
  29. TCounter c1(&value);
  30. TCounter c2(c1); // copy ctor
  31. c2.Inc();
  32. UNIT_ASSERT_VALUES_EQUAL(value, 2);
  33. TCounter c3;
  34. c3 = c1; // assign
  35. c3.Inc();
  36. UNIT_ASSERT_VALUES_EQUAL(value, 3);
  37. TCounter c4(std::move(c1)); // move ctor
  38. c4.Inc();
  39. UNIT_ASSERT_VALUES_EQUAL(value, 4);
  40. TCounter c5;
  41. c5 = std::move(c3); // move assign
  42. c5.Inc();
  43. UNIT_ASSERT_VALUES_EQUAL(value, 5);
  44. }
  45. }