| 31 | } // namespace eager_test |
| 32 | |
| 33 | TEST(Tensor, Constructor) { |
| 34 | paddle::Tensor et1 = paddle::Tensor(); |
| 35 | paddle::Tensor et2 = paddle::Tensor("et2"); |
| 36 | |
| 37 | PADDLE_ENFORCE_EQ(et1.defined(), |
| 38 | false, |
| 39 | common::errors::InvalidArgument("Tensor et1 should be " |
| 40 | "undefined.")); |
| 41 | PADDLE_ENFORCE_EQ(et2.name(), |
| 42 | "et2", |
| 43 | common::errors::InvalidArgument("Tensor name should be " |
| 44 | "'et2'.")); |
| 45 | |
| 46 | phi::DenseTensorMeta meta = |
| 47 | phi::DenseTensorMeta(phi::DataType::FLOAT32, common::make_ddim({1, 2})); |
| 48 | std::shared_ptr<phi::DenseTensor> dt = std::make_shared<phi::DenseTensor>( |
| 49 | std::make_unique<paddle::experimental::DefaultAllocator>(phi::CPUPlace()) |
| 50 | .get(), |
| 51 | meta); |
| 52 | auto* dt_ptr = dt->mutable_data<float>(phi::CPUPlace()); |
| 53 | dt_ptr[0] = 5.0f; |
| 54 | dt_ptr[1] = 10.0f; |
| 55 | paddle::Tensor et3 = paddle::Tensor(dt); |
| 56 | auto* et3_ptr = |
| 57 | std::dynamic_pointer_cast<phi::DenseTensor>(et3.impl())->data<float>(); |
| 58 | PADDLE_ENFORCE_EQ(et3_ptr[0], |
| 59 | 5.0f, |
| 60 | common::errors::InvalidArgument("First element should be " |
| 61 | "5.0f.")); |
| 62 | PADDLE_ENFORCE_EQ(et3_ptr[1], |
| 63 | 10.0f, |
| 64 | common::errors::InvalidArgument("Second element should be " |
| 65 | "10.0f.")); |
| 66 | // copy constructor |
| 67 | paddle::Tensor et4(et3); |
| 68 | auto* et4_ptr = |
| 69 | std::dynamic_pointer_cast<phi::DenseTensor>(et4.impl())->data<float>(); |
| 70 | PADDLE_ENFORCE_EQ(et4_ptr[0], |
| 71 | 5.0f, |
| 72 | common::errors::InvalidArgument("First element should be " |
| 73 | "5.0f.")); |
| 74 | PADDLE_ENFORCE_EQ(et4_ptr[1], |
| 75 | 10.0f, |
| 76 | common::errors::InvalidArgument("Second element should be " |
| 77 | "10.0f.")); |
| 78 | paddle::Tensor et5(std::move(et4)); |
| 79 | auto* et5_ptr = |
| 80 | std::dynamic_pointer_cast<phi::DenseTensor>(et5.impl())->data<float>(); |
| 81 | PADDLE_ENFORCE_EQ(et5_ptr[0], |
| 82 | 5.0f, |
| 83 | common::errors::InvalidArgument("First element should be " |
| 84 | "5.0f.")); |
| 85 | PADDLE_ENFORCE_EQ(et5_ptr[1], |
| 86 | 10.0f, |
| 87 | common::errors::InvalidArgument("Second element should be " |
| 88 | "10.0f.")); |
| 89 | } |
| 90 |
nothing calls this directly
no test coverage detected