hyperscan_ut.cpp 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. #include <yql/essentials/minikql/jsonpath/rewrapper/re.h>
  2. #include <yql/essentials/minikql/jsonpath/rewrapper/proto/serialization.pb.h>
  3. #include <library/cpp/testing/unittest/registar.h>
  4. #include <library/cpp/regex/hyperscan/hyperscan.h>
  5. namespace NReWrapper {
  6. namespace NDispatcher {
  7. Y_UNIT_TEST_SUITE(ReWrapperDispatcherTestHyperscan) {
  8. Y_UNIT_TEST(LegacySerialization) {
  9. unsigned int hyperscanFlags = 0;
  10. hyperscanFlags |= HS_FLAG_UTF8;
  11. if (NX86::HaveAVX2()) {
  12. hyperscanFlags |= HS_CPU_FEATURES_AVX2;
  13. }
  14. auto database = ::NHyperscan::Compile("[0-9]+", hyperscanFlags);
  15. auto string = ::NHyperscan::Serialize(database);
  16. auto wrapper = Deserialize(string);
  17. UNIT_ASSERT_VALUES_EQUAL(wrapper->Matches("123"), true);
  18. UNIT_ASSERT_VALUES_EQUAL(wrapper->Matches("abc"), false);
  19. }
  20. Y_UNIT_TEST(Serialization) {
  21. auto w1 = Compile("[0-9]+", 0, NReWrapper::TSerialization::kHyperscan);
  22. auto string = w1->Serialize();
  23. auto w2 = Deserialize(string);
  24. UNIT_ASSERT_VALUES_EQUAL(w1->Matches("123"), true);
  25. UNIT_ASSERT_VALUES_EQUAL(w1->Matches("abc"), false);
  26. UNIT_ASSERT_VALUES_EQUAL(w2->Matches("123"), true);
  27. UNIT_ASSERT_VALUES_EQUAL(w2->Matches("abc"), false);
  28. }
  29. }
  30. }
  31. }