<?php

declare(strict_types=1);

if (PHP_SAPI !== 'cli') {
    http_response_code(403);
    exit(1);
}

require_once __DIR__ . '/../src/prompts.php';

$cases = [
    'single' => ['value' => '227', 'expected' => ['227']],
    'slash' => ['value' => '227/239', 'expected' => ['227', '239']],
    'slash_with_spaces' => ['value' => '227 / 239', 'expected' => ['227', '239']],
    'duplicates' => ['value' => '227/239/227', 'expected' => ['227', '239']],
    'empty' => ['value' => '', 'expected' => []],
];

$failed = false;
$results = [];
foreach ($cases as $name => $case) {
    $actual = normalizePromptOpenLineIds($case['value']);
    $passed = $actual === $case['expected'];
    $failed = $failed || !$passed;
    $results[$name] = [
        'passed' => $passed,
        'expected' => $case['expected'],
        'actual' => $actual,
    ];
}

$sharedPrompt = ['text' => 'test', 'open_line_ids' => normalizePromptOpenLineIds('227/239')];
$matching = [
    'line_227' => promptMatchesOpenLine($sharedPrompt, '227'),
    'line_239' => promptMatchesOpenLine($sharedPrompt, '239'),
    'line_999' => !promptMatchesOpenLine($sharedPrompt, '999'),
];
foreach ($matching as $passed) {
    $failed = $failed || !$passed;
}

echo json_encode([
    'ok' => !$failed,
    'parsing' => $results,
    'matching' => $matching,
], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT) . PHP_EOL;

exit($failed ? 1 : 0);
