test_sexpr.cpp 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. #include <yql/essentials/public/purecalc/purecalc.h>
  2. #include "fake_spec.h"
  3. #include <yql/essentials/public/purecalc/ut/protos/test_structs.pb.h>
  4. #include <library/cpp/testing/unittest/registar.h>
  5. Y_UNIT_TEST_SUITE(TestSExpr) {
  6. Y_UNIT_TEST(TestSExprCompile) {
  7. using namespace NYql::NPureCalc;
  8. auto factory = MakeProgramFactory();
  9. auto expr = TString(R"(
  10. (
  11. (return (Self '0))
  12. )
  13. )");
  14. UNIT_ASSERT_NO_EXCEPTION([&](){
  15. factory->MakePullStreamProgram(FakeIS(), FakeOS(), expr, ETranslationMode::SExpr);
  16. }());
  17. UNIT_ASSERT_NO_EXCEPTION([&](){
  18. factory->MakePullListProgram(FakeIS(), FakeOS(), expr, ETranslationMode::SExpr);
  19. }());
  20. UNIT_ASSERT_NO_EXCEPTION([&](){
  21. factory->MakePushStreamProgram(FakeIS(), FakeOS(), expr, ETranslationMode::SExpr);
  22. }());
  23. }
  24. Y_UNIT_TEST(TestInvalidSExpr) {
  25. using namespace NYql::NPureCalc;
  26. auto factory = MakeProgramFactory();
  27. auto sql = TString(R"(
  28. Some totally invalid SExpr
  29. )");
  30. UNIT_ASSERT_EXCEPTION_CONTAINS([&](){
  31. factory->MakePullStreamProgram(FakeIS(), FakeOS(), sql, ETranslationMode::SExpr);
  32. }(), TCompileError, "failed to parse s-expression");
  33. UNIT_ASSERT_EXCEPTION_CONTAINS([&](){
  34. factory->MakePullListProgram(FakeIS(), FakeOS(), sql, ETranslationMode::SExpr);
  35. }(), TCompileError, "failed to parse s-expression");
  36. UNIT_ASSERT_EXCEPTION_CONTAINS([&](){
  37. factory->MakePushStreamProgram(FakeIS(), FakeOS(), sql, ETranslationMode::SExpr);
  38. }(), TCompileError, "failed to parse s-expression");
  39. }
  40. }