From 7ace58ced3e629539cb9cb26e9baa42ce0413efa Mon Sep 17 00:00:00 2001 From: pmosk Date: Fri, 1 Sep 2023 14:48:17 +0400 Subject: [PATCH] Support Int32 values --- .../Filter.Value.Test.csproj | 5 +- .../Test.FromInt32.Nullable.cs | 49 +++++++++++++++++++ .../Test.FromInt32.cs | 46 +++++++++++++++++ .../Value.FromInt32.Nullable.cs | 20 ++++++++ .../DataverseFilterValue/Value.FromInt32.cs | 20 ++++++++ .../Filter.Value/Filter.Value.csproj | 2 +- src/filter/Filter.Test/Filter.Test.csproj | 5 +- src/filter/Filter/Filter.csproj | 6 +-- 8 files changed, 145 insertions(+), 8 deletions(-) create mode 100644 src/filter-value/Filter.Value.Test/Test.DataverseFilterValue/Test.FromInt32.Nullable.cs create mode 100644 src/filter-value/Filter.Value.Test/Test.DataverseFilterValue/Test.FromInt32.cs create mode 100644 src/filter-value/Filter.Value/DataverseFilterValue/Value.FromInt32.Nullable.cs create mode 100644 src/filter-value/Filter.Value/DataverseFilterValue/Value.FromInt32.cs diff --git a/src/filter-value/Filter.Value.Test/Filter.Value.Test.csproj b/src/filter-value/Filter.Value.Test/Filter.Value.Test.csproj index 202c591..07ee40f 100644 --- a/src/filter-value/Filter.Value.Test/Filter.Value.Test.csproj +++ b/src/filter-value/Filter.Value.Test/Filter.Value.Test.csproj @@ -2,11 +2,12 @@ net6.0;net7.0 + true + false disable enable true true - false GarageGroup.Infra.Dataverse.Api.Filter.Value.Test GarageGroup.Infra.Dataverse.Api.Filter.Value.Test @@ -16,7 +17,7 @@ - + diff --git a/src/filter-value/Filter.Value.Test/Test.DataverseFilterValue/Test.FromInt32.Nullable.cs b/src/filter-value/Filter.Value.Test/Test.DataverseFilterValue/Test.FromInt32.Nullable.cs new file mode 100644 index 0000000..e324031 --- /dev/null +++ b/src/filter-value/Filter.Value.Test/Test.DataverseFilterValue/Test.FromInt32.Nullable.cs @@ -0,0 +1,49 @@ +using PrimeFuncPack.UnitTest; +using Xunit; + +namespace GarageGroup.Infra.Dataverse.Api.Filter.Value.Test; + +partial class DataverseFilterValueTest +{ + [Theory] + [InlineData(null, "null")] + [InlineData(TestData.Zero, "0")] + [InlineData(TestData.MinusFifteen, "-15")] + [InlineData(TestData.PlusFifteen, "15")] + public static void FromNullableInt32Constructor_ExpectActualValueIsEqualToExpectedValue( + int? sourceValue, string expectedValue) + { + var actual = new DataverseFilterValue(sourceValue); + var actualValue = actual.Value; + + Assert.Equal(expectedValue, actualValue); + } + + [Theory] + [InlineData(null, "null")] + [InlineData(TestData.Zero, "0")] + [InlineData(TestData.MinusOne, "-1")] + [InlineData(TestData.PlusFifteen, "15")] + public static void FromNullableInt32_ExpectActualValueIsEqualToExpectedValue( + int? sourceValue, string expectedValue) + { + var actual = DataverseFilterValue.FromNullableInt32(sourceValue); + var actualValue = actual.Value; + + Assert.Equal(expectedValue, actualValue); + } + + [Theory] + [InlineData(null, "null")] + [InlineData(TestData.Zero, "0")] + [InlineData(TestData.MinusFifteen, "-15")] + [InlineData(TestData.One, "1")] + public static void FromNullableInt32Implicit_ExpectActualValueIsEqualToExpectedValue( + int? sourceValue, string expectedValue) + { + DataverseFilterValue actual = sourceValue; + var actualValue = actual.Value; + + Assert.Equal(expectedValue, actualValue); + } +} \ No newline at end of file diff --git a/src/filter-value/Filter.Value.Test/Test.DataverseFilterValue/Test.FromInt32.cs b/src/filter-value/Filter.Value.Test/Test.DataverseFilterValue/Test.FromInt32.cs new file mode 100644 index 0000000..961664e --- /dev/null +++ b/src/filter-value/Filter.Value.Test/Test.DataverseFilterValue/Test.FromInt32.cs @@ -0,0 +1,46 @@ +using PrimeFuncPack.UnitTest; +using Xunit; + +namespace GarageGroup.Infra.Dataverse.Api.Filter.Value.Test; + +partial class DataverseFilterValueTest +{ + [Theory] + [InlineData(TestData.Zero, "0")] + [InlineData(TestData.MinusOne, "-1")] + [InlineData(TestData.PlusFifteen, "15")] + public static void FromInt32Constructor_ExpectActualValueIsEqualToExpectedValue( + int sourceValue, string expectedValue) + { + var actual = new DataverseFilterValue(sourceValue); + var actualValue = actual.Value; + + Assert.Equal(expectedValue, actualValue); + } + + [Theory] + [InlineData(TestData.Zero, "0")] + [InlineData(TestData.MinusFifteen, "-15")] + [InlineData(TestData.One, "1")] + public static void FromInt32_ExpectActualValueIsEqualToExpectedValue( + int sourceValue, string expectedValue) + { + var actual = DataverseFilterValue.FromInt32(sourceValue); + var actualValue = actual.Value; + + Assert.Equal(expectedValue, actualValue); + } + + [Theory] + [InlineData(TestData.Zero, "0")] + [InlineData(TestData.MinusFifteen, "-15")] + [InlineData(TestData.PlusFifteen, "15")] + public static void FromInt32Implicit_ExpectActualValueIsEqualToExpectedValue( + int sourceValue, string expectedValue) + { + DataverseFilterValue actual = sourceValue; + var actualValue = actual.Value; + + Assert.Equal(expectedValue, actualValue); + } +} \ No newline at end of file diff --git a/src/filter-value/Filter.Value/DataverseFilterValue/Value.FromInt32.Nullable.cs b/src/filter-value/Filter.Value/DataverseFilterValue/Value.FromInt32.Nullable.cs new file mode 100644 index 0000000..0bb7ab1 --- /dev/null +++ b/src/filter-value/Filter.Value/DataverseFilterValue/Value.FromInt32.Nullable.cs @@ -0,0 +1,20 @@ +namespace GarageGroup.Infra; + +partial class DataverseFilterValue +{ + public DataverseFilterValue(int? value) + => + Value = InnerBuildValue(value); + + public static DataverseFilterValue FromNullableInt32(int? value) + => + new(value); + + public static implicit operator DataverseFilterValue(int? value) + => + new(value); + + private static string InnerBuildValue(int? source) + => + source is null ? NullValue : InnerBuildValue(source.Value); +} \ No newline at end of file diff --git a/src/filter-value/Filter.Value/DataverseFilterValue/Value.FromInt32.cs b/src/filter-value/Filter.Value/DataverseFilterValue/Value.FromInt32.cs new file mode 100644 index 0000000..c3af289 --- /dev/null +++ b/src/filter-value/Filter.Value/DataverseFilterValue/Value.FromInt32.cs @@ -0,0 +1,20 @@ +namespace GarageGroup.Infra; + +partial class DataverseFilterValue +{ + public DataverseFilterValue(int value) + => + Value = InnerBuildValue(value); + + public static DataverseFilterValue FromInt32(int value) + => + new(value); + + public static implicit operator DataverseFilterValue(int value) + => + new(value); + + private static string InnerBuildValue(int source) + => + source.ToString(); +} \ No newline at end of file diff --git a/src/filter-value/Filter.Value/Filter.Value.csproj b/src/filter-value/Filter.Value/Filter.Value.csproj index 7dd0f09..07703c4 100644 --- a/src/filter-value/Filter.Value/Filter.Value.csproj +++ b/src/filter-value/Filter.Value/Filter.Value.csproj @@ -8,7 +8,7 @@ true GarageGroup.Infra GarageGroup.Infra.Dataverse.Api.Filter.Value - 0.0.3 + 0.1.0 diff --git a/src/filter/Filter.Test/Filter.Test.csproj b/src/filter/Filter.Test/Filter.Test.csproj index a839d06..2459b09 100644 --- a/src/filter/Filter.Test/Filter.Test.csproj +++ b/src/filter/Filter.Test/Filter.Test.csproj @@ -2,11 +2,12 @@ net6.0;net7.0 + true + false disable enable true true - false GarageGroup.Infra.Dataverse.Api.Filter.Test GarageGroup.Infra.Dataverse.Api.Filter.Test @@ -16,7 +17,7 @@ - + diff --git a/src/filter/Filter/Filter.csproj b/src/filter/Filter/Filter.csproj index 9e2e65a..b24835a 100644 --- a/src/filter/Filter/Filter.csproj +++ b/src/filter/Filter/Filter.csproj @@ -8,12 +8,12 @@ true GarageGroup.Infra GarageGroup.Infra.Dataverse.Api.Filter - 0.0.3 + 0.1.0-preview.1 - - + +