SelectTest.cc 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. #include <gtest/gtest.h>
  2. #include <glog/logging.h>
  3. #include <gflags/gflags.h>
  4. #include "Orm/Select.h"
  5. #include "Orm/Person.pb.h"
  6. namespace Egametang {
  7. class RpcServerTest: public testing::Test
  8. {
  9. public:
  10. };
  11. TEST_F(RpcServerTest, ToString)
  12. {
  13. std::string expectedSql;
  14. expectedSql = "select * from Egametang.Person";
  15. Select<Person> selectQuery1(Column("*"));
  16. EXPECT_EQ(expectedSql, selectQuery1.ToString());
  17. Select<Person> selectQuery2(Column("*"));
  18. expectedSql = "select * from Egametang.Person where age > 10";
  19. selectQuery2.Where(Column("age") > 10);
  20. EXPECT_EQ(expectedSql, selectQuery2.ToString());
  21. Select<Person> selectQuery3(Column("*"));
  22. expectedSql = "select * distinct from Egametang.Person where age > 10";
  23. selectQuery3.Distinct().Where(Column("age") > 10);
  24. EXPECT_EQ(expectedSql, selectQuery3.ToString());
  25. Select<Person> selectQuery4(Column("age, name"));
  26. expectedSql = "select age, name distinct from Egametang.Person where age > 10";
  27. selectQuery4.Distinct().Where(Column("age") > 10);
  28. EXPECT_EQ(expectedSql, selectQuery4.ToString());
  29. Select<Person> selectQuery5(Column("age, name"));
  30. expectedSql = "select age, name distinct from Egametang.Person where age > 10 limit 1 offset 10";
  31. selectQuery5.Distinct().Where(Column("age") > 10).Limit(1).Offset(10);
  32. EXPECT_EQ(expectedSql, selectQuery5.ToString());
  33. Select<Person> selectQuery6(Column("age, name"));
  34. expectedSql =
  35. "select age, name distinct from Egametang.Person"
  36. " group by age having age > 10 limit 1 offset 10";
  37. selectQuery6.Distinct()
  38. .GroupBy(Column("age"))
  39. .Having(Column("age") > 10)
  40. .Limit(1)
  41. .Offset(10);
  42. EXPECT_EQ(expectedSql, selectQuery6.ToString());
  43. }
  44. } // namespace Egametang
  45. int main(int argc, char* argv[])
  46. {
  47. testing::InitGoogleTest(&argc, argv);
  48. google::InitGoogleLogging(argv[0]);
  49. google::ParseCommandLineFlags(&argc, &argv, true);
  50. return RUN_ALL_TESTS();
  51. }