From a34093736139b43491159899f3933c8a2cc73865 Mon Sep 17 00:00:00 2001 From: novelhawk Date: Wed, 20 Sep 2023 20:23:26 +0200 Subject: [PATCH 1/4] Fix wrong type conversion on PrimitiveDataFrameColumn --- .../PrimitiveDataFrameColumn.BinaryOperations.tt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Microsoft.Data.Analysis/PrimitiveDataFrameColumn.BinaryOperations.tt b/src/Microsoft.Data.Analysis/PrimitiveDataFrameColumn.BinaryOperations.tt index 66d04d02ec..356b70eb72 100644 --- a/src/Microsoft.Data.Analysis/PrimitiveDataFrameColumn.BinaryOperations.tt +++ b/src/Microsoft.Data.Analysis/PrimitiveDataFrameColumn.BinaryOperations.tt @@ -190,7 +190,7 @@ namespace Microsoft.Data.Analysis throw new NotSupportedException(); } <# if (method.MethodType == MethodType.ComparisonScalar) { #> - return new BooleanDataFrameColumn(Name, (this as PrimitiveDataFrameColumn)._columnContainer.<#=method.MethodName#>(Unsafe.As(ref value))); + return new BooleanDataFrameColumn(Name, (this as PrimitiveDataFrameColumn<<#=type.TypeName#>>)._columnContainer.<#=method.MethodName#>(Unsafe.As>(ref value))); <# } else if (method.MethodType == MethodType.Comparison) { #> return new BooleanDataFrameColumn(Name, (this as PrimitiveDataFrameColumn)._columnContainer.<#=method.MethodName#>(column._columnContainer)); <# } else if (method.MethodType == MethodType.BinaryScalar) {#> From efa6162dbc0289462e29dc7d79a58840c75c383a Mon Sep 17 00:00:00 2001 From: novelhawk Date: Wed, 20 Sep 2023 20:43:08 +0200 Subject: [PATCH 2/4] Added tests for #6829 --- test/Microsoft.Data.Analysis.Tests/DataFrameTests.cs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/test/Microsoft.Data.Analysis.Tests/DataFrameTests.cs b/test/Microsoft.Data.Analysis.Tests/DataFrameTests.cs index b02319e478..11ce6c7dc4 100644 --- a/test/Microsoft.Data.Analysis.Tests/DataFrameTests.cs +++ b/test/Microsoft.Data.Analysis.Tests/DataFrameTests.cs @@ -625,9 +625,15 @@ public void TestBinaryOperationsOnDateTimeColumn() Assert.True(equalsResult[0]); Assert.False(equalsResult[4]); + var equalsByDataFrameResult = df["DateTime1"].ElementwiseEquals(dataFrameColumn2); + Assert.Equal(equalsResult, equalsByDataFrameResult); + var notEqualsResult = dataFrameColumn1.ElementwiseNotEquals(dataFrameColumn2); Assert.False(notEqualsResult[0]); Assert.True(notEqualsResult[4]); + + var notEqualsByDataFrameResult = df["DateTime1"].ElementwiseEquals(dataFrameColumn2); + Assert.Equal(notEqualsResult, notEqualsByDataFrameResult); } [Fact] From 055c9a806752c43a26b668ea65263cc65db79a9a Mon Sep 17 00:00:00 2001 From: novelhawk Date: Wed, 20 Sep 2023 21:25:34 +0200 Subject: [PATCH 3/4] Fix test --- test/Microsoft.Data.Analysis.Tests/DataFrameTests.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/Microsoft.Data.Analysis.Tests/DataFrameTests.cs b/test/Microsoft.Data.Analysis.Tests/DataFrameTests.cs index 11ce6c7dc4..a8835057b2 100644 --- a/test/Microsoft.Data.Analysis.Tests/DataFrameTests.cs +++ b/test/Microsoft.Data.Analysis.Tests/DataFrameTests.cs @@ -632,7 +632,7 @@ public void TestBinaryOperationsOnDateTimeColumn() Assert.False(notEqualsResult[0]); Assert.True(notEqualsResult[4]); - var notEqualsByDataFrameResult = df["DateTime1"].ElementwiseEquals(dataFrameColumn2); + var notEqualsByDataFrameResult = df["DateTime1"].ElementwiseNotEquals(dataFrameColumn2); Assert.Equal(notEqualsResult, notEqualsByDataFrameResult); } From b3f5534a6e232448607714fe53729cdae33570d3 Mon Sep 17 00:00:00 2001 From: Aleksei Smirnov Date: Sun, 24 Sep 2023 23:25:19 +0300 Subject: [PATCH 4/4] Add file generated from tt template and fix unit tests --- .../PrimitiveDataFrameColumn.BinaryOperations.cs | 4 ++-- test/Microsoft.Data.Analysis.Tests/DataFrameTests.cs | 10 ++++++---- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/Microsoft.Data.Analysis/PrimitiveDataFrameColumn.BinaryOperations.cs b/src/Microsoft.Data.Analysis/PrimitiveDataFrameColumn.BinaryOperations.cs index 461badeda3..2b6cde89c0 100644 --- a/src/Microsoft.Data.Analysis/PrimitiveDataFrameColumn.BinaryOperations.cs +++ b/src/Microsoft.Data.Analysis/PrimitiveDataFrameColumn.BinaryOperations.cs @@ -1955,7 +1955,7 @@ internal PrimitiveDataFrameColumn ElementwiseEqualsImplementation(U val { throw new NotSupportedException(); } - return new BooleanDataFrameColumn(Name, (this as PrimitiveDataFrameColumn)._columnContainer.ElementwiseEquals(Unsafe.As(ref value))); + return new BooleanDataFrameColumn(Name, (this as PrimitiveDataFrameColumn)._columnContainer.ElementwiseEquals(Unsafe.As(ref value))); case Type byteType when byteType == typeof(byte): case Type charType when charType == typeof(char): case Type doubleType when doubleType == typeof(double): @@ -2102,7 +2102,7 @@ internal PrimitiveDataFrameColumn ElementwiseNotEqualsImplementation(U { throw new NotSupportedException(); } - return new BooleanDataFrameColumn(Name, (this as PrimitiveDataFrameColumn)._columnContainer.ElementwiseNotEquals(Unsafe.As(ref value))); + return new BooleanDataFrameColumn(Name, (this as PrimitiveDataFrameColumn)._columnContainer.ElementwiseNotEquals(Unsafe.As(ref value))); case Type byteType when byteType == typeof(byte): case Type charType when charType == typeof(char): case Type doubleType when doubleType == typeof(double): diff --git a/test/Microsoft.Data.Analysis.Tests/DataFrameTests.cs b/test/Microsoft.Data.Analysis.Tests/DataFrameTests.cs index a8835057b2..85e4ccd79c 100644 --- a/test/Microsoft.Data.Analysis.Tests/DataFrameTests.cs +++ b/test/Microsoft.Data.Analysis.Tests/DataFrameTests.cs @@ -625,15 +625,17 @@ public void TestBinaryOperationsOnDateTimeColumn() Assert.True(equalsResult[0]); Assert.False(equalsResult[4]); - var equalsByDataFrameResult = df["DateTime1"].ElementwiseEquals(dataFrameColumn2); - Assert.Equal(equalsResult, equalsByDataFrameResult); + var equalsToScalarResult = df["DateTime1"].ElementwiseEquals(SampleDateTime); + Assert.True(equalsToScalarResult[0]); + Assert.False(equalsToScalarResult[1]); var notEqualsResult = dataFrameColumn1.ElementwiseNotEquals(dataFrameColumn2); Assert.False(notEqualsResult[0]); Assert.True(notEqualsResult[4]); - var notEqualsByDataFrameResult = df["DateTime1"].ElementwiseNotEquals(dataFrameColumn2); - Assert.Equal(notEqualsResult, notEqualsByDataFrameResult); + var notEqualsToScalarResult = df["DateTime1"].ElementwiseNotEquals(SampleDateTime); + Assert.False(notEqualsToScalarResult[0]); + Assert.True(notEqualsToScalarResult[1]); } [Fact]