24 lines
1.2 KiB
PowerShell
24 lines
1.2 KiB
PowerShell
|
|
Param()
|
||
|
|
$ErrorActionPreference = 'Stop'
|
||
|
|
|
||
|
|
$root = Split-Path -Parent (Split-Path -Parent $MyInvocation.MyCommand.Path)
|
||
|
|
$bin = Join-Path $root 'target\release\nyash.exe'
|
||
|
|
$nyParser = Join-Path $root 'tools\ny_parser_run.ps1'
|
||
|
|
|
||
|
|
if (-not (Test-Path $bin)) {
|
||
|
|
Write-Host 'Building nyash (release)...'
|
||
|
|
cargo build --release --features cranelift-jit | Out-Null
|
||
|
|
}
|
||
|
|
|
||
|
|
Write-Host '[Roundtrip] Case A: Ny → JSON(v0) → MIR-Interp (pipe)'
|
||
|
|
$pipeOut = "return (1+2)*3`n" | & $nyParser | & $bin --ny-parser-pipe
|
||
|
|
if ($pipeOut -match '^Result:\s*9\b') { Write-Host 'PASS: Case A (pipe)' } else { Write-Host 'FAIL: Case A (pipe)'; Write-Output $pipeOut; exit 1 }
|
||
|
|
|
||
|
|
Write-Host '[Roundtrip] Case B: JSON(v0) file → MIR-Interp'
|
||
|
|
$tmp = New-TemporaryFile
|
||
|
|
@'{"version":0,"kind":"Program","body":[{"type":"Return","expr":{"type":"Binary","op":"+","lhs":{"type":"Int","value":1},"rhs":{"type":"Binary","op":"*","lhs":{"type":"Int","value":2},"rhs":{"type":"Int","value":3}}}}]}'@ | Set-Content -Path $tmp -NoNewline
|
||
|
|
$fileOut = & $bin --json-file $tmp
|
||
|
|
if ($fileOut -match '^Result:\s*7\b') { Write-Host 'PASS: Case B (json-file)' } else { Write-Host 'FAIL: Case B (json-file)'; Write-Output $fileOut; exit 1 }
|
||
|
|
|
||
|
|
Write-Host 'All PASS'
|