@@ -561,7 +561,34 @@ TEST(MSGPACK_NVP, combination)
561561
562562 msgpack::pack (sbuf, d1);
563563 msgpack::object_handle oh = msgpack::unpack (sbuf.data (), sbuf.size ());
564- nvp_derived d2 = oh.get ().as <nvp_derived>();
564+ msgpack::object obj = oh.get ();
565+
566+ EXPECT_EQ (obj.via .map .size , 3 );
567+
568+ EXPECT_EQ (std::string (obj.via .map .ptr [0 ].key .via .str .ptr , obj.via .map .ptr [0 ].key .via .str .size ), " ccc" );
569+ EXPECT_EQ (obj.via .map .ptr [0 ].val .via .i64 , 3 );
570+
571+ EXPECT_EQ (std::string (obj.via .map .ptr [1 ].key .via .str .ptr , obj.via .map .ptr [1 ].key .via .str .size ), " base" );
572+ EXPECT_EQ (obj.via .map .ptr [1 ].val .via .map .size , 2 );
573+ EXPECT_EQ (
574+ std::string (
575+ obj.via .map .ptr [1 ].val .via .map .ptr [0 ].key .via .str .ptr ,
576+ obj.via .map .ptr [1 ].val .via .map .ptr [0 ].key .via .str .size ),
577+ " aaa"
578+ );
579+ EXPECT_EQ (obj.via .map .ptr [1 ].val .via .map .ptr [0 ].val .via .i64 , 1 );
580+ EXPECT_EQ (
581+ std::string (
582+ obj.via .map .ptr [1 ].val .via .map .ptr [1 ].key .via .str .ptr ,
583+ obj.via .map .ptr [1 ].val .via .map .ptr [1 ].key .via .str .size ),
584+ " b"
585+ );
586+ EXPECT_EQ (obj.via .map .ptr [1 ].val .via .map .ptr [1 ].val .via .i64 , 2 );
587+
588+ EXPECT_EQ (std::string (obj.via .map .ptr [2 ].key .via .str .ptr , obj.via .map .ptr [2 ].key .via .str .size ), " ddd" );
589+ EXPECT_EQ (std::string (obj.via .map .ptr [2 ].val .via .str .ptr , obj.via .map .ptr [2 ].val .via .str .size ), " ABC" );
590+
591+ nvp_derived d2 = obj.as <nvp_derived>();
565592 EXPECT_EQ (d2.a , 1 );
566593 EXPECT_EQ (d2.b , 2 );
567594 EXPECT_EQ (d2.c , 3 );
0 commit comments