コード例 #1
0
ファイル: dictionary.cpp プロジェクト: richieyan/amf-cpp
TEST(DictionarySerializationTest, NullKeys) {
	AmfDictionary n(false, false);
	n.insert(AmfNull(), AmfNull());
	isEqual(v8 {
		0x11, 0x03, 0x00, 0x01, 0x01
	}, n);

	n.asString = true;

	isEqual(v8 {
		0x11, 0x03, 0x00, 0x06, 0x09, 0x6e, 0x75, 0x6c, 0x6c, 0x01
	}, n);
}
コード例 #2
0
ファイル: dictionary.cpp プロジェクト: richieyan/amf-cpp
TEST(DictionaryEquality, NestedDictionary) {
	AmfDictionary d0(true), d1(true), i(false);
	i.insert(AmfNull(), AmfUndefined());
	d0.insert(i, i);
	d1.insert(i, i);
	EXPECT_EQ(d0, d1);
}
コード例 #3
0
TEST(SerializationContext, Pointer) {
	SerializationContext ctx;

	ASSERT_THROW(ctx.getPointer<AmfInteger>(0), std::out_of_range);

	ctx.addPointer(AmfItemPtr(AmfNull()));
	ASSERT_EQ(AmfNull(), ctx.getPointer<AmfNull>(0).as<AmfNull>());
	ASSERT_EQ(AmfNull(), ctx.getObject<AmfNull>(0));
	ASSERT_THROW(ctx.getPointer<AmfInteger>(0), std::invalid_argument);
	ASSERT_THROW(ctx.getObject<AmfInteger>(0), std::invalid_argument);
	ASSERT_THROW(ctx.getPointer<AmfNull>(1), std::out_of_range);
	ASSERT_THROW(ctx.getObject<AmfNull>(1), std::out_of_range);

	ctx.addObject(AmfInteger(11));
	ASSERT_EQ(AmfNull(), ctx.getPointer<AmfNull>(0).as<AmfNull>());
	ASSERT_EQ(AmfInteger(11), ctx.getPointer<AmfInteger>(1).as<AmfInteger>());
	ASSERT_EQ(AmfInteger(11), ctx.getObject<AmfInteger>(1));
	ASSERT_THROW(ctx.getPointer<AmfDouble>(1), std::invalid_argument);
	ASSERT_THROW(ctx.getObject<AmfDouble>(1), std::invalid_argument);
}
コード例 #4
0
ファイル: dictionary.cpp プロジェクト: richieyan/amf-cpp
TEST(DictionaryEquality, SimpleValues) {
	AmfDictionary d0(true), d1(true), d2(false);
	d0.insert(AmfInteger(0), AmfString("foo"));
	d1.insert(AmfInteger(0), AmfString("foo"));
	d2.insert(AmfInteger(0), AmfString("foo"));
	EXPECT_EQ(d0, d1);
	EXPECT_NE(d0, d2);

	d0.insert(AmfString("qux"), AmfByteArray(v8 { 0x00 }));
	EXPECT_NE(d0, d1);
	d1.insert(AmfString("qux"), AmfByteArray(v8 { 0x00 }));
	EXPECT_EQ(d0, d1);

	d0.insert(AmfNull(), AmfUndefined());
	d1.insert(AmfUndefined(), AmfNull());
	EXPECT_NE(d0, d1);

	d0.insert(AmfUndefined(), AmfNull());
	d1.insert(AmfNull(), AmfUndefined());
	EXPECT_EQ(d0, d1);
}
コード例 #5
0
TEST(SerializationContext, Item) {
	SerializationContext ctx;

	// Verify no objects are stored yet.
	ASSERT_THROW(ctx.getObject<AmfNull>(0), std::out_of_range);

	// Add one.
	ctx.addObject(AmfNull());
	ASSERT_EQ(AmfNull(), ctx.getObject<AmfNull>(0));
	ASSERT_THROW(ctx.getObject<AmfInteger>(0), std::invalid_argument);

	// Another one.
	AmfInteger i(17);
	ctx.addObject(i);
	ASSERT_EQ(AmfNull(), ctx.getObject<AmfNull>(0));
	ASSERT_EQ(i, ctx.getObject<AmfInteger>(1));

	// Verify that a copy is made.
	i.value = 21;
	ASSERT_EQ(AmfInteger(17), ctx.getObject<AmfInteger>(1));
}
コード例 #6
0
ファイル: serializer.cpp プロジェクト: dreamsxin/amf-cpp
TEST(SerializerTest, MultipleMixedValues) {
	Serializer s;
	s << AmfDouble(0.5) << AmfInteger(0x3ff) << AmfString("bar") << AmfNull();

	v8 expected {
		0x05, 0x3F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
		0x04, 0x87, 0x7F,
		0x06, 0x07, 0x62, 0x61, 0x72,
		0x01
	};
	ASSERT_EQ(expected, s.data());
}
コード例 #7
0
ファイル: deserializer.cpp プロジェクト: richieyan/amf-cpp
TEST(DeserializerTest, Null) {
	deserializesTo(AmfNull(), { 0x01 });
	deserializesTo(AmfNull(), { 0x01, 0x01 }, 1);
}
コード例 #8
0
ファイル: amfnull.hpp プロジェクト: Ventero/amf-cpp
	static AmfNull deserialize(v8::const_iterator& it, v8::const_iterator end, SerializationContext&) {
		if (it == end || *it++ != AMF_NULL)
			throw std::invalid_argument("AmfNull: Invalid type marker");

		return AmfNull();
	}
コード例 #9
0
ファイル: null.cpp プロジェクト: Ventero/amf-cpp
TEST(NullSerialization, SimpleValue) {
	isEqual(v8 { 0x01 }, AmfNull());
}
コード例 #10
0
ファイル: null.cpp プロジェクト: Ventero/amf-cpp
TEST(NullDeserialization, SimpleValue) {
	deserialize(AmfNull(), v8 { 0x01, }, 0);
	deserialize(AmfNull(), v8 { 0x01, 0x00 }, 1);
	deserialize(AmfNull(), v8 { 0x01, AMF_NULL }, 1);
	deserialize(AmfNull(), v8 { 0x01, 0x00, 0x00, 0x00 }, 3);
}