SelectTest.cc 2.1 KB

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