... | ... |
@@ -20,6 +20,15 @@ EOD |
20 | 20 |
sed -ne '/%asma-IF-ERROR/,$p' ../projects/software/asma.usm |
21 | 21 |
} |
22 | 22 |
|
23 |
+expect_failure() { |
|
24 |
+ cat > 'in.usm' |
|
25 |
+ if ../bin/debugger asma.rom > asma.log 2>/dev/null || ! grep -qF "${1}" asma.log; then |
|
26 |
+ echo "error: asma didn't report error ${1} in faulty code" |
|
27 |
+ tail asma.log |
|
28 |
+ exit 1 |
|
29 |
+ fi |
|
30 |
+} |
|
31 |
+ |
|
23 | 32 |
echo 'Assembling asma with uxnasm' |
24 | 33 |
build_asma > asma.usm |
25 | 34 |
../bin/uxnasm asma.usm asma.rom > uxnasm.log |
... | ... |
@@ -44,5 +53,31 @@ find ../projects -type f -name '*.usm' -not -name 'blank.usm' | sort | while rea |
44 | 53 |
|
45 | 54 |
diff -u "uxnasm-${BN}.hex" "asma-${BN}.hex" |
46 | 55 |
done |
56 |
+expect_failure 'Invalid hexadecimal: $defg' <<'EOD' |
|
57 |
+|1000 $defg |
|
58 |
+EOD |
|
59 |
+expect_failure 'Invalid hexadecimal: #defg' <<'EOD' |
|
60 |
+|1000 #defg |
|
61 |
+EOD |
|
62 |
+expect_failure 'Address not in zero page: .hello' <<'EOD' |
|
63 |
+|1000 @hello |
|
64 |
+ .hello |
|
65 |
+EOD |
|
66 |
+expect_failure 'Address outside range: ,hello' <<'EOD' |
|
67 |
+|1000 @hello |
|
68 |
+|2000 ,hello |
|
69 |
+EOD |
|
70 |
+expect_failure 'Label not found: hello' <<'EOD' |
|
71 |
+hello |
|
72 |
+EOD |
|
73 |
+expect_failure 'Macro already exists: %abc' <<'EOD' |
|
74 |
+%abc { def } |
|
75 |
+%abc { ghi } |
|
76 |
+EOD |
|
77 |
+expect_failure 'Memory overwrite: SUB' <<'EOD' |
|
78 |
+|2000 ADD |
|
79 |
+|1000 SUB |
|
80 |
+EOD |
|
81 |
+ |
|
47 | 82 |
echo 'All OK' |
48 | 83 |
|