TEST(EventToStringTest, ScalarType) { IntValue int_value(-42); std::string int_str; EXPECT_TRUE(ToString(&int_value, &int_str)); EXPECT_STREQ("-42", int_str.c_str()); UIntValue uint_value(42); std::string uint_str; EXPECT_TRUE(ToString(&uint_value, &uint_str)); EXPECT_STREQ("42", uint_str.c_str()); LongValue long_value(-42); std::string long_str; EXPECT_TRUE(ToString(&long_value, &long_str)); EXPECT_STREQ("-42", long_str.c_str()); ULongValue ulong_value(42); std::string ulong_str; EXPECT_TRUE(ToString(&ulong_value, &ulong_str)); EXPECT_STREQ("42", ulong_str.c_str()); FloatValue float_value(.5); std::string float_str; EXPECT_TRUE(ToString(&float_value, &float_str)); EXPECT_STREQ("0.5", float_str.c_str()); DoubleValue double_value(.25); std::string double_str; EXPECT_TRUE(ToString(&double_value, &double_str)); EXPECT_STREQ("0.25", double_str.c_str()); StringValue string_value("dummy"); std::string string_str; EXPECT_TRUE(ToString(&string_value, &string_str)); EXPECT_STREQ("\"dummy\"", string_str.c_str()); }
static bool assign_xml_value_to_protobuf_field(const std::string &value, xmltype xtype, ::google::protobuf::Message* msg, const ::google::protobuf::FieldDescriptor* field) { if (xtype==duration) return assign_xml_duration_value_to_protobuf_field(value,msg,field); // handle xmltype 'automatic' const ::google::protobuf::Reflection* reflection = msg->GetReflection(); switch (field->cpp_type()) { case ::google::protobuf::FieldDescriptor::CPPTYPE_INT32: { long longval; if (long_value(value,longval)) reflection->SetInt32(msg, field, longval); else printf("ERROR:\n"); break; } case ::google::protobuf::FieldDescriptor::CPPTYPE_INT64: { long longval; if (long_value(value,longval)) reflection->SetInt64(msg, field, longval); else printf("ERROR:\n"); break; } case ::google::protobuf::FieldDescriptor::CPPTYPE_UINT32: { unsigned long ulongval; if (ulong_value(value,ulongval)) reflection->SetUInt32(msg, field, ulongval); else printf("ERROR:\n"); break; } case ::google::protobuf::FieldDescriptor::CPPTYPE_UINT64: { unsigned long ulongval; if (ulong_value(value,ulongval)) reflection->SetUInt64(msg, field, ulongval); else printf("ERROR:\n"); break; } case ::google::protobuf::FieldDescriptor::CPPTYPE_DOUBLE: { double doubleval; if (double_value(value,doubleval)) reflection->SetDouble(msg, field, doubleval); else printf("ERROR:\n"); break; } case ::google::protobuf::FieldDescriptor::CPPTYPE_FLOAT: { double floatval; if (float_value(value,floatval)) reflection->SetFloat(msg, field, floatval); else printf("ERROR:\n"); break; } case ::google::protobuf::FieldDescriptor::CPPTYPE_BOOL: { bool boolval; if (bool_value(value,boolval)) reflection->SetBool(msg, field, boolval); else printf("ERROR:\n"); break; } case ::google::protobuf::FieldDescriptor::CPPTYPE_ENUM: { const ::google::protobuf::EnumDescriptor *enu = field->enum_type(); const ::google::protobuf::EnumValueDescriptor *enuval = enu->FindValueByName(value); if (!enuval) { printf("ERROR: '%s' not a valid value for %s !\n",value.c_str(),enu->name().c_str()); } else { //printf("SUCCESS: '%s' is a valid value for %s !\n",value.c_str(),enu->name().c_str()); reflection->SetEnum(msg, field, enuval); } break; } case ::google::protobuf::FieldDescriptor::CPPTYPE_STRING: reflection->SetString(msg, field, value); break; case ::google::protobuf::FieldDescriptor::CPPTYPE_MESSAGE: printf("ERROR: element should not contain text data but we got '%s' !\n",value.c_str()); return false; default: printf("ERROR: Unsupported field type '%d' !\n", field->cpp_type()); return false; } return true; }