TEST(json_proto, from_file) { Employee emp; ResultCode status = (ResultCode)idgs::parseIdgsConfig(&emp, "framework/test/test.json"); if (status != RC_SUCCESS) { DVLOG(2) << "Parse json error. Caused by " << getErrorDescription(status); return; } ASSERT_EQ(234000, emp.id()); ASSERT_EQ("Tom", emp.name()); ASSERT_EQ(14, emp.age()); ASSERT_EQ("male", emp.gender()); ASSERT_EQ("role1", emp.role(0)); ASSERT_EQ("role2", emp.role(1)); ASSERT_EQ("role3", emp.role(2)); ASSERT_EQ(19999, emp.dept().id()); ASSERT_EQ("12345", emp.dept().name()); ASSERT_EQ("2000-2004", emp.edu(0).when()); ASSERT_EQ("ncut", emp.edu(0).school()); ASSERT_EQ("2004-2008", emp.edu(1).when()); ASSERT_EQ("bj", emp.edu(1).school()); }
TEST(json_proto, from_object) { Employee emp; emp.set_id(234000); emp.set_name("Tom"); emp.set_age(14); emp.set_gender("male"); emp.add_role("role1"); emp.add_role("role2"); emp.add_role("role3"); emp.mutable_dept()->set_id(19990); emp.mutable_dept()->set_name("12345"); Education* edu = emp.add_edu(); edu->set_when("2000-2004"); edu->set_school("ncut"); string toJson = ProtobufJson::toJsonString(&emp); Employee emp1; ResultCode status = (ResultCode)ProtobufJson::parseJsonFromString(&emp1, toJson); if (status != RC_SUCCESS) { DVLOG(2) << "Parse json error. Caused by " << getErrorDescription(status); return; } ASSERT_EQ(emp1.id(), emp.id()); ASSERT_EQ(emp1.name(), emp.name()); ASSERT_EQ(emp1.age(), emp.age()); ASSERT_EQ(emp1.gender(), emp.gender()); ASSERT_EQ(emp1.role(0), emp.role(0)); ASSERT_EQ(emp1.role(1), emp.role(1)); ASSERT_EQ(emp1.role(2), emp.role(2)); ASSERT_EQ(emp1.dept().id(), emp.dept().id()); ASSERT_EQ(emp1.dept().name(), emp.dept().name()); ASSERT_EQ(emp1.edu(0).when(), emp.edu(0).when()); ASSERT_EQ(emp1.edu(0).school(), emp.edu(0).school()); }
TEST(json_proto, from_string) { string json; json.append("{\"id\":234000,\"name\":\"Tom\",\"age\":14,\"gender\":\"male\","); json.append("\"role\":[\"role1\",\"role2\",\"role3\"],"); json.append("\"dept\":{\"id\":19999,\"name\":\"12345\"},"); json.append("\"edu\":[{\"when\":\"2000-2004\",\"school\":\"ncut\"},"); json.append("{\"when\":\"2004-2008\",\"school\":\"bj\"}]}"); DVLOG(2) << "json string : " << json; Employee emp; ResultCode status = (ResultCode)ProtobufJson::parseJsonFromString(&emp, json); if (status != RC_SUCCESS) { DVLOG(2) << "Parse json error. Caused by " << getErrorDescription(status); return; } std::cout << std::string(4, ' '); ProtobufJson::toJsonStream(std::cout, &emp, true, 2); std::cout << std::endl; ProtobufJson::toJsonStream(std::cout, &emp, false); std::cout << std::endl; ASSERT_EQ(234000, emp.id()); ASSERT_EQ("Tom", emp.name()); ASSERT_EQ(14, emp.age()); ASSERT_EQ("male", emp.gender()); ASSERT_EQ("role1", emp.role(0)); ASSERT_EQ("role2", emp.role(1)); ASSERT_EQ("role3", emp.role(2)); ASSERT_EQ(19999, emp.dept().id()); ASSERT_EQ("12345", emp.dept().name()); ASSERT_EQ("2000-2004", emp.edu(0).when()); ASSERT_EQ("ncut", emp.edu(0).school()); ASSERT_EQ("2004-2008", emp.edu(1).when()); ASSERT_EQ("bj", emp.edu(1).school()); string toJson = ProtobufJson::toJsonString(&emp); ASSERT_EQ(json, toJson); Employee emp1; status = (ResultCode)ProtobufJson::parseJsonFromString(&emp1, toJson); if (status != RC_SUCCESS) { DVLOG(2) << "Parse json error. Caused by " << getErrorDescription(status); return; } ASSERT_EQ(emp1.id(), emp.id()); ASSERT_EQ(emp1.name(), emp.name()); ASSERT_EQ(emp1.age(), emp.age()); ASSERT_EQ(emp1.gender(), emp.gender()); ASSERT_EQ(emp1.role(0), emp.role(0)); ASSERT_EQ(emp1.role(1), emp.role(1)); ASSERT_EQ(emp1.role(2), emp.role(2)); ASSERT_EQ(emp1.dept().id(), emp.dept().id()); ASSERT_EQ(emp1.dept().name(), emp.dept().name()); ASSERT_EQ(emp1.edu(0).when(), emp.edu(0).when()); ASSERT_EQ(emp1.edu(0).school(), emp.edu(0).school()); ASSERT_EQ(emp1.edu(1).when(), emp.edu(1).when()); ASSERT_EQ(emp1.edu(1).school(), emp.edu(1).school()); }
bool EmployeeFilterByAge::isPassFilter(const Employee &employee) const { return minAge_ <= employee.age() && employee.age() <= maxAge_; }