red-arrow 18.1.0 → 19.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (133) hide show
  1. checksums.yaml +4 -4
  2. data/lib/arrow/array.rb +7 -4
  3. data/lib/arrow/column.rb +4 -4
  4. data/lib/arrow/jruby/array-builder.rb +114 -0
  5. data/lib/arrow/jruby/array.rb +109 -0
  6. data/{test/helper/fixture.rb → lib/arrow/jruby/chunked-array.rb} +14 -6
  7. data/lib/arrow/jruby/compression-type.rb +26 -0
  8. data/{test/test-boolean-scalar.rb → lib/arrow/jruby/csv-read-options.rb} +12 -6
  9. data/{test/test-map-data-type.rb → lib/arrow/jruby/data-type.rb} +24 -12
  10. data/lib/arrow/jruby/decimal128.rb +28 -0
  11. data/lib/arrow/jruby/decimal256.rb +28 -0
  12. data/{test/fixture/null-with-double-quote.csv → lib/arrow/jruby/error.rb} +7 -4
  13. data/lib/arrow/jruby/file-system.rb +24 -0
  14. data/{test/test-null-array.rb → lib/arrow/jruby/function.rb} +5 -4
  15. data/lib/arrow/jruby/record-batch-iterator.rb +24 -0
  16. data/{test/fixture/integer-float.csv → lib/arrow/jruby/record-batch.rb} +8 -4
  17. data/{test/fixture/float-integer.csv → lib/arrow/jruby/sort-key.rb} +8 -4
  18. data/lib/arrow/jruby/sort-options.rb +24 -0
  19. data/lib/arrow/jruby/stream-listener-raw.rb +25 -0
  20. data/{test/test-rolling-window.rb → lib/arrow/jruby/table.rb} +19 -19
  21. data/lib/arrow/jruby/writable.rb +24 -0
  22. data/lib/arrow/jruby.rb +52 -0
  23. data/lib/arrow/libraries.rb +126 -0
  24. data/lib/arrow/list-array-builder.rb +1 -0
  25. data/lib/arrow/loader.rb +3 -111
  26. data/{test/fixture/null-without-double-quote.csv → lib/arrow/ruby.rb} +6 -4
  27. data/lib/arrow/version.rb +1 -1
  28. data/lib/arrow.rb +2 -7
  29. data/red-arrow.gemspec +15 -6
  30. metadata +26 -229
  31. data/test/each-raw-record/test-basic-arrays.rb +0 -411
  32. data/test/each-raw-record/test-dense-union-array.rb +0 -566
  33. data/test/each-raw-record/test-dictionary-array.rb +0 -341
  34. data/test/each-raw-record/test-list-array.rb +0 -628
  35. data/test/each-raw-record/test-map-array.rb +0 -507
  36. data/test/each-raw-record/test-multiple-columns.rb +0 -72
  37. data/test/each-raw-record/test-sparse-union-array.rb +0 -528
  38. data/test/each-raw-record/test-struct-array.rb +0 -529
  39. data/test/each-raw-record/test-table.rb +0 -47
  40. data/test/fixture/TestOrcFile.test1.orc +0 -0
  41. data/test/fixture/with-header-float.csv +0 -20
  42. data/test/fixture/with-header.csv +0 -20
  43. data/test/fixture/without-header-float.csv +0 -19
  44. data/test/fixture/without-header.csv +0 -19
  45. data/test/helper/omittable.rb +0 -49
  46. data/test/helper.rb +0 -31
  47. data/test/raw-records/test-basic-arrays.rb +0 -405
  48. data/test/raw-records/test-dense-union-array.rb +0 -566
  49. data/test/raw-records/test-dictionary-array.rb +0 -341
  50. data/test/raw-records/test-list-array.rb +0 -628
  51. data/test/raw-records/test-map-array.rb +0 -507
  52. data/test/raw-records/test-multiple-columns.rb +0 -65
  53. data/test/raw-records/test-sparse-union-array.rb +0 -556
  54. data/test/raw-records/test-struct-array.rb +0 -529
  55. data/test/raw-records/test-table.rb +0 -47
  56. data/test/run-test.rb +0 -71
  57. data/test/test-array-builder.rb +0 -198
  58. data/test/test-array.rb +0 -332
  59. data/test/test-bigdecimal.rb +0 -40
  60. data/test/test-binary-dictionary-array-builder.rb +0 -103
  61. data/test/test-buffer.rb +0 -49
  62. data/test/test-chunked-array.rb +0 -198
  63. data/test/test-column.rb +0 -123
  64. data/test/test-csv-loader.rb +0 -297
  65. data/test/test-data-type.rb +0 -84
  66. data/test/test-date32-array.rb +0 -24
  67. data/test/test-date64-array.rb +0 -25
  68. data/test/test-decimal128-array-builder.rb +0 -126
  69. data/test/test-decimal128-array.rb +0 -47
  70. data/test/test-decimal128-data-type.rb +0 -31
  71. data/test/test-decimal128.rb +0 -126
  72. data/test/test-decimal256-array-builder.rb +0 -126
  73. data/test/test-decimal256-array.rb +0 -47
  74. data/test/test-decimal256-data-type.rb +0 -31
  75. data/test/test-decimal256.rb +0 -126
  76. data/test/test-dense-union-array.rb +0 -42
  77. data/test/test-dense-union-data-type.rb +0 -41
  78. data/test/test-dictionary-array.rb +0 -41
  79. data/test/test-dictionary-data-type.rb +0 -40
  80. data/test/test-expression.rb +0 -51
  81. data/test/test-feather.rb +0 -49
  82. data/test/test-field.rb +0 -117
  83. data/test/test-file-output-stream.rb +0 -54
  84. data/test/test-fixed-size-binary-array-builder.rb +0 -92
  85. data/test/test-fixed-size-binary-array.rb +0 -36
  86. data/test/test-float-scalar.rb +0 -46
  87. data/test/test-function.rb +0 -210
  88. data/test/test-group.rb +0 -193
  89. data/test/test-half-float-array.rb +0 -43
  90. data/test/test-half-float.rb +0 -130
  91. data/test/test-list-array-builder.rb +0 -79
  92. data/test/test-list-array.rb +0 -32
  93. data/test/test-list-data-type.rb +0 -69
  94. data/test/test-map-array-builder.rb +0 -110
  95. data/test/test-map-array.rb +0 -33
  96. data/test/test-memory-view.rb +0 -434
  97. data/test/test-orc.rb +0 -173
  98. data/test/test-ractor.rb +0 -34
  99. data/test/test-record-batch-builder.rb +0 -125
  100. data/test/test-record-batch-file-reader.rb +0 -136
  101. data/test/test-record-batch-iterator.rb +0 -37
  102. data/test/test-record-batch-reader.rb +0 -46
  103. data/test/test-record-batch-stream-reader.rb +0 -129
  104. data/test/test-record-batch.rb +0 -182
  105. data/test/test-scalar.rb +0 -65
  106. data/test/test-schema.rb +0 -134
  107. data/test/test-slicer.rb +0 -589
  108. data/test/test-sort-indices.rb +0 -40
  109. data/test/test-sort-key.rb +0 -81
  110. data/test/test-sort-options.rb +0 -58
  111. data/test/test-sparse-union-array.rb +0 -38
  112. data/test/test-sparse-union-data-type.rb +0 -41
  113. data/test/test-stream-listener.rb +0 -60
  114. data/test/test-string-dictionary-array-builder.rb +0 -103
  115. data/test/test-struct-array-builder.rb +0 -184
  116. data/test/test-struct-array.rb +0 -94
  117. data/test/test-struct-data-type.rb +0 -112
  118. data/test/test-table.rb +0 -1530
  119. data/test/test-tensor.rb +0 -297
  120. data/test/test-time.rb +0 -288
  121. data/test/test-time32-array.rb +0 -81
  122. data/test/test-time32-data-type.rb +0 -42
  123. data/test/test-time64-array.rb +0 -81
  124. data/test/test-time64-data-type.rb +0 -42
  125. data/test/test-timestamp-array.rb +0 -45
  126. data/test/test-timestamp-data-type.rb +0 -42
  127. data/test/values/test-basic-arrays.rb +0 -335
  128. data/test/values/test-dense-union-array.rb +0 -552
  129. data/test/values/test-dictionary-array.rb +0 -325
  130. data/test/values/test-list-array.rb +0 -587
  131. data/test/values/test-map-array.rb +0 -489
  132. data/test/values/test-sparse-union-array.rb +0 -543
  133. data/test/values/test-struct-array.rb +0 -524
data/test/test-tensor.rb DELETED
@@ -1,297 +0,0 @@
1
- # Licensed to the Apache Software Foundation (ASF) under one
2
- # or more contributor license agreements. See the NOTICE file
3
- # distributed with this work for additional information
4
- # regarding copyright ownership. The ASF licenses this file
5
- # to you under the Apache License, Version 2.0 (the
6
- # "License"); you may not use this file except in compliance
7
- # with the License. You may obtain a copy of the License at
8
- #
9
- # http://www.apache.org/licenses/LICENSE-2.0
10
- #
11
- # Unless required by applicable law or agreed to in writing,
12
- # software distributed under the License is distributed on an
13
- # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
- # KIND, either express or implied. See the License for the
15
- # specific language governing permissions and limitations
16
- # under the License.
17
-
18
- class TensorTest < Test::Unit::TestCase
19
- sub_test_case("class methods") do
20
- sub_test_case(".new") do
21
- def setup
22
- @raw_tensor = [
23
- [
24
- [1, 2, 3, 4],
25
- [5, 6, 7, 8],
26
- ],
27
- [
28
- [9, 10, 11, 12],
29
- [13, 14, 15, 16],
30
- ],
31
- [
32
- [17, 18, 19, 20],
33
- [21, 22, 23, 24],
34
- ],
35
- ]
36
- @shape = [3, 2, 4]
37
- @strides = [8, 4, 1]
38
- end
39
-
40
- test("Array") do
41
- tensor = Arrow::Tensor.new(@raw_tensor)
42
- assert_equal({
43
- value_data_type: Arrow::UInt8DataType.new,
44
- buffer: @raw_tensor.flatten.pack("C*"),
45
- shape: @shape,
46
- strides: @strides,
47
- dimension_names: ["", "", ""],
48
- },
49
- {
50
- value_data_type: tensor.value_data_type,
51
- buffer: tensor.buffer.data.to_s,
52
- shape: tensor.shape,
53
- strides: tensor.strides,
54
- dimension_names: tensor.dimension_names,
55
- })
56
- end
57
-
58
- test("Array, data_type: Symbol") do
59
- tensor = Arrow::Tensor.new(@raw_tensor, data_type: :int32)
60
- assert_equal({
61
- value_data_type: Arrow::Int32DataType.new,
62
- buffer: @raw_tensor.flatten.pack("l*"),
63
- shape: @shape,
64
- strides: @strides.collect {|x| x * 4},
65
- dimension_names: ["", "", ""],
66
- },
67
- {
68
- value_data_type: tensor.value_data_type,
69
- buffer: tensor.buffer.data.to_s,
70
- shape: tensor.shape,
71
- strides: tensor.strides,
72
- dimension_names: tensor.dimension_names,
73
- })
74
- end
75
-
76
- test("Array, dimension_names: Array<String>") do
77
- tensor = Arrow::Tensor.new(@raw_tensor,
78
- dimension_names: ["a", "b", "c"])
79
- assert_equal({
80
- value_data_type: Arrow::UInt8DataType.new,
81
- buffer: @raw_tensor.flatten.pack("C*"),
82
- shape: @shape,
83
- strides: @strides,
84
- dimension_names: ["a", "b", "c"],
85
- },
86
- {
87
- value_data_type: tensor.value_data_type,
88
- buffer: tensor.buffer.data.to_s,
89
- shape: tensor.shape,
90
- strides: tensor.strides,
91
- dimension_names: tensor.dimension_names,
92
- })
93
- end
94
-
95
- test("Array, dimension_names: Array<Symbol>") do
96
- tensor = Arrow::Tensor.new(@raw_tensor,
97
- dimension_names: [:a, :b, :c])
98
- assert_equal({
99
- value_data_type: Arrow::UInt8DataType.new,
100
- buffer: @raw_tensor.flatten.pack("C*"),
101
- shape: @shape,
102
- strides: @strides,
103
- dimension_names: ["a", "b", "c"],
104
- },
105
- {
106
- value_data_type: tensor.value_data_type,
107
- buffer: tensor.buffer.data.to_s,
108
- shape: tensor.shape,
109
- strides: tensor.strides,
110
- dimension_names: tensor.dimension_names,
111
- })
112
- end
113
-
114
- test("Array, strides:") do
115
- message = "strides: is only accepted with " +
116
- "an Arrow::Buffer or String raw tensor: #{@strides.inspect}"
117
- assert_raise(ArgumentError.new(message)) do
118
- Arrow::Tensor.new(@raw_tensor, strides: @strides)
119
- end
120
- end
121
-
122
- test("Arrow::Buffer, data_type:, shape:") do
123
- data_type = :uint8
124
- data = Arrow::Buffer.new(@raw_tensor.flatten.pack("C*").freeze)
125
- tensor = Arrow::Tensor.new(data,
126
- data_type: data_type,
127
- shape: @shape)
128
- assert_equal({
129
- value_data_type: Arrow::UInt8DataType.new,
130
- buffer: @raw_tensor.flatten.pack("C*"),
131
- shape: @shape,
132
- strides: @strides,
133
- dimension_names: ["", "", ""],
134
- },
135
- {
136
- value_data_type: tensor.value_data_type,
137
- buffer: tensor.buffer.data.to_s,
138
- shape: tensor.shape,
139
- strides: tensor.strides,
140
- dimension_names: tensor.dimension_names,
141
- })
142
- end
143
-
144
- test("String, data_type:, shape:") do
145
- data_type = :uint8
146
- data = @raw_tensor.flatten.pack("C*").freeze
147
- tensor = Arrow::Tensor.new(data,
148
- data_type: data_type,
149
- shape: @shape)
150
- assert_equal({
151
- value_data_type: Arrow::UInt8DataType.new,
152
- buffer: @raw_tensor.flatten.pack("C*"),
153
- shape: @shape,
154
- strides: @strides,
155
- dimension_names: ["", "", ""],
156
- },
157
- {
158
- value_data_type: tensor.value_data_type,
159
- buffer: tensor.buffer.data.to_s,
160
- shape: tensor.shape,
161
- strides: tensor.strides,
162
- dimension_names: tensor.dimension_names,
163
- })
164
- end
165
-
166
- test("String, data_type:") do
167
- data_type = :uint8
168
- data = @raw_tensor.flatten.pack("C*").freeze
169
- message = "shape: is missing: #{data.inspect}"
170
- assert_raise(ArgumentError.new(message)) do
171
- Arrow::Tensor.new(data, data_type: data_type)
172
- end
173
- end
174
-
175
- test("String, shape:") do
176
- data = @raw_tensor.flatten.pack("C*").freeze
177
- message = "data_type: is missing: #{data.inspect}"
178
- assert_raise(ArgumentError.new(message)) do
179
- Arrow::Tensor.new(data, shape: @shape)
180
- end
181
- end
182
-
183
- test("String - not ASCII-8BIT") do
184
- data = "XXX"
185
- message = "raw tensor String must be " +
186
- "an ASCII-8BIT encoded string: #{data.encoding.inspect}"
187
- assert_raise(ArgumentError.new(message)) do
188
- Arrow::Tensor.new("XXX")
189
- end
190
- end
191
-
192
- test("Symbol, Arrow::Buffer, shape:") do
193
- data_type = :uint8
194
- data = Arrow::Buffer.new(@raw_tensor.flatten.pack("C*").freeze)
195
- tensor = Arrow::Tensor.new(data_type,
196
- data,
197
- shape: @shape)
198
- assert_equal({
199
- value_data_type: Arrow::UInt8DataType.new,
200
- buffer: @raw_tensor.flatten.pack("C*"),
201
- shape: @shape,
202
- strides: @strides,
203
- dimension_names: ["", "", ""],
204
- },
205
- {
206
- value_data_type: tensor.value_data_type,
207
- buffer: tensor.buffer.data.to_s,
208
- shape: tensor.shape,
209
- strides: tensor.strides,
210
- dimension_names: tensor.dimension_names,
211
- })
212
- end
213
-
214
- test("Symbol, String, shape:, strides: - !contiguous and column major") do
215
- data_type = :uint8
216
- @shape[-1] -= 1 # Ignore the last element in @raw_tensor
217
- @strides.reverse
218
- tensor = Arrow::Tensor.new(data_type,
219
- @raw_tensor.flatten.pack("C*"),
220
- shape: @shape,
221
- strides: @strides)
222
- assert_equal({
223
- value_data_type: Arrow::UInt8DataType.new,
224
- buffer: @raw_tensor.flatten.pack("C*"),
225
- shape: @shape,
226
- strides: @strides,
227
- dimension_names: ["", "", ""],
228
- contiguous: false,
229
- row_major: false,
230
- column_major: false,
231
- },
232
- {
233
- value_data_type: tensor.value_data_type,
234
- buffer: tensor.buffer.data.to_s,
235
- shape: tensor.shape,
236
- strides: tensor.strides,
237
- dimension_names: tensor.dimension_names,
238
- contiguous: tensor.contiguous?,
239
- row_major: tensor.row_major?,
240
- column_major: tensor.column_major?,
241
- })
242
- end
243
- end
244
- end
245
-
246
- sub_test_case("instance methods") do
247
- def setup
248
- raw_data = [
249
- 1, 2,
250
- 3, 4,
251
-
252
- 5, 6,
253
- 7, 8,
254
-
255
- 9, 10,
256
- 11, 12,
257
- ]
258
- data = Arrow::Buffer.new(raw_data.pack("c*").freeze)
259
- shape = [3, 2, 2]
260
- strides = []
261
- names = ["a", "b", "c"]
262
- @tensor = Arrow::Tensor.new(:int8,
263
- data,
264
- shape,
265
- strides,
266
- names)
267
- end
268
-
269
- sub_test_case("#==") do
270
- test("Arrow::Tensor") do
271
- assert do
272
- @tensor == @tensor
273
- end
274
- end
275
-
276
- test("not Arrow::Tensor") do
277
- assert do
278
- not (@tensor == 29)
279
- end
280
- end
281
- end
282
-
283
- sub_test_case("#to_arrow_array") do
284
- test("1 dimension") do
285
- assert_equal(Arrow::UInt8Array.new([1, 2, 3]),
286
- Arrow::Tensor.new([1, 2, 3]).to_arrow_array)
287
- end
288
-
289
- test("2 dimensions") do
290
- message = "must be 1 dimensional tensor: [3, 1]"
291
- assert_raise(RangeError.new(message)) do
292
- Arrow::Tensor.new([[1], [2], [3]]).to_arrow_array
293
- end
294
- end
295
- end
296
- end
297
- end
data/test/test-time.rb DELETED
@@ -1,288 +0,0 @@
1
- # Licensed to the Apache Software Foundation (ASF) under one
2
- # or more contributor license agreements. See the NOTICE file
3
- # distributed with this work for additional information
4
- # regarding copyright ownership. The ASF licenses this file
5
- # to you under the Apache License, Version 2.0 (the
6
- # "License"); you may not use this file except in compliance
7
- # with the License. You may obtain a copy of the License at
8
- #
9
- # http://www.apache.org/licenses/LICENSE-2.0
10
- #
11
- # Unless required by applicable law or agreed to in writing,
12
- # software distributed under the License is distributed on an
13
- # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
- # KIND, either express or implied. See the License for the
15
- # specific language governing permissions and limitations
16
- # under the License.
17
-
18
- class TimeTest < Test::Unit::TestCase
19
- sub_test_case("#==") do
20
- test("same unit") do
21
- assert do
22
- Arrow::Time.new(:second, 10) == Arrow::Time.new(:second, 10)
23
- end
24
- end
25
-
26
- test("different unit") do
27
- assert do
28
- Arrow::Time.new(:second, 10) == Arrow::Time.new(:milli, 10 * 1000)
29
- end
30
- end
31
-
32
- test("false") do
33
- assert do
34
- not(Arrow::Time.new(:second, 10) == Arrow::Time.new(:second, 11))
35
- end
36
- end
37
- end
38
-
39
- sub_test_case("#cast") do
40
- test("same unit") do
41
- time = Arrow::Time.new(Arrow::TimeUnit::SECOND, 10)
42
- casted_time = time.cast(Arrow::TimeUnit::SECOND)
43
- assert_equal([time.unit, time.value],
44
- [casted_time.unit, casted_time.value])
45
- end
46
-
47
- test("second -> milli") do
48
- time = Arrow::Time.new(Arrow::TimeUnit::SECOND, 10)
49
- casted_time = time.cast(Arrow::TimeUnit::MILLI)
50
- assert_equal([
51
- Arrow::TimeUnit::MILLI,
52
- time.value * 1000,
53
- ],
54
- [
55
- casted_time.unit,
56
- casted_time.value,
57
- ])
58
- end
59
-
60
- test("second -> micro") do
61
- time = Arrow::Time.new(Arrow::TimeUnit::SECOND, 10)
62
- casted_time = time.cast(Arrow::TimeUnit::MICRO)
63
- assert_equal([
64
- Arrow::TimeUnit::MICRO,
65
- time.value * 1000 * 1000,
66
- ],
67
- [
68
- casted_time.unit,
69
- casted_time.value,
70
- ])
71
- end
72
-
73
- test("second -> nano") do
74
- time = Arrow::Time.new(Arrow::TimeUnit::SECOND, 10)
75
- casted_time = time.cast(Arrow::TimeUnit::NANO)
76
- assert_equal([
77
- Arrow::TimeUnit::NANO,
78
- time.value * 1000 * 1000 * 1000,
79
- ],
80
- [
81
- casted_time.unit,
82
- casted_time.value,
83
- ])
84
- end
85
-
86
- test("milli -> second") do
87
- time = Arrow::Time.new(Arrow::TimeUnit::MILLI, 10_200)
88
- casted_time = time.cast(Arrow::TimeUnit::SECOND)
89
- assert_equal([
90
- Arrow::TimeUnit::SECOND,
91
- 10,
92
- ],
93
- [
94
- casted_time.unit,
95
- casted_time.value,
96
- ])
97
- end
98
-
99
- test("milli -> micro") do
100
- time = Arrow::Time.new(Arrow::TimeUnit::MILLI, 10_200)
101
- casted_time = time.cast(Arrow::TimeUnit::MICRO)
102
- assert_equal([
103
- Arrow::TimeUnit::MICRO,
104
- time.value * 1000,
105
- ],
106
- [
107
- casted_time.unit,
108
- casted_time.value,
109
- ])
110
- end
111
-
112
- test("milli -> nano") do
113
- time = Arrow::Time.new(Arrow::TimeUnit::MILLI, 10_200)
114
- casted_time = time.cast(Arrow::TimeUnit::NANO)
115
- assert_equal([
116
- Arrow::TimeUnit::NANO,
117
- time.value * 1000 * 1000,
118
- ],
119
- [
120
- casted_time.unit,
121
- casted_time.value,
122
- ])
123
- end
124
-
125
- test("micro -> second") do
126
- time = Arrow::Time.new(Arrow::TimeUnit::MICRO, 10_200_300)
127
- casted_time = time.cast(Arrow::TimeUnit::SECOND)
128
- assert_equal([
129
- Arrow::TimeUnit::SECOND,
130
- 10,
131
- ],
132
- [
133
- casted_time.unit,
134
- casted_time.value,
135
- ])
136
- end
137
-
138
- test("micro -> milli") do
139
- time = Arrow::Time.new(Arrow::TimeUnit::MICRO, 10_200_300)
140
- casted_time = time.cast(Arrow::TimeUnit::MILLI)
141
- assert_equal([
142
- Arrow::TimeUnit::MILLI,
143
- 10_200,
144
- ],
145
- [
146
- casted_time.unit,
147
- casted_time.value,
148
- ])
149
- end
150
-
151
- test("micro -> nano") do
152
- time = Arrow::Time.new(Arrow::TimeUnit::MICRO, 10_200_300)
153
- casted_time = time.cast(Arrow::TimeUnit::NANO)
154
- assert_equal([
155
- Arrow::TimeUnit::NANO,
156
- time.value * 1000,
157
- ],
158
- [
159
- casted_time.unit,
160
- casted_time.value,
161
- ])
162
- end
163
-
164
- test("nano -> second") do
165
- time = Arrow::Time.new(Arrow::TimeUnit::NANO, 10_200_300_400)
166
- casted_time = time.cast(Arrow::TimeUnit::SECOND)
167
- assert_equal([
168
- Arrow::TimeUnit::SECOND,
169
- 10,
170
- ],
171
- [
172
- casted_time.unit,
173
- casted_time.value,
174
- ])
175
- end
176
-
177
- test("nano -> milli") do
178
- time = Arrow::Time.new(Arrow::TimeUnit::NANO, 10_200_300_400)
179
- casted_time = time.cast(Arrow::TimeUnit::MILLI)
180
- assert_equal([
181
- Arrow::TimeUnit::MILLI,
182
- 10_200,
183
- ],
184
- [
185
- casted_time.unit,
186
- casted_time.value,
187
- ])
188
- end
189
-
190
- test("nano -> micro") do
191
- time = Arrow::Time.new(Arrow::TimeUnit::NANO, 10_200_300_400)
192
- casted_time = time.cast(Arrow::TimeUnit::MICRO)
193
- assert_equal([
194
- Arrow::TimeUnit::MICRO,
195
- 10_200_300,
196
- ],
197
- [
198
- casted_time.unit,
199
- casted_time.value,
200
- ])
201
- end
202
- end
203
-
204
- sub_test_case("#to_f") do
205
- test("second") do
206
- time = Arrow::Time.new(Arrow::TimeUnit::SECOND, 10)
207
- assert_in_delta(10.0, time.to_f)
208
- end
209
-
210
- test("milli") do
211
- time = Arrow::Time.new(Arrow::TimeUnit::MILLI, 10_200)
212
- assert_in_delta(10.2, time.to_f)
213
- end
214
-
215
- test("micro") do
216
- time = Arrow::Time.new(Arrow::TimeUnit::MICRO, 10_200_300)
217
- assert_in_delta(10.2003, time.to_f)
218
- end
219
-
220
- test("nano") do
221
- time = Arrow::Time.new(Arrow::TimeUnit::NANO, 10_200_300_400)
222
- assert_in_delta(10.2003004, time.to_f)
223
- end
224
- end
225
-
226
- sub_test_case("#positive?") do
227
- test("true") do
228
- time = Arrow::Time.new(Arrow::TimeUnit::SECOND, 10)
229
- assert do
230
- time.positive?
231
- end
232
- end
233
-
234
- test("false") do
235
- time = Arrow::Time.new(Arrow::TimeUnit::SECOND, -10)
236
- assert do
237
- not time.positive?
238
- end
239
- end
240
- end
241
-
242
- sub_test_case("#negative?") do
243
- test("true") do
244
- time = Arrow::Time.new(Arrow::TimeUnit::SECOND, -10)
245
- assert do
246
- time.negative?
247
- end
248
- end
249
-
250
- test("false") do
251
- time = Arrow::Time.new(Arrow::TimeUnit::SECOND, 10)
252
- assert do
253
- not time.negative?
254
- end
255
- end
256
- end
257
-
258
- test("#hour") do
259
- time = Arrow::Time.new(Arrow::TimeUnit::SECOND,
260
- (5 * 60 * 60) + (12 * 60) + 10)
261
- assert_equal(5, time.hour)
262
- end
263
-
264
- test("#minute") do
265
- time = Arrow::Time.new(Arrow::TimeUnit::SECOND,
266
- (5 * 60 * 60) + (12 * 60) + 10)
267
- assert_equal(12, time.minute)
268
- end
269
-
270
- test("#second") do
271
- time = Arrow::Time.new(Arrow::TimeUnit::SECOND,
272
- (5 * 60 * 60) + (12 * 60) + 10)
273
- assert_equal(10, time.second)
274
- end
275
-
276
- test("#nano_second") do
277
- time = Arrow::Time.new(Arrow::TimeUnit::NANO, 1234)
278
- assert_equal(1234, time.nano_second)
279
- end
280
-
281
- test("#to_s") do
282
- time = Arrow::Time.new(Arrow::TimeUnit::NANO,
283
- -(((5 * 60 * 60) + (12 * 60) + 10) * 1_000_000_000 +
284
- 1234))
285
- assert_equal("-05:12:10.000001234",
286
- time.to_s)
287
- end
288
- end
@@ -1,81 +0,0 @@
1
- # Licensed to the Apache Software Foundation (ASF) under one
2
- # or more contributor license agreements. See the NOTICE file
3
- # distributed with this work for additional information
4
- # regarding copyright ownership. The ASF licenses this file
5
- # to you under the Apache License, Version 2.0 (the
6
- # "License"); you may not use this file except in compliance
7
- # with the License. You may obtain a copy of the License at
8
- #
9
- # http://www.apache.org/licenses/LICENSE-2.0
10
- #
11
- # Unless required by applicable law or agreed to in writing,
12
- # software distributed under the License is distributed on an
13
- # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
- # KIND, either express or implied. See the License for the
15
- # specific language governing permissions and limitations
16
- # under the License.
17
-
18
- class Time32ArrayTest < Test::Unit::TestCase
19
- sub_test_case(".new") do
20
- sub_test_case("unit") do
21
- test("Arrow::TimeUnit") do
22
- values = [1000 * 10, nil]
23
- array = Arrow::Time32Array.new(Arrow::TimeUnit::MILLI, values)
24
- assert_equal([
25
- "time32[ms]",
26
- [
27
- Arrow::Time.new(Arrow::TimeUnit::MILLI,
28
- 1000 * 10),
29
- nil,
30
- ],
31
- ],
32
- [
33
- array.value_data_type.to_s,
34
- array.to_a,
35
- ])
36
- end
37
-
38
- test("Symbol") do
39
- values = [60 * 10, nil]
40
- array = Arrow::Time32Array.new(:second, values)
41
- assert_equal([
42
- "time32[s]",
43
- [
44
- Arrow::Time.new(Arrow::TimeUnit::SECOND,
45
- 60 * 10),
46
- nil,
47
- ],
48
- ],
49
- [
50
- array.value_data_type.to_s,
51
- array.to_a,
52
- ])
53
- end
54
- end
55
-
56
- sub_test_case("values") do
57
- test("Arrow::Time") do
58
- data_type = Arrow::Time32DataType.new(:second)
59
- values = [
60
- Arrow::Time.new(Arrow::TimeUnit::SECOND,
61
- 60 * 10),
62
- nil,
63
- ]
64
- array = Arrow::Time32Array.new(data_type, values)
65
- assert_equal(values, array.to_a)
66
- end
67
-
68
- test("Integer") do
69
- data_type = Arrow::Time32DataType.new(:second)
70
- values = [60 * 10, nil]
71
- array = Arrow::Time32Array.new(data_type, values)
72
- assert_equal([
73
- Arrow::Time.new(Arrow::TimeUnit::SECOND,
74
- 60 * 10),
75
- nil,
76
- ],
77
- array.to_a)
78
- end
79
- end
80
- end
81
- end
@@ -1,42 +0,0 @@
1
- # Licensed to the Apache Software Foundation (ASF) under one
2
- # or more contributor license agreements. See the NOTICE file
3
- # distributed with this work for additional information
4
- # regarding copyright ownership. The ASF licenses this file
5
- # to you under the Apache License, Version 2.0 (the
6
- # "License"); you may not use this file except in compliance
7
- # with the License. You may obtain a copy of the License at
8
- #
9
- # http://www.apache.org/licenses/LICENSE-2.0
10
- #
11
- # Unless required by applicable law or agreed to in writing,
12
- # software distributed under the License is distributed on an
13
- # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
- # KIND, either express or implied. See the License for the
15
- # specific language governing permissions and limitations
16
- # under the License.
17
-
18
- class Time32DataTypeTest < Test::Unit::TestCase
19
- sub_test_case(".new") do
20
- test("Arrow::TimeUnit") do
21
- assert_equal("time32[ms]",
22
- Arrow::Time32DataType.new(Arrow::TimeUnit::MILLI).to_s)
23
- end
24
-
25
- test("Symbol") do
26
- assert_equal("time32[ms]",
27
- Arrow::Time32DataType.new(:milli).to_s)
28
- end
29
-
30
- test("unit: Arrow::TimeUnit") do
31
- data_type = Arrow::Time32DataType.new(unit: Arrow::TimeUnit::MILLI)
32
- assert_equal("time32[ms]",
33
- data_type.to_s)
34
- end
35
-
36
- test("unit: Symbol") do
37
- data_type = Arrow::Time32DataType.new(unit: :milli)
38
- assert_equal("time32[ms]",
39
- data_type.to_s)
40
- end
41
- end
42
- end