diff --git a/JSONAPI.Tests/Data/AttributeSerializationTest.json b/JSONAPI.Tests/Data/AttributeSerializationTest.json new file mode 100644 index 00000000..1a4fa932 --- /dev/null +++ b/JSONAPI.Tests/Data/AttributeSerializationTest.json @@ -0,0 +1,75 @@ +{ + "samples": [ + { + "id": "1", + "booleanField": false, + "nullableBooleanField": false, + "sByteField": 0, + "nullableSByteField": null, + "byteField": 0, + "nullableByteField": null, + "int16Field": 0, + "nullableInt16Field": null, + "uInt16Field": 0, + "nullableUInt16Field": null, + "int32Field": 0, + "nullableInt32Field": null, + "uInt32Field": 0, + "nullableUInt32Field": null, + "int64Field": 0, + "nullableInt64Field": null, + "uInt64Field": 0, + "nullableUInt64Field": null, + "doubleField": 0.0, + "nullableDoubleField": null, + "singleField": 0.0, + "nullableSingleField": null, + "decimalField": "0", + "nullableDecimalField": null, + "dateTimeField": "0001-01-01T00:00:00", + "nullableDateTimeField": null, + "dateTimeOffsetField": "0001-01-01T00:00:00+00:00", + "nullableDateTimeOffsetField": null, + "guidField": "00000000-0000-0000-0000-000000000000", + "nullableGuidField": null, + "stringField": null, + "enumField": 0, + "nullableEnumField": null + }, { + "id": "2", + "booleanField": true, + "nullableBooleanField": true, + "sByteField": 123, + "nullableSByteField": 123, + "byteField": 253, + "nullableByteField": 253, + "int16Field": 32000, + "nullableInt16Field": 32000, + "uInt16Field": 64000, + "nullableUInt16Field": 64000, + "int32Field": 2000000000, + "nullableInt32Field": 2000000000, + "uInt32Field": 3000000000, + "nullableUInt32Field": 3000000000, + "int64Field": 9223372036854775807, + "nullableInt64Field": 9223372036854775807, + "uInt64Field": 9223372036854775808, + "nullableUInt64Field": 9223372036854775808, + "doubleField": 1056789.123, + "nullableDoubleField": 1056789.123, + "singleField": 1056789.13, + "nullableSingleField": 1056789.13, + "decimalField": "1056789.123", + "nullableDecimalField": "1056789.123", + "dateTimeField": "1776-07-04T00:00:00", + "nullableDateTimeField": "1776-07-04T00:00:00", + "dateTimeOffsetField": "1776-07-04T00:00:00-05:00", + "nullableDateTimeOffsetField": "1776-07-04T00:00:00-05:00", + "guidField": "6566f9b4-5245-40de-890d-98b40a4ad656", + "nullableGuidField": "3d1fb81e-43ee-4d04-af91-c8a326341293", + "stringField": "Some string 156", + "enumField": 1, + "nullableEnumField": 2 + } + ] +} diff --git a/JSONAPI.Tests/Extensions/TypeExtensionsTests.cs b/JSONAPI.Tests/Extensions/TypeExtensionsTests.cs new file mode 100644 index 00000000..19b51b69 --- /dev/null +++ b/JSONAPI.Tests/Extensions/TypeExtensionsTests.cs @@ -0,0 +1,53 @@ +using System; +using JSONAPI.Extensions; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace JSONAPI.Tests.Extensions +{ + [TestClass] + public class TypeExtensionsTests + { + private enum TestEnum + { + + } + + [TestMethod] + public void CanWriteAsJsonApiAttributeTest() + { + Assert.IsTrue(typeof(Byte).CanWriteAsJsonApiAttribute(), "CanWriteTypeAsAttribute returned wrong answer for Byte!"); + Assert.IsTrue(typeof(Byte?).CanWriteAsJsonApiAttribute(), "CanWriteTypeAsAttribute returned wrong answer for nullable Byte!"); + Assert.IsTrue(typeof(SByte).CanWriteAsJsonApiAttribute(), "CanWriteTypeAsAttribute returned wrong answer for SByte!"); + Assert.IsTrue(typeof(SByte?).CanWriteAsJsonApiAttribute(), "CanWriteTypeAsAttribute returned wrong answer for nullable SByte!"); + Assert.IsTrue(typeof(UInt16).CanWriteAsJsonApiAttribute(), "CanWriteTypeAsAttribute returned wrong answer for UInt16!"); + Assert.IsTrue(typeof(UInt16?).CanWriteAsJsonApiAttribute(), "CanWriteTypeAsAttribute returned wrong answer for nullable UInt16!"); + Assert.IsTrue(typeof(Int16).CanWriteAsJsonApiAttribute(), "CanWriteTypeAsAttribute returned wrong answer for Int16!"); + Assert.IsTrue(typeof(Int16?).CanWriteAsJsonApiAttribute(), "CanWriteTypeAsAttribute returned wrong answer for nullable Int16!"); + Assert.IsTrue(typeof(UInt32).CanWriteAsJsonApiAttribute(), "CanWriteTypeAsAttribute returned wrong answer for UInt32!"); + Assert.IsTrue(typeof(UInt32?).CanWriteAsJsonApiAttribute(), "CanWriteTypeAsAttribute returned wrong answer for nullable UInt32!"); + Assert.IsTrue(typeof(Int32).CanWriteAsJsonApiAttribute(), "CanWriteTypeAsAttribute returned wrong answer for Int32!"); + Assert.IsTrue(typeof(Int32?).CanWriteAsJsonApiAttribute(), "CanWriteTypeAsAttribute returned wrong answer for nullable Int32!"); + Assert.IsTrue(typeof(UInt64).CanWriteAsJsonApiAttribute(), "CanWriteTypeAsAttribute returned wrong answer for UInt64!"); + Assert.IsTrue(typeof(UInt64?).CanWriteAsJsonApiAttribute(), "CanWriteTypeAsAttribute returned wrong answer for nullable UInt64!"); + Assert.IsTrue(typeof(Int64).CanWriteAsJsonApiAttribute(), "CanWriteTypeAsAttribute returned wrong answer for Int64!"); + Assert.IsTrue(typeof(Int64?).CanWriteAsJsonApiAttribute(), "CanWriteTypeAsAttribute returned wrong answer for nullable Int64!"); + Assert.IsTrue(typeof(Double).CanWriteAsJsonApiAttribute(), "CanWriteTypeAsAttribute returned wrong answer for Double!"); + Assert.IsTrue(typeof(Double?).CanWriteAsJsonApiAttribute(), "CanWriteTypeAsAttribute returned wrong answer for nullable Double!"); + Assert.IsTrue(typeof(Single).CanWriteAsJsonApiAttribute(), "CanWriteTypeAsAttribute returned wrong answer for Single!"); + Assert.IsTrue(typeof(Single?).CanWriteAsJsonApiAttribute(), "CanWriteTypeAsAttribute returned wrong answer for nullable Single!"); + Assert.IsTrue(typeof(Decimal).CanWriteAsJsonApiAttribute(), "CanWriteTypeAsAttribute returned wrong answer for Decimal!"); + Assert.IsTrue(typeof(Decimal?).CanWriteAsJsonApiAttribute(), "CanWriteTypeAsAttribute returned wrong answer for nullable Decimal!"); + Assert.IsTrue(typeof(DateTime).CanWriteAsJsonApiAttribute(), "CanWriteTypeAsAttribute returned wrong answer for DateTime!"); + Assert.IsTrue(typeof(DateTime?).CanWriteAsJsonApiAttribute(), "CanWriteTypeAsAttribute returned wrong answer for nullable DateTime!"); + Assert.IsTrue(typeof(DateTimeOffset).CanWriteAsJsonApiAttribute(), "CanWriteTypeAsAttribute returned wrong answer for DateTimeOffset!"); + Assert.IsTrue(typeof(DateTimeOffset?).CanWriteAsJsonApiAttribute(), "CanWriteTypeAsAttribute returned wrong answer for nullable DateTimeOffset!"); + Assert.IsTrue(typeof(Guid).CanWriteAsJsonApiAttribute(), "CanWriteTypeAsAttribute returned wrong answer for Guid!"); + Assert.IsTrue(typeof(Guid?).CanWriteAsJsonApiAttribute(), "CanWriteTypeAsAttribute returned wrong answer for nullable Guid!"); + Assert.IsTrue(typeof(String).CanWriteAsJsonApiAttribute(), "CanWriteTypeAsAttribute returned wrong answer for String!"); + Assert.IsTrue(typeof(TestEnum).CanWriteAsJsonApiAttribute(), "CanWriteTypeAsAttribute returned wrong answer for enum!"); + Assert.IsTrue(typeof(TestEnum?).CanWriteAsJsonApiAttribute(), "CanWriteTypeAsAttribute returned wrong answer for nullable enum!"); + Assert.IsFalse(typeof(Object).CanWriteAsJsonApiAttribute(), "CanWriteTypeAsAttribute returned wrong answer for Object!"); + } + + } +} diff --git a/JSONAPI.Tests/JSONAPI.Tests.csproj b/JSONAPI.Tests/JSONAPI.Tests.csproj index d61bedf1..3a2d8917 100644 --- a/JSONAPI.Tests/JSONAPI.Tests.csproj +++ b/JSONAPI.Tests/JSONAPI.Tests.csproj @@ -78,11 +78,13 @@ + + @@ -109,6 +111,9 @@ Always + + Always + Always @@ -116,7 +121,7 @@ -