<?php
declare(strict_types=1);

namespace FreshCloud\Mail\Tests\Sieve;

use PHPUnit\Framework\TestCase;
use FreshCloud\Mail\Sieve\SieveParser;

final class SieveTest extends TestCase
{
    public function testParseSimpleScript(): void
    {
        $parser = new SieveParser();
        $script = "if header :contains \"Subject\" \"SPAM\" {\n    discard;\n}";
        $result = $parser->parse($script, 'spam');

        $this->assertSame($script, $result->raw);
        $this->assertCount(3, $result->rules);
    }

    public function testEmptyScript(): void
    {
        $parser = new SieveParser();
        $result = $parser->parse('', 'empty');

        $this->assertEmpty($result->rules);
    }

    public function testOnlyComments(): void
    {
        $parser = new SieveParser();
        $result = $parser->parse("# comment line\n# another comment", 'comments');

        $this->assertEmpty($result->rules);
    }

    public function testSkipEmptyLines(): void
    {
        $parser = new SieveParser();
        $script = "\n\nif true { keep; }\n\n";
        $result = $parser->parse($script, 'test');

        $this->assertCount(1, $result->rules);
    }
}
