PS: Add more tests.

This commit is contained in:
Mathias Vorreiter Pedersen
2024-09-13 13:23:30 +01:00
parent 4343d6b592
commit e12fd07074
4 changed files with 1180 additions and 8 deletions

View File

@@ -1,3 +1,361 @@
conditionals.ps1:
# 1| test-if
#-----| -> test-if-else
# 1| conditionals.ps1
#-----| -> {...}
# 1| enter conditionals.ps1
#-----| -> conditionals.ps1
# 1| exit conditionals.ps1
# 1| exit conditionals.ps1 (normal)
#-----| -> exit conditionals.ps1
# 1| {...}
#-----| -> test-if
# 1| enter {...}
#-----| -> {...}
# 1| {...}
#-----| -> param(...)
# 2| param(...)
#-----| -> {...}
# 2| {...}
#-----| -> if (...) {...}
# 4| if (...) {...}
#-----| -> myBool
# 4| myBool
#-----| -> myBool
# 4| myBool
#-----| true -> {...}
# 4| myBool
#-----| -> myBool
# 5| {...}
# 11| test-if-else
#-----| -> test-if-conj
# 11| enter {...}
#-----| -> {...}
# 11| {...}
#-----| -> param(...)
# 12| param(...)
#-----| -> {...}
# 12| {...}
#-----| -> if (...) {...} else {...}
# 14| if (...) {...} else {...}
#-----| -> myBool
# 14| myBool
#-----| -> myBool
# 14| myBool
#-----| true -> {...}
#-----| false -> {...}
# 14| myBool
#-----| -> myBool
# 15| {...}
# 19| {...}
# 24| test-if-conj
#-----| -> test-if-else-conj
# 24| enter {...}
#-----| -> {...}
# 24| {...}
#-----| -> param(...)
# 25| param(...)
#-----| -> {...}
# 25| {...}
#-----| -> if (...) {...}
# 27| if (...) {...}
#-----| -> ... -and ...
# 27| myBool1
#-----| false, true -> myBool2
# 27| ... -and ...
#-----| -> myBool1
# 27| ... -and ...
#-----| true -> {...}
# 27| ... -and ...
#-----| -> ... -and ...
# 27| myBool2
#-----| false, true -> ... -and ...
# 28| {...}
# 34| test-if-else-conj
#-----| -> test-if-disj
# 34| enter {...}
#-----| -> {...}
# 34| {...}
#-----| -> param(...)
# 35| param(...)
#-----| -> {...}
# 35| {...}
#-----| -> if (...) {...} else {...}
# 37| if (...) {...} else {...}
#-----| -> ... -and ...
# 37| myBool1
#-----| false, true -> myBool2
# 37| ... -and ...
#-----| -> myBool1
# 37| ... -and ...
#-----| true -> {...}
#-----| false -> {...}
# 37| ... -and ...
#-----| -> ... -and ...
# 37| myBool2
#-----| false, true -> ... -and ...
# 38| {...}
# 42| {...}
# 47| test-if-disj
#-----| -> test-if-else-disj
# 47| enter {...}
#-----| -> {...}
# 47| {...}
#-----| -> param(...)
# 48| param(...)
#-----| -> {...}
# 48| {...}
#-----| -> if (...) {...}
# 50| if (...) {...}
#-----| -> ... -or ...
# 50| myBool1
#-----| false, true -> myBool2
# 50| ... -or ...
#-----| -> myBool1
# 50| ... -or ...
#-----| true -> {...}
# 50| ... -or ...
#-----| -> ... -or ...
# 50| myBool2
#-----| false, true -> ... -or ...
# 51| {...}
# 57| test-if-else-disj
#-----| -> test-else-if
# 57| enter {...}
#-----| -> {...}
# 57| {...}
#-----| -> param(...)
# 58| param(...)
#-----| -> {...}
# 58| {...}
#-----| -> if (...) {...} else {...}
# 60| if (...) {...} else {...}
#-----| -> ... -or ...
# 60| myBool1
#-----| false, true -> myBool2
# 60| ... -or ...
#-----| -> myBool1
# 60| ... -or ...
#-----| true -> {...}
#-----| false -> {...}
# 60| ... -or ...
#-----| -> ... -or ...
# 60| myBool2
#-----| false, true -> ... -or ...
# 61| {...}
# 65| {...}
# 70| test-else-if
#-----| -> test-else-if-else
# 70| enter {...}
#-----| -> {...}
# 70| {...}
#-----| -> param(...)
# 71| param(...)
#-----| -> {...}
# 71| {...}
#-----| -> if (...) {...}
# 73| if (...) {...}
#-----| -> myBool1
# 73| myBool1
#-----| -> myBool1
# 73| myBool1
#-----| true -> {...}
# 73| myBool1
#-----| -> myBool1
# 74| {...}
# 84| test-else-if-else
#-----| -> test-switch
# 84| enter {...}
#-----| -> {...}
# 84| {...}
#-----| -> param(...)
# 85| param(...)
#-----| -> {...}
# 85| {...}
#-----| -> if (...) {...} else {...}
# 87| if (...) {...} else {...}
#-----| -> myBool1
# 87| myBool1
#-----| -> myBool1
# 87| myBool1
#-----| true -> {...}
#-----| false -> {...}
# 87| myBool1
#-----| -> myBool1
# 88| {...}
# 96| {...}
# 101| test-switch
#-----| -> test-switch-default
# 101| enter {...}
#-----| -> {...}
# 101| {...}
#-----| -> {...}
# 102| switch(...) {...}
#-----| -> n
# 102| {...}
#-----| -> switch(...) {...}
# 102| n
#-----| -> n
# 102| n
# 102| n
#-----| -> n
# 110| test-switch-default
#-----| -> test-switch-assign
# 110| enter {...}
#-----| -> {...}
# 110| {...}
#-----| -> {...}
# 111| switch(...) {...}
#-----| -> n
# 111| {...}
#-----| -> switch(...) {...}
# 111| n
#-----| -> n
# 111| n
# 111| n
#-----| -> n
# 123| test-switch-assign
#-----| -> exit conditionals.ps1 (normal)
# 123| enter {...}
#-----| -> {...}
# 123| {...}
#-----| -> {...}
# 124| a
#-----| -> switch(...) {...}
# 124| ...=...
#-----| -> a
# 124| {...}
#-----| -> ...=...
# 124| switch(...) {...}
#-----| -> n
# 124| n
#-----| -> n
# 124| n
# 124| n
#-----| -> n
functions.ps1:
# 1| Add-Numbers-Arguments
#-----| -> foo
@@ -311,6 +669,9 @@ loops.ps1:
# 1| Test-While
#-----| -> Test-Break
# 1| {...}
#-----| -> Test-While
# 1| enter loops.ps1
#-----| -> loops.ps1
@@ -322,9 +683,6 @@ loops.ps1:
# 1| loops.ps1
#-----| -> {...}
# 1| {...}
#-----| -> Test-While
# 1| enter {...}
#-----| -> {...}
@@ -569,7 +927,7 @@ loops.ps1:
#-----| -> ... -le ...
# 33| Test-DoUntil
#-----| -> Tet-For
#-----| -> Test-For
# 33| enter {...}
#-----| -> {...}
@@ -637,7 +995,7 @@ loops.ps1:
# 38| 10
#-----| -> ... -ge ...
# 41| Tet-For
# 41| Test-For
#-----| -> Test-ForEach
# 41| enter {...}
@@ -707,6 +1065,7 @@ loops.ps1:
#-----| -> 1
# 44| ...+...
#-----| -> ... -le ...
# 44| ...+...
#-----| -> i
@@ -736,7 +1095,7 @@ loops.ps1:
#-----| -> ...+...
# 49| Test-ForEach
#-----| -> exit loops.ps1 (normal)
#-----| -> Test-For-Ever
# 49| enter {...}
#-----| -> {...}
@@ -754,3 +1113,480 @@ loops.ps1:
#-----| -> ...=...
# 50| ...,...
# 58| Test-For-Ever
#-----| -> exit loops.ps1 (normal)
# 58| enter {...}
#-----| -> {...}
# 58| {...}
#-----| -> {...}
# 59| a
#-----| -> 0
# 59| ...=...
#-----| -> a
# 59| {...}
#-----| -> ...=...
# 59| 0
#-----| -> for(...;...;...)
# 59| 0
#-----| -> 0
# 61| for(...;...;...)
try.ps1:
# 1| test-try-catch
#-----| -> test-try-with-throw-catch
# 1| enter try.ps1
#-----| -> try.ps1
# 1| exit try.ps1
# 1| exit try.ps1 (normal)
#-----| -> exit try.ps1
# 1| try.ps1
#-----| -> {...}
# 1| {...}
#-----| -> test-try-catch
# 1| enter {...}
#-----| -> {...}
# 1| {...}
#-----| -> {...}
# 2| try {...}
#-----| -> {...}
# 2| {...}
#-----| -> try {...}
# 2| {...}
#-----| -> Write-Output
# 3| Write-Output
# 10| test-try-with-throw-catch
#-----| -> test-try-with-throw-catch-with-throw
# 10| enter {...}
#-----| -> {...}
# 10| {...}
#-----| -> {...}
# 11| try {...}
#-----| -> {...}
# 11| {...}
#-----| -> try {...}
# 11| {...}
#-----| -> if (...) {...}
# 12| if (...) {...}
#-----| -> b
# 12| b
#-----| -> b
# 12| b
#-----| true -> {...}
# 12| b
#-----| -> b
# 12| {...}
#-----| -> throw ...
# 13| throw ...
#-----| -> 42
# 13| 42
#-----| -> 42
# 13| 42
# 13| 42
#-----| -> 42
# 21| test-try-with-throw-catch-with-throw
#-----| -> test-try-with-throw-catch-with-rethrow
# 21| enter {...}
#-----| -> {...}
# 21| {...}
#-----| -> {...}
# 22| try {...}
#-----| -> {...}
# 22| {...}
#-----| -> try {...}
# 22| {...}
#-----| -> if (...) {...}
# 23| if (...) {...}
#-----| -> b
# 23| b
#-----| -> b
# 23| b
#-----| true -> {...}
# 23| b
#-----| -> b
# 23| {...}
#-----| -> throw ...
# 24| throw ...
#-----| -> 42
# 24| 42
#-----| -> 42
# 24| 42
# 24| 42
#-----| -> 42
# 32| test-try-with-throw-catch-with-rethrow
#-----| -> test-try-catch-specific-1
# 32| enter {...}
#-----| -> {...}
# 32| {...}
#-----| -> {...}
# 33| try {...}
#-----| -> {...}
# 33| {...}
#-----| -> try {...}
# 33| {...}
#-----| -> if (...) {...}
# 34| if (...) {...}
#-----| -> b
# 34| b
#-----| -> b
# 34| b
#-----| true -> {...}
# 34| b
#-----| -> b
# 34| {...}
#-----| -> throw ...
# 35| throw ...
#-----| -> 42
# 35| 42
#-----| -> 42
# 35| 42
# 35| 42
#-----| -> 42
# 43| test-try-catch-specific-1
#-----| -> test-try-catch-specific-1
# 43| enter {...}
#-----| -> {...}
# 43| {...}
#-----| -> {...}
# 44| try {...}
#-----| -> {...}
# 44| {...}
#-----| -> try {...}
# 44| {...}
#-----| -> Write-Output
# 45| Write-Output
# 52| test-try-catch-specific-1
#-----| -> test-try-two-catch-specific-1
# 52| enter {...}
#-----| -> {...}
# 52| {...}
#-----| -> {...}
# 53| try {...}
#-----| -> {...}
# 53| {...}
#-----| -> try {...}
# 53| {...}
#-----| -> Write-Output
# 54| Write-Output
# 61| test-try-two-catch-specific-1
#-----| -> test-try-catch-specific-2
# 61| enter {...}
#-----| -> {...}
# 61| {...}
#-----| -> {...}
# 62| try {...}
#-----| -> {...}
# 62| {...}
#-----| -> try {...}
# 62| {...}
#-----| -> Write-Output
# 63| Write-Output
# 72| test-try-catch-specific-2
#-----| -> test-try-two-catch-specific-2
# 72| enter {...}
#-----| -> {...}
# 72| {...}
#-----| -> {...}
# 73| try {...}
#-----| -> {...}
# 73| {...}
#-----| -> try {...}
# 73| {...}
#-----| -> Write-Output
# 74| Write-Output
# 81| test-try-two-catch-specific-2
#-----| -> test-try-three-catch-specific-2
# 81| enter {...}
#-----| -> {...}
# 81| {...}
#-----| -> {...}
# 82| try {...}
#-----| -> {...}
# 82| {...}
#-----| -> try {...}
# 82| {...}
#-----| -> Write-Output
# 83| Write-Output
# 92| test-try-three-catch-specific-2
#-----| -> test-try-catch-finally
# 92| enter {...}
#-----| -> {...}
# 92| {...}
#-----| -> {...}
# 93| try {...}
#-----| -> {...}
# 93| {...}
#-----| -> try {...}
# 93| {...}
#-----| -> Write-Output
# 94| Write-Output
# 105| test-try-catch-finally
#-----| -> test-try-finally
# 105| enter {...}
#-----| -> {...}
# 105| {...}
#-----| -> {...}
# 106| try {...}
#-----| -> {...}
# 106| {...}
#-----| -> try {...}
# 106| {...}
#-----| -> Write-Output
# 107| Write-Output
# 116| test-try-finally
#-----| -> test-try-finally-catch-specific-1
# 116| enter {...}
#-----| -> {...}
# 116| {...}
#-----| -> {...}
# 117| try {...}
#-----| -> {...}
# 117| {...}
#-----| -> try {...}
# 117| {...}
#-----| -> Write-Output
# 118| Write-Output
# 125| test-try-finally-catch-specific-1
#-----| -> test-nested-try-inner-finally
# 125| enter {...}
#-----| -> {...}
# 125| {...}
#-----| -> {...}
# 126| try {...}
#-----| -> {...}
# 126| {...}
#-----| -> try {...}
# 126| {...}
#-----| -> Write-Output
# 127| Write-Output
# 136| test-nested-try-inner-finally
#-----| -> test-nested-try-inner-finally
# 136| enter {...}
#-----| -> {...}
# 136| {...}
#-----| -> {...}
# 137| try {...}
#-----| -> {...}
# 137| {...}
#-----| -> try {...}
# 137| {...}
#-----| -> try {...}
# 138| try {...}
#-----| -> {...}
# 138| {...}
#-----| -> Write-Output
# 139| Write-Output
# 149| test-nested-try-inner-finally
#-----| -> test-nested-try-outer-finally
# 149| enter {...}
#-----| -> {...}
# 149| {...}
#-----| -> {...}
# 150| try {...}
#-----| -> {...}
# 150| {...}
#-----| -> try {...}
# 150| {...}
#-----| -> try {...}
# 151| try {...}
#-----| -> {...}
# 151| {...}
#-----| -> Write-Output
# 152| Write-Output
# 164| test-nested-try-outer-finally
#-----| -> test-nested-try-inner-outer-finally
# 164| enter {...}
#-----| -> {...}
# 164| {...}
#-----| -> {...}
# 165| try {...}
#-----| -> {...}
# 165| {...}
#-----| -> try {...}
# 165| {...}
#-----| -> try {...}
# 166| try {...}
#-----| -> {...}
# 166| {...}
#-----| -> Write-Output
# 167| Write-Output
# 179| test-nested-try-inner-outer-finally
#-----| -> exit try.ps1 (normal)
# 179| enter {...}
#-----| -> {...}
# 179| {...}
#-----| -> {...}
# 180| try {...}
#-----| -> {...}
# 180| {...}
#-----| -> try {...}
# 180| {...}
#-----| -> try {...}
# 181| try {...}
#-----| -> {...}
# 181| {...}
#-----| -> Write-Output
# 182| Write-Output

View File

@@ -0,0 +1,129 @@
function test-if {
param($myBool)
if($myBool)
{
return 10;
}
return 11;
}
function test-if-else {
param($myBool)
if($myBool)
{
return 10;
}
else
{
return 11;
}
}
function test-if-conj {
param($myBool1, $myBool2)
if($myBool1 -and $myBool2)
{
return 10;
}
return 11;
}
function test-if-else-conj {
param($myBool1, $myBool2)
if($myBool1 -and $myBool2)
{
return 10;
}
else
{
return 11;
}
}
function test-if-disj {
param($myBool1, $myBool2)
if($myBool1 -or $myBool2)
{
return 10;
}
return 11;
}
function test-if-else-disj {
param($myBool1, $myBool2)
if($myBool1 -or $myBool2)
{
return 10;
}
else
{
return 11;
}
}
function test-else-if {
param($myBool1, $myBool2)
if($myBool1)
{
return 10;
}
elseif($myBoo2)
{
return 11;
}
return 12;
}
function test-else-if-else {
param($myBool1, $myBool2)
if($myBool1)
{
return 10;
}
elseif($myBoo2)
{
return 11;
}
else
{
return 12;
}
}
function test-switch($n) {
switch($n)
{
0: { return 0; }
1: { return 1; }
2: { return 2; }
}
}
function test-switch-default($n) {
switch($n)
{
0: { return 0; }
1: { return 1; }
2: { return 2; }
default: {
Write-Output "Error!"
return 3;
}
}
}
function test-switch-assign($n) {
$a = switch($n) {
0: { "0" }
1: { "1" }
2: { "2" }
}
}

View File

@@ -38,7 +38,7 @@ function Test-DoUntil {
} until ($a -ge 10)
}
function Tet-For {
function Test-For {
$a = 0
for ($i = 0; $i -le 10; $i = $i + 1) {
@@ -53,4 +53,17 @@ function Test-ForEach {
{
$a = $a + 1
}
}
}
function Test-For-Ever {
$a = 0
for(;;)
{
if($a -le 10)
{
break;
}
}
}

View File

@@ -0,0 +1,194 @@
function test-try-catch {
try {
Write-Output "Hello!";
} catch {
return 0;
}
return 1;
}
function test-try-with-throw-catch($b) {
try {
if($b) {
throw 42;
}
} catch {
return 0;
}
return 1;
}
function test-try-with-throw-catch-with-throw($b) {
try {
if($b) {
throw 42;
}
} catch {
throw "";
}
return 1;
}
function test-try-with-throw-catch-with-rethrow($b) {
try {
if($b) {
throw 42;
}
} catch {
throw;
}
return 1;
}
function test-try-catch-specific-1 {
try {
Write-Output "Hello!";
} catch [System.Net.WebException] {
return 0;
}
return 1;
}
function test-try-catch-specific-1 {
try {
Write-Output "Hello!";
} catch [System.Net.WebException] {
return 0;
}
return 1;
}
function test-try-two-catch-specific-1 {
try {
Write-Output "Hello!";
} catch [System.Net.WebException] {
return 0;
} catch {
return 1;
}
return 2;
}
function test-try-catch-specific-2 {
try {
Write-Output "Hello!";
} catch [System.Net.WebException, SystemMmanagement.Automation.MethodInvocationeEception] {
return 0;
}
return 1;
}
function test-try-two-catch-specific-2 {
try {
Write-Output "Hello!";
} catch [System.Net.WebException, SystemMmanagement.Automation.MethodInvocationeEception] {
return 0;
} catch [Exception] {
return 1;
}
return 2;
}
function test-try-three-catch-specific-2 {
try {
Write-Output "Hello!";
} catch [System.Net.WebException, SystemMmanagement.Automation.MethodInvocationeEception] {
return 0;
} catch [Exception] {
return 1;
} catch {
return 2;
}
return 3;
}
function test-try-catch-finally {
try {
Write-Output "Hello!";
} catch {
return 0;
} finally {
Write-Output "Finally!";
}
return 1;
}
function test-try-finally {
try {
Write-Output "Hello!";
} finally {
Write-Output "Finally!";
}
return 1;
}
function test-try-finally-catch-specific-1 {
try {
Write-Output "Hello!";
} catch [System.Net.WebException] {
return 0;
} finally {
Write-Output "Finally!";
}
return 1;
}
function test-nested-try-inner-finally {
try {
try {
Write-Output "Hello!";
} catch [System.Net.WebException] {
return 0;
}
} catch {
return 0;
}
return 1;
}
function test-nested-try-inner-finally {
try {
try {
Write-Output "Hello!";
} catch [System.Net.WebException] {
return 0;
} finally {
Write-Output "Finally!";
}
} catch {
return 0;
}
return 1;
}
function test-nested-try-outer-finally {
try {
try {
Write-Output "Hello!";
} catch [System.Net.WebException] {
return 0;
}
} catch {
return 0;
} finally {
Write-Output "Finally!";
}
return 1;
}
function test-nested-try-inner-outer-finally {
try {
try {
Write-Output "Hello!";
} catch [System.Net.WebException] {
return 0;
} finally {
Write-Output "Finally!";
}
} catch {
return 0;
} finally {
Write-Output "Finally!";
}
return 1;
}