| 19 | // ───────────────────────────────────────────────────────────────── |
| 20 | |
| 21 | TEST(ArrayExpansionTest, FixedSizeArray_Primitive_ProducesNColumns) { |
| 22 | // Schema: struct msg { float32[3] accel } |
| 23 | // Expected: 3 columns named accel[0], accel[1], accel[2] |
| 24 | DataEngine engine; |
| 25 | DatasetId ds = *engine.createDataset(PJ::DatasetDescriptor{.source_name = "t"}); |
| 26 | DataWriter writer = engine.createWriter(); |
| 27 | |
| 28 | auto accel = PJ::makeArray("accel", PJ::makePrimitive("", PJ::PrimitiveType::kFloat32), 3u); |
| 29 | auto root = PJ::makeStruct("msg", {accel}); |
| 30 | auto sid = *writer.registerSchema("msg_fixed", root); |
| 31 | |
| 32 | TopicDescriptor desc; |
| 33 | desc.name = "imu"; |
| 34 | desc.schema_id = sid; |
| 35 | auto topic_id = *writer.registerTopic(ds, desc); |
| 36 | |
| 37 | auto handle = *writer.bindTopicWriter(topic_id); |
| 38 | ASSERT_EQ(handle.field_ids.size(), 3u); |
| 39 | |
| 40 | EXPECT_EQ(*writer.resolveField(topic_id, "accel[0]"), 0u); |
| 41 | EXPECT_EQ(*writer.resolveField(topic_id, "accel[1]"), 1u); |
| 42 | EXPECT_EQ(*writer.resolveField(topic_id, "accel[2]"), 2u); |
| 43 | } |
| 44 | |
| 45 | TEST(ArrayExpansionTest, FixedSizeArray_StructElement_ProducesNxMColumns) { |
| 46 | // Schema: struct msg { Pose[2] poses } where Pose = struct { float32 x, y, z } |
nothing calls this directly
no test coverage detected