11class TestType < Test ::Unit ::TestCase
22 include Helper ::Sandbox
33
4- def test_bigint
4+ def test_bigint_active_record
55 ActiveRecord ::Base . connection . create_table ( "users" ) do |table |
66 table . bigint :bigint
77 end
@@ -10,7 +10,17 @@ def test_bigint
1010 User . first )
1111 end
1212
13- def test_integer
13+ def test_bigint_arrow
14+ ActiveRecord ::Base . connection . create_table ( "users" ) do |table |
15+ table . bigint :bigint
16+ end
17+ User . create! ( bigint : 2 ** 32 )
18+ assert_equal ( Arrow ::Table . new ( id : Arrow ::Int64Array . new ( [ 1 ] ) ,
19+ bigint : Arrow ::Int64Array . new ( [ 2 ** 32 ] ) ) ,
20+ User . to_arrow )
21+ end
22+
23+ def test_integer_active_record
1424 ActiveRecord ::Base . connection . create_table ( "users" ) do |table |
1525 table . integer :integer
1626 end
@@ -19,7 +29,22 @@ def test_integer
1929 User . first )
2030 end
2131
22- def test_float
32+ def test_integer_arrow
33+ ActiveRecord ::Base . connection . create_table ( "users" ) do |table |
34+ table . integer :integer
35+ end
36+ User . create! ( integer : 1 )
37+ if sqlite?
38+ array = Arrow ::Int64Array . new ( [ 1 ] )
39+ else
40+ array = Arrow ::Int32Array . new ( [ 1 ] )
41+ end
42+ assert_equal ( Arrow ::Table . new ( id : Arrow ::Int64Array . new ( [ 1 ] ) ,
43+ integer : array ) ,
44+ User . to_arrow )
45+ end
46+
47+ def test_float_active_record
2348 ActiveRecord ::Base . connection . create_table ( "users" ) do |table |
2449 table . float :float
2550 end
@@ -28,7 +53,22 @@ def test_float
2853 User . first )
2954 end
3055
31- def test_binary
56+ def test_float_arrow
57+ ActiveRecord ::Base . connection . create_table ( "users" ) do |table |
58+ table . float :float
59+ end
60+ User . create! ( float : 2.9 )
61+ if duckdb?
62+ array = Arrow ::FloatArray . new ( [ 2.9 ] )
63+ else
64+ array = Arrow ::DoubleArray . new ( [ 2.9 ] )
65+ end
66+ assert_equal ( Arrow ::Table . new ( id : Arrow ::Int64Array . new ( [ 1 ] ) ,
67+ float : array ) ,
68+ User . to_arrow )
69+ end
70+
71+ def test_binary_active_record
3272 ActiveRecord ::Base . connection . create_table ( "users" ) do |table |
3373 table . binary :binary
3474 end
@@ -37,7 +77,17 @@ def test_binary
3777 User . first )
3878 end
3979
40- def test_string
80+ def test_binary_arrow
81+ ActiveRecord ::Base . connection . create_table ( "users" ) do |table |
82+ table . binary :binary
83+ end
84+ User . create! ( binary : "Hello" . b )
85+ assert_equal ( Arrow ::Table . new ( id : Arrow ::Int64Array . new ( [ 1 ] ) ,
86+ binary : Arrow ::BinaryArray . new ( [ "Hello" . b ] ) ) ,
87+ User . to_arrow )
88+ end
89+
90+ def test_string_active_record
4191 ActiveRecord ::Base . connection . create_table ( "users" ) do |table |
4292 table . string :string
4393 end
@@ -46,16 +96,17 @@ def test_string
4696 User . first )
4797 end
4898
49- def test_text
99+ def test_text_arrow
50100 ActiveRecord ::Base . connection . create_table ( "users" ) do |table |
51101 table . text :text
52102 end
53103 User . create! ( text : "Hello" )
54- assert_equal ( User . new ( id : 1 , text : "Hello" ) ,
55- User . first )
104+ assert_equal ( Arrow ::Table . new ( id : Arrow ::Int64Array . new ( [ 1 ] ) ,
105+ text : Arrow ::StringArray . new ( [ "Hello" ] ) ) ,
106+ User . to_arrow )
56107 end
57108
58- def test_date
109+ def test_date_active_record
59110 ActiveRecord ::Base . connection . create_table ( "users" ) do |table |
60111 table . date :date
61112 end
@@ -64,4 +115,38 @@ def test_date
64115 assert_equal ( User . new ( id : 1 , date : date ) ,
65116 User . first )
66117 end
118+
119+ def test_date_arrow
120+ omit ( "TODO" ) if sqlite?
121+ ActiveRecord ::Base . connection . create_table ( "users" ) do |table |
122+ table . date :date
123+ end
124+ date = Date . new ( 2025 , 7 , 20 )
125+ User . create! ( date : date )
126+ assert_equal ( Arrow ::Table . new ( id : Arrow ::Int64Array . new ( [ 1 ] ) ,
127+ date : Arrow ::Date32Array . new ( [ date ] ) ) ,
128+ User . to_arrow )
129+ end
130+
131+ def test_datetime_active_record
132+ ActiveRecord ::Base . connection . create_table ( "users" ) do |table |
133+ table . datetime :datetime
134+ end
135+ datetime = DateTime . new ( 2025 , 7 , 20 , 20 , 40 , 23 )
136+ User . create! ( datetime : datetime )
137+ assert_equal ( User . new ( id : 1 , datetime : datetime ) ,
138+ User . first )
139+ end
140+
141+ def test_datetime
142+ omit ( "TODO" ) if sqlite?
143+ ActiveRecord ::Base . connection . create_table ( "users" ) do |table |
144+ table . datetime :datetime
145+ end
146+ datetime = DateTime . new ( 2025 , 7 , 20 , 20 , 40 , 23 )
147+ User . create! ( datetime : datetime )
148+ assert_equal ( Arrow ::Table . new ( id : Arrow ::Int64Array . new ( [ 1 ] ) ,
149+ datetime : Arrow ::TimestampArray . new ( :micro , [ datetime ] ) ) ,
150+ User . to_arrow )
151+ end
67152end
0 commit comments