@@ -135,3 +135,91 @@ TEST(NanoarrowHppTest, NanoarrowHppViewArrayStreamTest) {
135
135
EXPECT_EQ (stream_view.code (), ENOMEM);
136
136
EXPECT_STREQ (stream_view.error ()->message , " foo bar" );
137
137
}
138
+
139
+ TEST (NanoarrowHppTest, NanoarrowHppViewArrayOffsetTest) {
140
+ nanoarrow::UniqueSchema schema{};
141
+ ArrowSchemaInit (schema.get ());
142
+ ASSERT_EQ (ArrowSchemaSetType (schema.get (), NANOARROW_TYPE_INT32), NANOARROW_OK);
143
+
144
+ nanoarrow::UniqueArray array{};
145
+ ASSERT_EQ (ArrowArrayInitFromSchema (array.get (), schema.get (), nullptr ), NANOARROW_OK);
146
+ ASSERT_EQ (ArrowArrayStartAppending (array.get ()), NANOARROW_OK);
147
+ ASSERT_EQ (ArrowArrayAppendInt (array.get (), 0 ), NANOARROW_OK);
148
+ ASSERT_EQ (ArrowArrayAppendInt (array.get (), 1 ), NANOARROW_OK);
149
+ ASSERT_EQ (ArrowArrayAppendInt (array.get (), 2 ), NANOARROW_OK);
150
+ ASSERT_EQ (ArrowArrayAppendInt (array.get (), 3 ), NANOARROW_OK);
151
+ ASSERT_EQ (ArrowArrayFinishBuildingDefault (array.get (), nullptr ), NANOARROW_OK);
152
+ array->offset = 2 ;
153
+ array->length = 2 ;
154
+
155
+ EXPECT_THAT (nanoarrow::ViewArrayAs<int32_t >(array.get ()), testing::ElementsAre (2 , 3 ));
156
+
157
+ nanoarrow::UniqueArrayView array_view{};
158
+ ASSERT_EQ (ArrowArrayViewInitFromSchema (array_view.get (), schema.get (), nullptr ),
159
+ NANOARROW_OK);
160
+ ASSERT_EQ (ArrowArrayViewSetArray (array_view.get (), array.get (), nullptr ), NANOARROW_OK);
161
+
162
+ EXPECT_THAT (nanoarrow::ViewArrayAs<int32_t >(array_view.get ()),
163
+ testing::ElementsAre (2 , 3 ));
164
+ }
165
+
166
+ TEST (NanoarrowHppTest, NanoarrowHppViewArrayAsBytesOffsetTest) {
167
+ using namespace nanoarrow ::literals;
168
+
169
+ nanoarrow::UniqueSchema schema{};
170
+ ArrowSchemaInit (schema.get ());
171
+ ASSERT_EQ (ArrowSchemaSetType (schema.get (), NANOARROW_TYPE_STRING), NANOARROW_OK);
172
+
173
+ nanoarrow::UniqueArray array{};
174
+ ASSERT_EQ (ArrowArrayInitFromSchema (array.get (), schema.get (), nullptr ), NANOARROW_OK);
175
+ ASSERT_EQ (ArrowArrayStartAppending (array.get ()), NANOARROW_OK);
176
+ ASSERT_EQ (ArrowArrayAppendString (array.get (), " foo" _asv), NANOARROW_OK);
177
+ ASSERT_EQ (ArrowArrayAppendString (array.get (), " bar" _asv), NANOARROW_OK);
178
+ ASSERT_EQ (ArrowArrayAppendString (array.get (), " baz" _asv), NANOARROW_OK);
179
+ ASSERT_EQ (ArrowArrayAppendString (array.get (), " qux" _asv), NANOARROW_OK);
180
+ ASSERT_EQ (ArrowArrayFinishBuildingDefault (array.get (), nullptr ), NANOARROW_OK);
181
+ array->offset = 2 ;
182
+ array->length = 2 ;
183
+
184
+ EXPECT_THAT (nanoarrow::ViewArrayAsBytes<32 >(array.get ()),
185
+ testing::ElementsAre (" baz" _asv, " qux" _asv));
186
+
187
+ nanoarrow::UniqueArrayView array_view{};
188
+ ASSERT_EQ (ArrowArrayViewInitFromSchema (array_view.get (), schema.get (), nullptr ),
189
+ NANOARROW_OK);
190
+ ASSERT_EQ (ArrowArrayViewSetArray (array_view.get (), array.get (), nullptr ), NANOARROW_OK);
191
+ EXPECT_THAT (nanoarrow::ViewArrayAsBytes<32 >(array_view.get ()),
192
+ testing::ElementsAre (" baz" _asv, " qux" _asv));
193
+ }
194
+
195
+ TEST (NanoarrowHppTest, NanoarrowHppViewArrayAsFixedSizeBytesOffsetTest) {
196
+ using namespace nanoarrow ::literals;
197
+
198
+ constexpr int32_t FixedSize = 3 ;
199
+ nanoarrow::UniqueSchema schema{};
200
+ ArrowSchemaInit (schema.get ());
201
+ ASSERT_EQ (ArrowSchemaSetTypeFixedSize (schema.get (), NANOARROW_TYPE_FIXED_SIZE_BINARY,
202
+ FixedSize),
203
+ NANOARROW_OK);
204
+
205
+ nanoarrow::UniqueArray array{};
206
+ ASSERT_EQ (ArrowArrayInitFromSchema (array.get (), schema.get (), nullptr ), NANOARROW_OK);
207
+ ASSERT_EQ (ArrowArrayStartAppending (array.get ()), NANOARROW_OK);
208
+ ASSERT_EQ (ArrowArrayAppendBytes (array.get (), {{" foo" }, FixedSize}), NANOARROW_OK);
209
+ ASSERT_EQ (ArrowArrayAppendBytes (array.get (), {{" bar" }, FixedSize}), NANOARROW_OK);
210
+ ASSERT_EQ (ArrowArrayAppendBytes (array.get (), {{" baz" }, FixedSize}), NANOARROW_OK);
211
+ ASSERT_EQ (ArrowArrayAppendBytes (array.get (), {{" qux" }, FixedSize}), NANOARROW_OK);
212
+ ASSERT_EQ (ArrowArrayFinishBuildingDefault (array.get (), nullptr ), NANOARROW_OK);
213
+ array->offset = 2 ;
214
+ array->length = 2 ;
215
+
216
+ EXPECT_THAT (nanoarrow::ViewArrayAsFixedSizeBytes (array.get (), FixedSize),
217
+ testing::ElementsAre (" baz" _asv, " qux" _asv));
218
+
219
+ nanoarrow::UniqueArrayView array_view{};
220
+ ASSERT_EQ (ArrowArrayViewInitFromSchema (array_view.get (), schema.get (), nullptr ),
221
+ NANOARROW_OK);
222
+ ASSERT_EQ (ArrowArrayViewSetArray (array_view.get (), array.get (), nullptr ), NANOARROW_OK);
223
+ EXPECT_THAT (nanoarrow::ViewArrayAsFixedSizeBytes (array_view.get (), FixedSize),
224
+ testing::ElementsAre (" baz" _asv, " qux" _asv));
225
+ }
0 commit comments