sathiyapk commented on a change in pull request #34729:
URL: https://github.com/apache/spark/pull/34729#discussion_r780514098



##########
File path: 
sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/expressions/MathExpressionsSuite.scala
##########
@@ -658,6 +669,62 @@ class MathExpressionsSuite extends SparkFunSuite with 
ExpressionEvalHelper {
     val intResultsB: Seq[Int] = Seq(314000000, 314200000, 314160000, 
314159000, 314159300,
       314159260) ++ Seq.fill(7)(314159265)
 
+    def doubleResultsFloor(i: Int): Any = {
+      val results = Seq(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 3,
+        3.1, 3.14, 3.141, 3.1415, 3.14159, 3.141592)
+      if (i <= 6) results(i).toLong else results(i)
+    }
+
+    def doubleResultsCeil(i: Int): Any = {
+      val results = Seq(1000000.0, 100000.0, 10000.0, 1000.0, 100.0, 10.0,
+        4L, 3.2, 3.15, 3.142, 3.1416, 3.1416, 3.141593)
+      if (i <= 6) results(i).toLong else results(i)
+    }
+
+    def floatResultsFloor(i: Int): Any = {
+      val results = Seq(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 3L,
+        3.1d, 3.14d, 3.141d, 3.1414d, 3.14149d, 3.141499d)
+      if (i <= 6) results(i).toLong else results(i)
+    }
+
+    def floatResultsCeil(i: Int): Any = {
+      val results = Seq(1000000.0f, 100000.0f, 10000.0f, 1000.0f, 100.0f, 
10.0f,
+        4L, 3.2d, 3.15d, 3.142d, 3.1415d, 3.1415d, 3.1415d)
+      if (i <= 6) results(i).toLong else results(i)
+    }
+
+    def shortResultsFloor(i: Int): Any = {
+      val results = Seq[Long](0L, 0L, 30000L, 31000L,
+        31400L, 31410L, 31415L) ++ Seq.fill[Long](7)(31415)
+      results(i)
+    }
+
+    def shortResultsCeil(i: Int): Any = {

Review comment:
       Sorry, i am not sure i got it right. 
   
   Actually we test `RoundCeil` and `RoundFloor` directly for positive `scale` 
on big decimal, i can add long and double in that case, if you prefer. But we 
can't test `RoundCeil` and `RoundFloor` directly for negative `scale` because 
the casting to `Long` for negative scale happens one step before. 
   
   May be if put the casting in the `RoundCeil` and `RoundFloor` objects and 
let the `ExpressionBuilder` call these objects like it was before, we can able 
to test `RoundCeil` and `RoundFloor` directly for both negative and positive 
`scale`. What do you say ?

##########
File path: 
sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/expressions/MathExpressionsSuite.scala
##########
@@ -658,6 +669,62 @@ class MathExpressionsSuite extends SparkFunSuite with 
ExpressionEvalHelper {
     val intResultsB: Seq[Int] = Seq(314000000, 314200000, 314160000, 
314159000, 314159300,
       314159260) ++ Seq.fill(7)(314159265)
 
+    def doubleResultsFloor(i: Int): Any = {
+      val results = Seq(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 3,
+        3.1, 3.14, 3.141, 3.1415, 3.14159, 3.141592)
+      if (i <= 6) results(i).toLong else results(i)
+    }
+
+    def doubleResultsCeil(i: Int): Any = {
+      val results = Seq(1000000.0, 100000.0, 10000.0, 1000.0, 100.0, 10.0,
+        4L, 3.2, 3.15, 3.142, 3.1416, 3.1416, 3.141593)
+      if (i <= 6) results(i).toLong else results(i)
+    }
+
+    def floatResultsFloor(i: Int): Any = {
+      val results = Seq(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 3L,
+        3.1d, 3.14d, 3.141d, 3.1414d, 3.14149d, 3.141499d)
+      if (i <= 6) results(i).toLong else results(i)
+    }
+
+    def floatResultsCeil(i: Int): Any = {
+      val results = Seq(1000000.0f, 100000.0f, 10000.0f, 1000.0f, 100.0f, 
10.0f,
+        4L, 3.2d, 3.15d, 3.142d, 3.1415d, 3.1415d, 3.1415d)
+      if (i <= 6) results(i).toLong else results(i)
+    }
+
+    def shortResultsFloor(i: Int): Any = {
+      val results = Seq[Long](0L, 0L, 30000L, 31000L,
+        31400L, 31410L, 31415L) ++ Seq.fill[Long](7)(31415)
+      results(i)
+    }
+
+    def shortResultsCeil(i: Int): Any = {

Review comment:
       Sorry, i am not sure i got it right. 
   
   Actually we test `RoundCeil` and `RoundFloor` directly for positive `scale` 
on big decimal, i can add long and double in that case, if you prefer. But we 
can't test `RoundCeil` and `RoundFloor` directly for negative `scale` because 
the casting to `Long` for negative scale happens one step before. 
   
   May be if i put the casting in the `RoundCeil` and `RoundFloor` objects and 
let the `ExpressionBuilder` call these objects like it was before, we can able 
to test `RoundCeil` and `RoundFloor` directly for both negative and positive 
`scale`. What do you say ?




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: reviews-unsubscr...@spark.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscr...@spark.apache.org
For additional commands, e-mail: reviews-h...@spark.apache.org

Reply via email to