public void TestDeserializeEmptyString()
        {
            string @object = "";
            ExtensibleJsonObject result = JsonConvert.DeserializeObject <BasicExtensibleJsonObject>(@object);

            Assert.IsNull(result);
        }
        public void TestDeserializeEmptyObject()
        {
            string @object = "{}";
            ExtensibleJsonObject result = JsonConvert.DeserializeObject <BasicExtensibleJsonObject>(@object);

            Assert.IsNotNull(result);
            Assert.IsNotNull(result.ExtensionData);
            Assert.AreEqual(0, result.ExtensionData.Count);
            Assert.AreEqual(@object, JsonConvert.SerializeObject(result, Formatting.None));
        }
        public void TestDeserializeNullValue()
        {
            string @object = "{\"key\":null}";
            ExtensibleJsonObject result = JsonConvert.DeserializeObject <BasicExtensibleJsonObject>(@object);

            Assert.AreEqual(1, result.ExtensionData.Count);
            Assert.AreEqual(@object, JsonConvert.SerializeObject(result, Formatting.None));
            Assert.IsTrue(result.ExtensionData.ContainsKey("key"));
            Assert.IsNull(result.ExtensionData["key"]);

            Assert.IsFalse(result.ExtensionData.ContainsKey("key2"));
        }
        public void TestDeserializeMultipleValues()
        {
            string @object = "{\"key\":\"value\",\"key2\":\"value2\"}";
            ExtensibleJsonObject result = JsonConvert.DeserializeObject <BasicExtensibleJsonObject>(@object);

            Assert.AreEqual(2, result.ExtensionData.Count);
            Assert.AreEqual(@object, JsonConvert.SerializeObject(result, Formatting.None));
            Assert.IsTrue(result.ExtensionData.ContainsKey("key"));
            Assert.AreEqual("value", result.ExtensionData["key"]);
            Assert.IsTrue(result.ExtensionData.ContainsKey("key2"));
            Assert.AreEqual("value2", result.ExtensionData["key2"]);

            Assert.IsFalse(result.ExtensionData.ContainsKey("key3"));
        }