@@ -627,6 +627,105 @@ TEST(MSGPACKC, simple_buffer_fixext_4byte_65536)
627627 msgpack_sbuffer_destroy (&sbuf);
628628}
629629
630+ TEST (MSGPACKC, simple_buffer_timestamp_32)
631+ {
632+ msgpack_timestamp ts = {
633+ 0xffffffff ,
634+ 0
635+ };
636+
637+ msgpack_sbuffer sbuf;
638+ msgpack_sbuffer_init (&sbuf);
639+ msgpack_packer pk;
640+ msgpack_packer_init (&pk, &sbuf, msgpack_sbuffer_write);
641+
642+ msgpack_pack_timestamp (&pk, &ts);
643+ msgpack_zone z;
644+ msgpack_zone_init (&z, 2048 );
645+ msgpack_object obj;
646+ msgpack_unpack_return ret =
647+ msgpack_unpack (sbuf.data , sbuf.size , NULL , &z, &obj);
648+ EXPECT_EQ (MSGPACK_UNPACK_SUCCESS, ret);
649+ EXPECT_EQ (MSGPACK_OBJECT_EXT, obj.type );
650+ EXPECT_EQ (4u , obj.via .ext .size );
651+ EXPECT_EQ (-1 , obj.via .ext .type );
652+ msgpack_timestamp ts2;
653+ bool r = msgpack_object_to_timestamp (&obj, &ts2);
654+
655+ EXPECT_TRUE (r);
656+ EXPECT_EQ (ts.tv_sec , ts2.tv_sec );
657+ EXPECT_EQ (ts.tv_nsec , ts2.tv_nsec );
658+
659+ msgpack_zone_destroy (&z);
660+ msgpack_sbuffer_destroy (&sbuf);
661+ }
662+
663+ TEST (MSGPACKC, simple_buffer_timestamp_64)
664+ {
665+ msgpack_timestamp ts = {
666+ 0x3ffffffffL ,
667+ 999999999
668+ };
669+
670+ msgpack_sbuffer sbuf;
671+ msgpack_sbuffer_init (&sbuf);
672+ msgpack_packer pk;
673+ msgpack_packer_init (&pk, &sbuf, msgpack_sbuffer_write);
674+
675+ msgpack_pack_timestamp (&pk, &ts);
676+ msgpack_zone z;
677+ msgpack_zone_init (&z, 2048 );
678+ msgpack_object obj;
679+ msgpack_unpack_return ret =
680+ msgpack_unpack (sbuf.data , sbuf.size , NULL , &z, &obj);
681+ EXPECT_EQ (MSGPACK_UNPACK_SUCCESS, ret);
682+ EXPECT_EQ (MSGPACK_OBJECT_EXT, obj.type );
683+ EXPECT_EQ (8u , obj.via .ext .size );
684+ EXPECT_EQ (-1 , obj.via .ext .type );
685+ msgpack_timestamp ts2;
686+ bool r = msgpack_object_to_timestamp (&obj, &ts2);
687+
688+ EXPECT_TRUE (r);
689+ EXPECT_EQ (ts.tv_sec , ts2.tv_sec );
690+ EXPECT_EQ (ts.tv_nsec , ts2.tv_nsec );
691+
692+ msgpack_zone_destroy (&z);
693+ msgpack_sbuffer_destroy (&sbuf);
694+ }
695+
696+ TEST (MSGPACKC, simple_buffer_timestamp_96)
697+ {
698+ msgpack_timestamp ts = {
699+ 0x7fffffffffffffffLL ,
700+ 999999999
701+ };
702+
703+ msgpack_sbuffer sbuf;
704+ msgpack_sbuffer_init (&sbuf);
705+ msgpack_packer pk;
706+ msgpack_packer_init (&pk, &sbuf, msgpack_sbuffer_write);
707+
708+ msgpack_pack_timestamp (&pk, &ts);
709+ msgpack_zone z;
710+ msgpack_zone_init (&z, 2048 );
711+ msgpack_object obj;
712+ msgpack_unpack_return ret =
713+ msgpack_unpack (sbuf.data , sbuf.size , NULL , &z, &obj);
714+ EXPECT_EQ (MSGPACK_UNPACK_SUCCESS, ret);
715+ EXPECT_EQ (MSGPACK_OBJECT_EXT, obj.type );
716+ EXPECT_EQ (12u , obj.via .ext .size );
717+ EXPECT_EQ (-1 , obj.via .ext .type );
718+ msgpack_timestamp ts2;
719+ bool r = msgpack_object_to_timestamp (&obj, &ts2);
720+
721+ EXPECT_TRUE (r);
722+ EXPECT_EQ (ts.tv_sec , ts2.tv_sec );
723+ EXPECT_EQ (ts.tv_nsec , ts2.tv_nsec );
724+
725+ msgpack_zone_destroy (&z);
726+ msgpack_sbuffer_destroy (&sbuf);
727+ }
728+
630729TEST (MSGPACKC, simple_buffer_array)
631730{
632731 unsigned int array_size = 5 ;
0 commit comments