assertSame([1, 3, 5], toIntIds([1, 3, 5, 1, 3])); } public function testDropsNonPositiveValues(): void { $this->assertSame([2, 4], toIntIds([0, -1, 2, -3, 4])); } public function testCoercesNumericStrings(): void { $this->assertSame([1, 2, 3], toIntIds(['1', '2', '3'])); } public function testIgnoresNonNumericStrings(): void { $this->assertSame([7], toIntIds(['abc', '7', ''])); } public function testEmptyArrayReturnsEmpty(): void { $this->assertSame([], toIntIds([])); } public function testNullAndEmptyStringReturnEmpty(): void { $this->assertSame([], toIntIds(null)); $this->assertSame([], toIntIds('')); } public function testScalarIsWrappedAsSingleElement(): void { $this->assertSame([42], toIntIds(42)); $this->assertSame([42], toIntIds('42')); } public function testZeroScalarReturnsEmpty(): void { $this->assertSame([], toIntIds(0)); $this->assertSame([], toIntIds('0')); } }