kou commented on a change in pull request #11167:
URL: https://github.com/apache/arrow/pull/11167#discussion_r711353082



##########
File path: ruby/red-arrow/test/test-table.rb
##########
@@ -147,6 +147,96 @@ def setup
       TABLE
     end
 
+    test("{key: Number}") do
+      assert_equal(<<-TABLE, @table.slice(count: 16).to_s)
+       count   visible
+0         16   true   
+      TABLE
+    end
+
+    test("{key: String}") do
+      name_array = Arrow::StringArray.new(["a", "b", "c", "d", "e", "f", "g", 
"h"])
+      table_with_name = @table.merge(:name => name_array)
+      assert_equal(<<-TABLE, table_with_name.slice(name: 'e').to_s)
+       count   visible name
+0         16   true    e   
+      TABLE
+    end
+
+    test("{key: TrueClass}") do
+      assert_equal(<<-TABLE, @table.slice(visible: true).to_s)
+        count  visible
+0           1  true   
+1      (null)   (null)
+2           8  true   
+3          16  true   
+4      (null)   (null)
+5      (null)   (null)
+      TABLE
+    end
+
+    test("{key: FalseClass}") do
+      assert_equal(<<-TABLE, @table.slice(visible: false).to_s)
+        count  visible
+0           2  false  
+1      (null)   (null)
+2          32  false  
+3      (null)   (null)
+4      (null)   (null)
+      TABLE
+    end
+
+    test("{key: Range}: beginless") do
+      assert_equal(<<-TABLE, @table.slice(count: ..8).to_s)
+       count   visible
+0          1   true   
+1          2   false  
+2          4    (null)
+3          8   true   
+      TABLE
+    end
+
+    test("{key: Range}: endless") do
+      assert_equal(<<-TABLE, @table.slice(count: 16..).to_s)
+       count   visible
+0         16   true   
+1         32   false  
+2         64    (null)
+3        128    (null)
+      TABLE
+    end
+
+    test("{key: Range}: include end") do
+      assert_equal(<<-TABLE, @table.slice(count: 1..16).to_s)
+       count   visible
+0          1   true   
+1          2   false  
+2          4    (null)
+3          8   true   
+4         16   true   
+      TABLE
+    end
+
+    test("{key: Range}: exclude end") do
+      assert_equal(<<-TABLE, @table.slice(count: 1...16).to_s)
+       count   visible
+0          1   true   
+1          2   false  
+2          4    (null)
+3          8   true   
+      TABLE
+    end
+
+    test("{key: Range, key: TrueClass}: multiple key/value pairs") do

Review comment:
       We can simplify this because we can show this is multiple key/value 
pairs case by `{key1: ..., key2: ...}`:
   
   ```suggestion
       test("{key1: Range, key2: true}") do
   ```

##########
File path: ruby/red-arrow/test/test-table.rb
##########
@@ -147,6 +147,96 @@ def setup
       TABLE
     end
 
+    test("{key: Number}") do
+      assert_equal(<<-TABLE, @table.slice(count: 16).to_s)
+       count   visible
+0         16   true   
+      TABLE
+    end
+
+    test("{key: String}") do
+      name_array = Arrow::StringArray.new(["a", "b", "c", "d", "e", "f", "g", 
"h"])
+      table_with_name = @table.merge(:name => name_array)

Review comment:
       Or we can use a table that only has `name`:
   
   ```ruby
   table = Arrow::Table.new(name: Arrow::StringArray.new(["a", "b", "c"]))
   assert_equal(..., table.slice(name: "b").to_s)
   ...
   ```

##########
File path: ruby/red-arrow/test/test-table.rb
##########
@@ -147,6 +147,96 @@ def setup
       TABLE
     end
 
+    test("{key: Number}") do
+      assert_equal(<<-TABLE, @table.slice(count: 16).to_s)
+       count   visible
+0         16   true   
+      TABLE
+    end
+
+    test("{key: String}") do
+      name_array = Arrow::StringArray.new(["a", "b", "c", "d", "e", "f", "g", 
"h"])
+      table_with_name = @table.merge(:name => name_array)
+      assert_equal(<<-TABLE, table_with_name.slice(name: 'e').to_s)
+       count   visible name
+0         16   true    e   
+      TABLE
+    end
+
+    test("{key: TrueClass}") do

Review comment:
       We can simplify this because `true` is the only one instance of 
`TrueClass`:
   
   ```suggestion
       test("{key: true}") do
   ```

##########
File path: ruby/red-arrow/test/test-table.rb
##########
@@ -147,6 +147,96 @@ def setup
       TABLE
     end
 
+    test("{key: Number}") do
+      assert_equal(<<-TABLE, @table.slice(count: 16).to_s)
+       count   visible
+0         16   true   
+      TABLE
+    end
+
+    test("{key: String}") do
+      name_array = Arrow::StringArray.new(["a", "b", "c", "d", "e", "f", "g", 
"h"])
+      table_with_name = @table.merge(:name => name_array)

Review comment:
       ```suggestion
         table_with_name = @table.merge(name: name_array)
   ```

##########
File path: ruby/red-arrow/test/test-table.rb
##########
@@ -147,6 +147,96 @@ def setup
       TABLE
     end
 
+    test("{key: Number}") do
+      assert_equal(<<-TABLE, @table.slice(count: 16).to_s)
+       count   visible
+0         16   true   
+      TABLE
+    end
+
+    test("{key: String}") do
+      name_array = Arrow::StringArray.new(["a", "b", "c", "d", "e", "f", "g", 
"h"])
+      table_with_name = @table.merge(:name => name_array)
+      assert_equal(<<-TABLE, table_with_name.slice(name: 'e').to_s)
+       count   visible name
+0         16   true    e   
+      TABLE
+    end
+
+    test("{key: TrueClass}") do
+      assert_equal(<<-TABLE, @table.slice(visible: true).to_s)
+        count  visible
+0           1  true   
+1      (null)   (null)
+2           8  true   
+3          16  true   
+4      (null)   (null)
+5      (null)   (null)
+      TABLE
+    end
+
+    test("{key: FalseClass}") do
+      assert_equal(<<-TABLE, @table.slice(visible: false).to_s)
+        count  visible
+0           2  false  
+1      (null)   (null)
+2          32  false  
+3      (null)   (null)
+4      (null)   (null)
+      TABLE
+    end
+
+    test("{key: Range}: beginless") do
+      assert_equal(<<-TABLE, @table.slice(count: ..8).to_s)
+       count   visible
+0          1   true   
+1          2   false  
+2          4    (null)
+3          8   true   
+      TABLE
+    end

Review comment:
       Could you also add begeinless and excluded end range case? (`...8`)

##########
File path: ruby/red-arrow/test/test-table.rb
##########
@@ -147,6 +147,96 @@ def setup
       TABLE
     end
 
+    test("{key: Number}") do
+      assert_equal(<<-TABLE, @table.slice(count: 16).to_s)
+       count   visible
+0         16   true   
+      TABLE
+    end
+
+    test("{key: String}") do
+      name_array = Arrow::StringArray.new(["a", "b", "c", "d", "e", "f", "g", 
"h"])
+      table_with_name = @table.merge(:name => name_array)
+      assert_equal(<<-TABLE, table_with_name.slice(name: 'e').to_s)
+       count   visible name
+0         16   true    e   
+      TABLE
+    end
+
+    test("{key: TrueClass}") do
+      assert_equal(<<-TABLE, @table.slice(visible: true).to_s)
+        count  visible
+0           1  true   
+1      (null)   (null)
+2           8  true   
+3          16  true   
+4      (null)   (null)
+5      (null)   (null)
+      TABLE
+    end
+
+    test("{key: FalseClass}") do

Review comment:
       ditto.

##########
File path: ruby/red-arrow/test/test-table.rb
##########
@@ -147,6 +147,96 @@ def setup
       TABLE
     end
 
+    test("{key: Number}") do
+      assert_equal(<<-TABLE, @table.slice(count: 16).to_s)
+       count   visible
+0         16   true   
+      TABLE
+    end
+
+    test("{key: String}") do
+      name_array = Arrow::StringArray.new(["a", "b", "c", "d", "e", "f", "g", 
"h"])
+      table_with_name = @table.merge(:name => name_array)
+      assert_equal(<<-TABLE, table_with_name.slice(name: 'e').to_s)
+       count   visible name
+0         16   true    e   
+      TABLE
+    end
+
+    test("{key: TrueClass}") do
+      assert_equal(<<-TABLE, @table.slice(visible: true).to_s)
+        count  visible
+0           1  true   
+1      (null)   (null)
+2           8  true   
+3          16  true   
+4      (null)   (null)
+5      (null)   (null)
+      TABLE
+    end
+
+    test("{key: FalseClass}") do
+      assert_equal(<<-TABLE, @table.slice(visible: false).to_s)
+        count  visible
+0           2  false  
+1      (null)   (null)
+2          32  false  
+3      (null)   (null)
+4      (null)   (null)
+      TABLE
+    end
+
+    test("{key: Range}: beginless") do
+      assert_equal(<<-TABLE, @table.slice(count: ..8).to_s)
+       count   visible
+0          1   true   
+1          2   false  
+2          4    (null)
+3          8   true   
+      TABLE
+    end
+
+    test("{key: Range}: endless") do
+      assert_equal(<<-TABLE, @table.slice(count: 16..).to_s)
+       count   visible
+0         16   true   
+1         32   false  
+2         64    (null)
+3        128    (null)
+      TABLE
+    end
+
+    test("{key: Range}: include end") do
+      assert_equal(<<-TABLE, @table.slice(count: 1..16).to_s)
+       count   visible
+0          1   true   
+1          2   false  
+2          4    (null)
+3          8   true   
+4         16   true   
+      TABLE
+    end
+
+    test("{key: Range}: exclude end") do
+      assert_equal(<<-TABLE, @table.slice(count: 1...16).to_s)
+       count   visible
+0          1   true   
+1          2   false  
+2          4    (null)
+3          8   true   
+      TABLE
+    end
+
+    test("{key: Range, key: TrueClass}: multiple key/value pairs") do
+      assert_equal(<<-TABLE, @table.slice(count: 0..8, visible: false).to_s)
+        count  visible
+0           2  false  
+1      (null)   (null)
+2      (null)   (null)
+3      (null)   (null)
+      TABLE

Review comment:
       This expected result looks wrong...
   It should be:
   
   ```text
         count  visible
   0         2  false  
   ```
   (We should remove null records from `==` result.)
   
   But this isn't a problem in this pull request. We can fix it in another pull 
request.




-- 
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: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to