repeated_field_utils_ut.cpp 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #include "repeated_field_utils.h"
  2. #include <library/cpp/protobuf/util/ut/common_ut.pb.h>
  3. #include <library/cpp/testing/unittest/registar.h>
  4. using namespace NProtoBuf;
  5. Y_UNIT_TEST_SUITE(RepeatedFieldUtils) {
  6. Y_UNIT_TEST(RemoveIf) {
  7. {
  8. NProtobufUtilUt::TWalkTest msg;
  9. msg.AddRepInt(0);
  10. msg.AddRepInt(1);
  11. msg.AddRepInt(2);
  12. msg.AddRepInt(3);
  13. msg.AddRepInt(4);
  14. msg.AddRepInt(5);
  15. auto cond = [](ui32 val) {
  16. return val % 2 == 0;
  17. };
  18. RemoveRepeatedFieldItemIf(msg.MutableRepInt(), cond);
  19. UNIT_ASSERT_VALUES_EQUAL(3, msg.RepIntSize());
  20. UNIT_ASSERT_VALUES_EQUAL(1, msg.GetRepInt(0));
  21. UNIT_ASSERT_VALUES_EQUAL(3, msg.GetRepInt(1));
  22. UNIT_ASSERT_VALUES_EQUAL(5, msg.GetRepInt(2));
  23. }
  24. {
  25. NProtobufUtilUt::TWalkTest msg;
  26. msg.AddRepSub()->SetOptInt(0);
  27. msg.AddRepSub()->SetOptInt(1);
  28. msg.AddRepSub()->SetOptInt(2);
  29. msg.AddRepSub()->SetOptInt(3);
  30. msg.AddRepSub()->SetOptInt(4);
  31. msg.AddRepSub()->SetOptInt(5);
  32. auto cond = [](const NProtobufUtilUt::TWalkTest& val) {
  33. return val.GetOptInt() % 2 == 0;
  34. };
  35. RemoveRepeatedFieldItemIf(msg.MutableRepSub(), cond);
  36. UNIT_ASSERT_VALUES_EQUAL(3, msg.RepSubSize());
  37. UNIT_ASSERT_VALUES_EQUAL(1, msg.GetRepSub(0).GetOptInt());
  38. UNIT_ASSERT_VALUES_EQUAL(3, msg.GetRepSub(1).GetOptInt());
  39. UNIT_ASSERT_VALUES_EQUAL(5, msg.GetRepSub(2).GetOptInt());
  40. }
  41. }
  42. }