Эх сурвалжийг харах

1.增加了Update类的Test
2.修正了SelectTest中类名错误

tanghai 14 жил өмнө
parent
commit
151a1d0c6a

+ 2 - 0
Cpp/Platform/Orm/CMakeLists.txt

@@ -20,6 +20,7 @@ ADD_LIBRARY(Orm ${OrmSrc})
 SET_PROPERTY(TARGET Orm PROPERTY FOLDER "Platform")
 
 ADD_EXECUTABLE(SelectTest SelectTest.cc)
+ADD_EXECUTABLE(UpdateTest UpdateTest.cc)
 ADD_EXECUTABLE(MessageFieldTest MessageFieldTest.cc)
 ADD_EXECUTABLE(ColumnTest ColumnTest.cc)
 ADD_EXECUTABLE(ExprTest ExprTest.cc)
@@ -27,6 +28,7 @@ ADD_EXECUTABLE(DbResultTest DbResultTest.cc)
 
 SET(Tests
 	SelectTest
+	UpdateTest
 	MessageFieldTest
 	ColumnTest
 	ExprTest

+ 7 - 7
Cpp/Platform/Orm/SelectTest.cc

@@ -9,11 +9,11 @@
 
 namespace Egametang {
 
-class RpcServerTest: public testing::Test
+class SelectTest: public testing::Test
 {
 };
 
-TEST_F(RpcServerTest, SelectFrom)
+TEST_F(SelectTest, SelectFrom)
 {
 	std::string expectedSql;
 	expectedSql = "select * from Egametang.Person";
@@ -21,7 +21,7 @@ TEST_F(RpcServerTest, SelectFrom)
 	EXPECT_EQ(expectedSql, selectQuery1.ToString());
 }
 
-TEST_F(RpcServerTest, SelectWhere)
+TEST_F(SelectTest, SelectWhere)
 {
 	std::string expectedSql;
 	Select<Person> selectQuery(Column("*"));
@@ -30,7 +30,7 @@ TEST_F(RpcServerTest, SelectWhere)
 	EXPECT_EQ(expectedSql, selectQuery.ToString());
 }
 
-TEST_F(RpcServerTest, SelectDistinct)
+TEST_F(SelectTest, SelectDistinct)
 {
 	std::string expectedSql;
 	Select<Person> selectQuery(Column("*"));
@@ -39,7 +39,7 @@ TEST_F(RpcServerTest, SelectDistinct)
 	EXPECT_EQ(expectedSql, selectQuery.ToString());
 }
 
-TEST_F(RpcServerTest, SelectTwoColumn)
+TEST_F(SelectTest, SelectTwoColumn)
 {
 	std::string expectedSql;
 	Select<Person> selectQuery(Column("age")("name"));
@@ -48,7 +48,7 @@ TEST_F(RpcServerTest, SelectTwoColumn)
 	EXPECT_EQ(expectedSql, selectQuery.ToString());
 }
 
-TEST_F(RpcServerTest, LimitOffset)
+TEST_F(SelectTest, LimitOffset)
 {
 	std::string expectedSql;
 	Select<Person> selectQuery(Column("age")("name"));
@@ -57,7 +57,7 @@ TEST_F(RpcServerTest, LimitOffset)
 	EXPECT_EQ(expectedSql, selectQuery.ToString());
 }
 
-TEST_F(RpcServerTest, GroupByHaving)
+TEST_F(SelectTest, GroupByHaving)
 {
 	std::string expectedSql;
 	Select<Person> selectQuery(Column("age")("name"));

+ 72 - 1
Cpp/Platform/Orm/UpdateTest.cc

@@ -1,8 +1,79 @@
 // Copyright: All Rights Reserved
 // Author: egametang@gmail.com (tanghai)
 
-#include "Update.h"
+#include <gtest/gtest.h>
+#include <glog/logging.h>
+#include <gflags/gflags.h>
+#include "Orm/Column.h"
+#include "Orm/Exception.h"
+#include "Orm/Update.h"
+#include "Orm/Person.pb.h"
 
 namespace Egametang {
 
+class UpdateTest: public testing::Test
+{
+};
+
+TEST_F(UpdateTest, Update_OneField)
+{
+	std::string expectedSql;
+	expectedSql = "update Egametang.Person set guid = 1";
+	Person person;
+	person.set_guid(1);
+	Update update(person);
+	EXPECT_EQ(expectedSql, update.ToString());
+}
+
+TEST_F(UpdateTest, Update_MutiField)
+{
+	std::string expectedSql;
+	expectedSql =
+			"update Egametang.Person "
+			"set guid = 1, age = 18, comment = 'a good student!'";
+	Person person;
+	person.set_guid(1);
+	person.set_age(18);
+	person.set_comment("a good student!");
+	Update update(person);
+	EXPECT_EQ(expectedSql, update.ToString());
+}
+
+TEST_F(UpdateTest, Update_Where)
+{
+	std::string expectedSql;
+	expectedSql =
+			"update Egametang.Person "
+			"set guid = 1, age = 18, comment = 'a good student!' "
+			"where age > 10";
+	Person person;
+	person.set_guid(1);
+	person.set_age(18);
+	person.set_comment("a good student!");
+	Update update(person);
+	update.Where(Column("age") > 10);
+	EXPECT_EQ(expectedSql, update.ToString());
+}
+
+TEST_F(UpdateTest, Update_ThrowException)
+{
+	std::string expectedSql;
+	Person person;
+	Update update1(person);
+	EXPECT_THROW(update1.Where(Column("age") == 1).ToString(), MessageNoFeildIsSetException);
+
+	person.set_guid(1);
+	Update update2(person);
+	EXPECT_THROW(update2.Where(Column("color") == 1), MessageHasNoSuchFeildException);
+}
+
 } // namespace Egametang
+
+
+int main(int argc, char* argv[])
+{
+	testing::InitGoogleTest(&argc, argv);
+	google::InitGoogleLogging(argv[0]);
+	google::ParseCommandLineFlags(&argc, &argv, true);
+	return RUN_ALL_TESTS();
+}