SelectTest.cc 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. // Copyright: All Rights Reserved
  2. // Author: egametang@gmail.com (tanghai)
  3. #include <gtest/gtest.h>
  4. #include <glog/logging.h>
  5. #include <gflags/gflags.h>
  6. #include "Orm/Select.h"
  7. #include "Orm/Person.pb.h"
  8. namespace Egametang {
  9. class SelectTest: public testing::Test
  10. {
  11. };
  12. TEST_F(SelectTest, SelectFrom)
  13. {
  14. std::string expectedSql;
  15. expectedSql = "select * from Egametang.Person";
  16. Select<Person> selectQuery1(Column("*"));
  17. EXPECT_EQ(expectedSql, selectQuery1.ToString());
  18. }
  19. TEST_F(SelectTest, SelectWhere)
  20. {
  21. std::string expectedSql;
  22. Select<Person> selectQuery(Column("*"));
  23. expectedSql = "select * from Egametang.Person where age > 10";
  24. selectQuery.Where(Column("age") > 10);
  25. EXPECT_EQ(expectedSql, selectQuery.ToString());
  26. }
  27. TEST_F(SelectTest, SelectDistinct)
  28. {
  29. std::string expectedSql;
  30. Select<Person> selectQuery(Column("*"));
  31. expectedSql = "select * distinct from Egametang.Person where age > 10";
  32. selectQuery.Distinct().Where(Column("age") > 10);
  33. EXPECT_EQ(expectedSql, selectQuery.ToString());
  34. }
  35. TEST_F(SelectTest, SelectTwoColumn)
  36. {
  37. std::string expectedSql;
  38. Select<Person> selectQuery(Column("age")("name"));
  39. expectedSql = "select age, name distinct from Egametang.Person where age > 10";
  40. selectQuery.Distinct().Where(Column("age") > 10);
  41. EXPECT_EQ(expectedSql, selectQuery.ToString());
  42. }
  43. TEST_F(SelectTest, LimitOffset)
  44. {
  45. std::string expectedSql;
  46. Select<Person> selectQuery(Column("age")("name"));
  47. expectedSql = "select age, name distinct from Egametang.Person where age > 10 limit 1 offset 10";
  48. selectQuery.Distinct().Where(Column("age") > 10).Limit(1).Offset(10);
  49. EXPECT_EQ(expectedSql, selectQuery.ToString());
  50. }
  51. TEST_F(SelectTest, GroupByHaving)
  52. {
  53. std::string expectedSql;
  54. Select<Person> selectQuery(Column("age")("name"));
  55. expectedSql =
  56. "select age, name distinct from Egametang.Person"
  57. " group by age having age > 10 limit 1 offset 10";
  58. selectQuery.Distinct()
  59. .GroupBy(Column("age"))
  60. .Having(Column("age") > 10)
  61. .Limit(1)
  62. .Offset(10);
  63. EXPECT_EQ(expectedSql, selectQuery.ToString());
  64. }
  65. } // namespace Egametang
  66. int main(int argc, char* argv[])
  67. {
  68. testing::InitGoogleTest(&argc, argv);
  69. google::InitGoogleLogging(argv[0]);
  70. google::ParseCommandLineFlags(&argc, &argv, true);
  71. return RUN_ALL_TESTS();
  72. }