test_pg.cpp 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  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(TestPg) {
  6. using namespace NYql::NPureCalc;
  7. Y_UNIT_TEST(TestPgCompile) {
  8. auto factory = MakeProgramFactory();
  9. auto sql = TString(R"(
  10. SELECT * FROM "Input";
  11. )");
  12. UNIT_ASSERT_NO_EXCEPTION([&](){
  13. factory->MakePullListProgram(FakeIS(1,true), FakeOS(true), sql, ETranslationMode::PG);
  14. }());
  15. UNIT_ASSERT_EXCEPTION_CONTAINS([&](){
  16. factory->MakePullStreamProgram(FakeIS(1,true), FakeOS(true), sql, ETranslationMode::PG);
  17. }(), TCompileError, "PullList mode");
  18. UNIT_ASSERT_EXCEPTION_CONTAINS([&](){
  19. factory->MakePushStreamProgram(FakeIS(1, true), FakeOS(true), sql, ETranslationMode::PG);
  20. }(), TCompileError, "PullList mode");
  21. }
  22. Y_UNIT_TEST(TestSqlWrongTableName) {
  23. auto factory = MakeProgramFactory();
  24. auto sql = TString(R"(
  25. SELECT * FROM WrongTable;
  26. )");
  27. UNIT_ASSERT_EXCEPTION_CONTAINS([&](){
  28. factory->MakePullListProgram(FakeIS(1, true), FakeOS(true), sql, ETranslationMode::PG);
  29. }(), TCompileError, "Failed to optimize");
  30. UNIT_ASSERT_EXCEPTION_CONTAINS([&](){
  31. factory->MakePullStreamProgram(FakeIS(1, true), FakeOS(true), sql, ETranslationMode::PG);
  32. }(), TCompileError, "PullList mode");
  33. UNIT_ASSERT_EXCEPTION_CONTAINS([&](){
  34. factory->MakePushStreamProgram(FakeIS(1, true), FakeOS(true), sql, ETranslationMode::PG);
  35. }(), TCompileError, "PullList mode");
  36. }
  37. Y_UNIT_TEST(TestInvalidSql) {
  38. auto factory = MakeProgramFactory();
  39. auto sql = TString(R"(
  40. Just some invalid SQL;
  41. )");
  42. UNIT_ASSERT_EXCEPTION_CONTAINS([&](){
  43. factory->MakePullListProgram(FakeIS(1, true), FakeOS(true), sql, ETranslationMode::PG);
  44. }(), TCompileError, "failed to parse PG");
  45. UNIT_ASSERT_EXCEPTION_CONTAINS([&](){
  46. factory->MakePullStreamProgram(FakeIS(1, true), FakeOS(true), sql, ETranslationMode::PG);
  47. }(), TCompileError, "PullList mode");
  48. UNIT_ASSERT_EXCEPTION_CONTAINS([&](){
  49. factory->MakePushStreamProgram(FakeIS(1, true), FakeOS(true), sql, ETranslationMode::PG);
  50. }(), TCompileError, "PullList mode");
  51. }
  52. }