#include #include #include "Amf3.h" TEST(dCommonTests, AMF3AssociativeArrayTest) { AMFArrayValue array; array.Insert("true", true); array.Insert("false", false); // test associative can insert values ASSERT_EQ(array.GetAssociative().size(), 2); ASSERT_EQ(array.Get("true")->GetValueType(), eAmf::True); ASSERT_EQ(array.Get("false")->GetValueType(), eAmf::False); // Test associative can remove values array.Remove("true"); ASSERT_EQ(array.GetAssociative().size(), 1); ASSERT_EQ(array.Get("true"), nullptr); ASSERT_EQ(array.Get("false")->GetValueType(), eAmf::False); array.Remove("false"); ASSERT_EQ(array.GetAssociative().size(), 0); ASSERT_EQ(array.Get("true"), nullptr); ASSERT_EQ(array.Get("false"), nullptr); // Test that multiple of the same key respect only the first element of that key array.Insert("true", true); array.Insert("true", false); ASSERT_EQ(array.GetAssociative().size(), 1); ASSERT_EQ(array.Get("true")->GetValueType(), eAmf::True); array.Remove("true"); // Now test the dense portion // Get some out of bounds values and cast to incorrect template types array.Push(true); array.Push(false); ASSERT_EQ(array.GetDense().size(), 2); ASSERT_EQ(array.Get(0)->GetValueType(), eAmf::True); ASSERT_EQ(array.Get(0), nullptr); ASSERT_EQ(array.Get(1)->GetValueType(), eAmf::False); ASSERT_EQ(array.Get(155), nullptr); array.Pop(); ASSERT_EQ(array.GetDense().size(), 1); ASSERT_EQ(array.Get(0)->GetValueType(), eAmf::True); ASSERT_EQ(array.Get(0), nullptr); ASSERT_EQ(array.Get(1), nullptr); array.Pop(); ASSERT_EQ(array.GetDense().size(), 0); ASSERT_EQ(array.Get(0), nullptr); ASSERT_EQ(array.Get(0), nullptr); ASSERT_EQ(array.Get(1), nullptr); } TEST(dCommonTests, AMF3InsertionAssociativeTest) { AMFArrayValue array; array.Insert("CString", "string"); array.Insert("String", std::string("string")); array.Insert("False", false); array.Insert("True", true); array.Insert("Integer", 42U); array.Insert("Double", 42.0); array.InsertArray("Array"); array.Insert>("Undefined", {}); array.Insert("Null", nullptr); ASSERT_EQ(array.Get("CString")->GetValueType(), eAmf::String); ASSERT_EQ(array.Get("String")->GetValueType(), eAmf::String); ASSERT_EQ(array.Get("False")->GetValueType(), eAmf::False); ASSERT_EQ(array.Get("True")->GetValueType(), eAmf::True); ASSERT_EQ(array.Get("Integer")->GetValueType(), eAmf::Integer); ASSERT_EQ(array.Get("Double")->GetValueType(), eAmf::Double); ASSERT_EQ(array.GetArray("Array")->GetValueType(), eAmf::Array); ASSERT_EQ(array.Get("Null")->GetValueType(), eAmf::Null); ASSERT_EQ(array.Get>("Undefined")->GetValueType(), eAmf::Undefined); } TEST(dCommonTests, AMF3InsertionDenseTest) { AMFArrayValue array; array.Push("string"); array.Push("CString"); array.Push(false); array.Push(true); array.Push(42U); array.Push(42.0); array.PushArray(); array.Push(nullptr); array.Push>({}); ASSERT_EQ(array.Get(0)->GetValueType(), eAmf::String); ASSERT_EQ(array.Get(1)->GetValueType(), eAmf::String); ASSERT_EQ(array.Get(2)->GetValueType(), eAmf::False); ASSERT_EQ(array.Get(3)->GetValueType(), eAmf::True); ASSERT_EQ(array.Get(4)->GetValueType(), eAmf::Integer); ASSERT_EQ(array.Get(5)->GetValueType(), eAmf::Double); ASSERT_EQ(array.GetArray(6)->GetValueType(), eAmf::Array); ASSERT_EQ(array.Get(7)->GetValueType(), eAmf::Null); ASSERT_EQ(array.Get>(8)->GetValueType(), eAmf::Undefined); }