<?php

namespace MintyPHP\Tests\Support\Helpers;

use PHPUnit\Framework\TestCase;

class ToIntIdsTest extends TestCase
{
    public function testDeduplicatesAndPreservesOrder(): void
    {
        $this->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'));
    }
}
