@@ -267,6 +267,93 @@ TEST_F(TensorImplTest, TestSetSizesContigUnbounded) {
267267 EXPECT_NE (err, Error::Ok);
268268}
269269
270+ TEST_F (TensorImplTest, TestDynamicTensorNoStridesDimOrder) {
271+ SizesType sizes[3 ] = {2 , 3 , 4 };
272+ float data[24 ] = {0 };
273+ TensorImpl t (
274+ ScalarType::Float,
275+ 3 ,
276+ sizes,
277+ data,
278+ nullptr ,
279+ nullptr ,
280+ TensorShapeDynamism::DYNAMIC_BOUND);
281+
282+ EXPECT_EQ (t.dim (), 3 );
283+ EXPECT_EQ (t.numel (), 24 );
284+ EXPECT_EQ (t.nbytes (), 24 * sizeof (float ));
285+
286+ SizesType new_sizes[3 ] = {3 , 2 , 4 };
287+ Error err = resize_tensor_impl (&t, {new_sizes, 3 });
288+ EXPECT_EQ (err, Error::Ok);
289+ EXPECT_EQ (t.dim (), 3 );
290+ EXPECT_EQ (t.size (0 ), 3 );
291+ EXPECT_EQ (t.size (1 ), 2 );
292+ EXPECT_EQ (t.size (2 ), 4 );
293+ EXPECT_EQ (t.numel (), 3 * 2 * 4 );
294+
295+ const float * y = t.data <float >();
296+ EXPECT_EQ (y, data);
297+ }
298+
299+ TEST_F (TensorImplTest, TestDynamicTensorNoStridesDimOrderResizeDown) {
300+ SizesType sizes[3 ] = {4 , 4 , 4 };
301+ float data[64 ] = {0 };
302+ TensorImpl t (
303+ ScalarType::Float,
304+ 3 ,
305+ sizes,
306+ data,
307+ nullptr ,
308+ nullptr ,
309+ TensorShapeDynamism::DYNAMIC_BOUND);
310+
311+ EXPECT_EQ (t.dim (), 3 );
312+ EXPECT_EQ (t.numel (), 64 );
313+ EXPECT_EQ (t.nbytes (), 64 * sizeof (float ));
314+
315+ SizesType new_sizes[3 ] = {2 , 2 , 2 };
316+ Error err = resize_tensor_impl (&t, {new_sizes, 3 });
317+ EXPECT_EQ (err, Error::Ok);
318+ EXPECT_EQ (t.dim (), 3 );
319+ EXPECT_EQ (t.size (0 ), 2 );
320+ EXPECT_EQ (t.size (1 ), 2 );
321+ EXPECT_EQ (t.size (2 ), 2 );
322+ EXPECT_EQ (t.numel (), 2 * 2 * 2 );
323+
324+ const float * y = t.data <float >();
325+ EXPECT_EQ (y, data);
326+ }
327+
328+ TEST_F (TensorImplTest, TestDynamicTensorNoStridesDimOrderResizeZeroDim) {
329+ SizesType sizes[3 ] = {4 , 4 , 4 };
330+ float data[64 ] = {0 };
331+ TensorImpl t (
332+ ScalarType::Float,
333+ 3 ,
334+ sizes,
335+ data,
336+ nullptr ,
337+ nullptr ,
338+ TensorShapeDynamism::DYNAMIC_BOUND);
339+
340+ EXPECT_EQ (t.dim (), 3 );
341+ EXPECT_EQ (t.numel (), 64 );
342+ EXPECT_EQ (t.nbytes (), 64 * sizeof (float ));
343+
344+ SizesType new_sizes[3 ] = {0 , 4 , 4 };
345+ Error err = resize_tensor_impl (&t, {new_sizes, 3 });
346+ EXPECT_EQ (err, Error::Ok);
347+ EXPECT_EQ (t.dim (), 3 );
348+ EXPECT_EQ (t.size (0 ), 0 );
349+ EXPECT_EQ (t.size (1 ), 4 );
350+ EXPECT_EQ (t.size (2 ), 4 );
351+ EXPECT_EQ (t.numel (), 0 );
352+
353+ const float * y = t.data <float >();
354+ EXPECT_EQ (y, data);
355+ }
356+
270357TEST_F (TensorImplTest, TestWriteRead) {
271358 SizesType sizes[1 ] = {1 };
272359 DimOrderType dim_order[1 ] = {0 };
0 commit comments