public void ByteDeserializationNegative() { List<Tuple<string, string>> testCases = new List<Tuple<string, string>>() { new Tuple<string, string>("{\"Byte\":256}", "Error converting value 256 to type 'System.Byte'. Path 'Byte', line 2, position 14."), new Tuple<string, string>("{\"Byte\":\"256\"}","Error converting value \"256\" to type 'System.Byte'. Path 'Byte', line 2, position 16."), new Tuple<string, string>("{\"Byte\":-1}","Error converting value -1 to type 'System.Byte'. Path 'Byte', line 2, position 13."), }; foreach (var testCase in testCases) { var input = JToken.Parse(testCase.Item1); var expected = testCase.Item2; ByteType actual = new ByteType(); Exception actualError = null; try { // Need to ensure that the type is registered as a table to force the id property check DefaultSerializer.SerializerSettings.ContractResolver.ResolveTableName(typeof(ByteType)); DefaultSerializer.Deserialize(input, actual); } catch (Exception e) { actualError = e; } Assert.AreEqual(actualError.Message, expected); } }
public void ByteDeserialization() { List<Tuple<ByteType, string>> testCases = new List<Tuple<ByteType, string>>() { new Tuple<ByteType, string>(new ByteType() { Byte = 0 }, "{}"), new Tuple<ByteType, string>(new ByteType() { Byte = 0 }, "{\"Byte\":null}"), new Tuple<ByteType, string>(new ByteType() { Byte = 0 }, "{\"Byte\":0}"), new Tuple<ByteType, string>(new ByteType() { Byte = 1 }, "{\"Byte\":1}"), new Tuple<ByteType, string>(new ByteType() { Byte = 0 }, "{\"Byte\":false}"), new Tuple<ByteType, string>(new ByteType() { Byte = 1 }, "{\"Byte\":true}"), new Tuple<ByteType, string>(new ByteType() { Byte = Byte.MaxValue }, "{\"Byte\":255}"), new Tuple<ByteType, string>(new ByteType() { Byte = Byte.MaxValue }, "{\"Byte\":\"255\"}"), }; // Need to ensure that the type is registered as a table to force the id property check DefaultSerializer.SerializerSettings.ContractResolver.ResolveTableName(typeof(ByteType)); foreach (var testCase in testCases) { var input = JToken.Parse(testCase.Item2); var expected = testCase.Item1; ByteType actual = new ByteType(); DefaultSerializer.Deserialize(input, actual); Assert.AreEqual(actual.Byte, expected.Byte); if (testCase.Item2 != "{}") { actual = new ByteType(); actual.Byte = 15; DefaultSerializer.Deserialize(input, actual); } Assert.AreEqual(actual.Byte, expected.Byte); JArray json = JToken.Parse("[" + testCase.Item2 + "]") as JArray; actual = DefaultSerializer.Deserialize<ByteType>(json).FirstOrDefault(); Assert.AreEqual(actual.Byte, expected.Byte); actual = (ByteType)DefaultSerializer.Deserialize<ByteType>(input); Assert.AreEqual(actual.Byte, expected.Byte); } }