getName()); self::assertSame(AttributeType::Select, $def->getType()); self::assertNull($def->getUnit()); self::assertNull($def->getOptions()); } /** * @dataProvider allAttributeTypes */ public function testSetTypeMutatesType(AttributeType $type): void { $def = new AttributeDefinition('Field', AttributeType::String); $def->setType($type); self::assertSame($type, $def->getType()); } /** @return array */ public static function allAttributeTypes(): array { return array_combine( array_map(fn (AttributeType $t) => $t->value, AttributeType::cases()), array_map(fn (AttributeType $t) => [$t], AttributeType::cases()), ); } public function testSetNameAndUnit(): void { $def = new AttributeDefinition('Weight', AttributeType::Float); $def->setName('Mass'); $def->setUnit('kg'); self::assertSame('Mass', $def->getName()); self::assertSame('kg', $def->getUnit()); } public function testSetOptions(): void { $def = new AttributeDefinition('Grade', AttributeType::Select); $def->setOptions(['A', 'B', 'C']); self::assertSame(['A', 'B', 'C'], $def->getOptions()); } public function testToStringReturnsName(): void { $def = new AttributeDefinition('CPU', AttributeType::String); self::assertSame('CPU', (string) $def); } }