public void CanSerializeNumbersAsStrings() { var model = new ModelWithNullableTypes { Id = "1", Type = "model", ByteValue = 1, SbyteValue = 2, DecimalValue = 3, ShortValue = 4, UshortValue = 5, IntValue = 6, UintValue = 7, LongValue = 8, UlongValue = 9, FloatValue = 10, DoubleValue = 11, ObjectValue = 12 }; var options = new JsonSerializerOptions(); options.NumberHandling = JsonNumberHandling.WriteAsString | JsonNumberHandling.AllowReadingFromString; var json = model.Serialize(options); Assert.Equal(@" { 'data': { 'id': '1', 'type': 'model', 'attributes': { 'byteValue': '1', 'sbyteValue': '2', 'decimalValue': '3', 'shortValue': '4', 'ushortValue': '5', 'intValue': '6', 'uintValue': '7', 'longValue': '8', 'ulongValue': '9', 'floatValue': '10', 'doubleValue': '11', 'objectValue': '12' } } }".Format(), json, JsonStringEqualityComparer.Default); }
public void Should_Convert_Values_When_ValueConvert_Is_Implemented() { var model = new ModelWithNullableTypes { DateTime1 = new DateTime(2019, 5, 20, 14, 20, 15), DateTime2 = new DateTime(2018, 8, 30, 3, 10, 7), Bool1 = true, Bool2 = false, AccessMode1 = AccessMode.Read, AccessMode2 = AccessMode.Write, Int1 = 123, Int2 = 456 }; Neo4jParameters.ValueConvert = kv => { var(key, value) = kv; if (value is DateTime dateTime) { return(dateTime.ToString("s")); } if (value is bool b) { return(b.ToString().ToUpper()); } if (value.GetType().IsEnum) { return(value.ToString()); } if (value is int i) { return(i.ToString()); } return(value); }; var parameters = new Neo4jParameters() .WithValue("1", model.DateTime1) .WithValue("2", model.DateTime2) .WithValue("3", model.Bool1) .WithValue("4", model.Bool2) .WithValue("5", model.AccessMode1) .WithValue("6", model.AccessMode2) .WithValue("7", model.Int1) .WithValue("8", model.Int2); Assert.AreEqual(8, parameters.Count); Assert.IsAssignableFrom <string>(parameters["1"]); Assert.AreEqual("2019-05-20T14:20:15", parameters["1"]); Assert.IsAssignableFrom <string>(parameters["2"]); Assert.AreEqual("2018-08-30T03:10:07", parameters["2"]); Assert.IsAssignableFrom <string>(parameters["3"]); Assert.AreEqual("TRUE", parameters["3"]); Assert.IsAssignableFrom <string>(parameters["4"]); Assert.AreEqual("FALSE", parameters["4"]); Assert.IsAssignableFrom <string>(parameters["5"]); Assert.AreEqual("Read", parameters["5"]); Assert.IsAssignableFrom <string>(parameters["6"]); Assert.AreEqual("Write", parameters["6"]); Assert.IsAssignableFrom <string>(parameters["7"]); Assert.AreEqual("123", parameters["7"]); Assert.IsAssignableFrom <string>(parameters["8"]); Assert.AreEqual("456", parameters["8"]); }