From ebd1a2e695ad423685465bc48e4a77135b2a60de Mon Sep 17 00:00:00 2001 From: David Brown Date: Sat, 8 Oct 2016 17:30:44 +0100 Subject: [PATCH] Add tests for Out.Real, Out.LongReal. --- makefile | 2 +- src/test/confidence/out/expected | 190 ++++++++++++++++++++++++++++ src/test/confidence/out/outtest.mod | 119 +++++++++++++++++ src/test/confidence/out/result-O2 | 93 ++++++++++++++ src/test/confidence/out/result-OC | 93 ++++++++++++++ src/test/confidence/out/test.sh | 15 +++ src/tools/make/oberon.mk | 1 + 7 files changed, 512 insertions(+), 1 deletion(-) create mode 100644 src/test/confidence/out/expected create mode 100644 src/test/confidence/out/outtest.mod create mode 100644 src/test/confidence/out/result-O2 create mode 100644 src/test/confidence/out/result-OC create mode 100644 src/test/confidence/out/test.sh diff --git a/makefile b/makefile index 82c50d44..b8323eea 100644 --- a/makefile +++ b/makefile @@ -239,7 +239,7 @@ uninstall: configuration # confidence: Run a set of confidence tests confidence: configuration - @make -f src/tools/make/oberon.mk -s confidence + @make -f src/tools/make/oberon.mk -s confidence MODEL=2 planned-binary-change: @date >src/test/confidence/planned-binary-change diff --git a/src/test/confidence/out/expected b/src/test/confidence/out/expected new file mode 100644 index 00000000..5343a884 --- /dev/null +++ b/src/test/confidence/out/expected @@ -0,0 +1,190 @@ +--- Testing with Oberon 2 variable model --- +Out module tests. +SIZE(INTEGER) = 2 + +Testing LONGREAL. + + 1 2 3 + 123456789012345678901234567890 + 1.0D0: 1.0D+000 + 1.1D0: 1.1D+000 + 2.1D0: 2.1D+000 +-1.1D0: -1.1D+000 + 1.1D3: 1.1D+003 + 1.1D-3: 1.1D-003 + 1.2345678987654321D3: 1.23456789876543D+003 + 0.0: 0.0D+000 + 0.000123D0: 1.23D-004 + 1/0.0: Infinity +-1/0.0: -Infinity + + 1 2 3 + 123456789012345678901234567890 + 1.0D0: 1.00000D+000 + 1.1D0: 1.10000D+000 + 2.1D0: 2.10000D+000 +-1.1D0: -1.1000D+000 + 1.1D3: 1.10000D+003 + 1.1D-3: 1.10000D-003 + 1.2345678987654321D3: 1.23456789876543D+003 + 0.0: 0.00000D+000 + 0.000123D0: 1.23000D-004 + 1/0.0: Infinity +-1/0.0: -Infinity + + 1 2 3 + 123456789012345678901234567890 + 1.0D0: 1.000000000000000D+000 + 1.1D0: 1.100000000000000D+000 + 2.1D0: 2.100000000000000D+000 +-1.1D0: -1.100000000000000D+000 + 1.1D3: 1.100000000000000D+003 + 1.1D-3: 1.100000000000000D-003 + 1.2345678987654321D3: 1.234567898765430D+003 + 0.0: 0.000000000000000D+000 + 0.000123D0: 1.230000000000000D-004 + 1/0.0: Infinity +-1/0.0: -Infinity + + + +Testing REAL. + + 1 2 3 + 123456789012345678901234567890 + 1.0E0: 1.0E+00 + 1.1E0: 1.1E+00 + 2.1E0: 2.1E+00 +-1.1E0: -1.1E+00 + 1.1E3: 1.1E+03 + 1.1E-3: 1.1E-03 + 1.2345678987654321E3: 1.234568E+03 + 0.0: 0.0E+00 + 0.000123E0: 1.23E-04 + 1/0.0: Infinity +-1/0.0: -Infinity + + 1 2 3 + 123456789012345678901234567890 + 1.0E0: 1.000000E+00 + 1.1E0: 1.100000E+00 + 2.1E0: 2.100000E+00 +-1.1E0: -1.10000E+00 + 1.1E3: 1.100000E+03 + 1.1E-3: 1.100000E-03 + 1.2345678987654321E3: 1.234568E+03 + 0.0: 0.000000E+00 + 0.000123E0: 1.230000E-04 + 1/0.0: Infinity +-1/0.0: -Infinity + + 1 2 3 + 123456789012345678901234567890 + 1.0E0: 1.0000000E+00 + 1.1E0: 1.1000000E+00 + 2.1E0: 2.1000000E+00 +-1.1E0: -1.1000000E+00 + 1.1E3: 1.1000000E+03 + 1.1E-3: 1.1000000E-03 + 1.2345678987654321E3: 1.2345680E+03 + 0.0: 0.0000000E+00 + 0.000123E0: 1.2300000E-04 + 1/0.0: Infinity +-1/0.0: -Infinity + + + +--- Testing with Component Pascal variable model --- +Out module tests. +SIZE(INTEGER) = 4 + +Testing LONGREAL. + + 1 2 3 + 123456789012345678901234567890 + 1.0D0: 1.0D+000 + 1.1D0: 1.1D+000 + 2.1D0: 2.1D+000 +-1.1D0: -1.1D+000 + 1.1D3: 1.1D+003 + 1.1D-3: 1.1D-003 + 1.2345678987654321D3: 1.23456789876543D+003 + 0.0: 0.0D+000 + 0.000123D0: 1.23D-004 + 1/0.0: Infinity +-1/0.0: -Infinity + + 1 2 3 + 123456789012345678901234567890 + 1.0D0: 1.00000D+000 + 1.1D0: 1.10000D+000 + 2.1D0: 2.10000D+000 +-1.1D0: -1.1000D+000 + 1.1D3: 1.10000D+003 + 1.1D-3: 1.10000D-003 + 1.2345678987654321D3: 1.23456789876543D+003 + 0.0: 0.00000D+000 + 0.000123D0: 1.23000D-004 + 1/0.0: Infinity +-1/0.0: -Infinity + + 1 2 3 + 123456789012345678901234567890 + 1.0D0: 1.000000000000000D+000 + 1.1D0: 1.100000000000000D+000 + 2.1D0: 2.100000000000000D+000 +-1.1D0: -1.100000000000000D+000 + 1.1D3: 1.100000000000000D+003 + 1.1D-3: 1.100000000000000D-003 + 1.2345678987654321D3: 1.234567898765430D+003 + 0.0: 0.000000000000000D+000 + 0.000123D0: 1.230000000000000D-004 + 1/0.0: Infinity +-1/0.0: -Infinity + + + +Testing REAL. + + 1 2 3 + 123456789012345678901234567890 + 1.0E0: 1.0E+00 + 1.1E0: 1.1E+00 + 2.1E0: 2.1E+00 +-1.1E0: -1.1E+00 + 1.1E3: 1.1E+03 + 1.1E-3: 1.1E-03 + 1.2345678987654321E3: 1.234568E+03 + 0.0: 0.0E+00 + 0.000123E0: 1.23E-04 + 1/0.0: Infinity +-1/0.0: -Infinity + + 1 2 3 + 123456789012345678901234567890 + 1.0E0: 1.000000E+00 + 1.1E0: 1.100000E+00 + 2.1E0: 2.100000E+00 +-1.1E0: -1.10000E+00 + 1.1E3: 1.100000E+03 + 1.1E-3: 1.100000E-03 + 1.2345678987654321E3: 1.234568E+03 + 0.0: 0.000000E+00 + 0.000123E0: 1.230000E-04 + 1/0.0: Infinity +-1/0.0: -Infinity + + 1 2 3 + 123456789012345678901234567890 + 1.0E0: 1.0000000E+00 + 1.1E0: 1.1000000E+00 + 2.1E0: 2.1000000E+00 +-1.1E0: -1.1000000E+00 + 1.1E3: 1.1000000E+03 + 1.1E-3: 1.1000000E-03 + 1.2345678987654321E3: 1.2345680E+03 + 0.0: 0.0000000E+00 + 0.000123E0: 1.2300000E-04 + 1/0.0: Infinity +-1/0.0: -Infinity + diff --git a/src/test/confidence/out/outtest.mod b/src/test/confidence/out/outtest.mod new file mode 100644 index 00000000..b2a00669 --- /dev/null +++ b/src/test/confidence/out/outtest.mod @@ -0,0 +1,119 @@ +MODULE outtest; + +IMPORT Out; + +VAR + r: REAL; + lr: LONGREAL; + +PROCEDURE ws(s: ARRAY OF CHAR); BEGIN Out.String(s) END ws; +PROCEDURE wi(i: HUGEINT); BEGIN Out.Int(i,1) END wi; +PROCEDURE wl; BEGIN Out.Ln END wl; + + +BEGIN + ws("Out module tests."); wl; + ws("SIZE(INTEGER) = "); wi(SIZE(INTEGER)); wl; wl; + + ws("Testing LONGREAL."); wl; wl; + ws(" 1 2 3"); wl; + ws(" 123456789012345678901234567890"); wl; + ws(" 1.0D0: "); Out.LongReal( 1.0D0, 1); wl; + ws(" 1.1D0: "); Out.LongReal( 1.1D0, 1); wl; + ws(" 2.1D0: "); Out.LongReal( 2.1D0, 1); wl; + ws("-1.1D0: "); Out.LongReal(-1.1D0, 1); wl; + ws(" 1.1D3: "); Out.LongReal( 1.1D3, 1); wl; + ws(" 1.1D-3: "); Out.LongReal( 1.1D-3, 1); wl; + ws(" 1.2345678987654321D3: "); Out.LongReal( 1.2345678987654321D3, 1); wl; + ws(" 0.0: "); Out.LongReal(0.0, 1); wl; + ws(" 0.000123D0: "); Out.LongReal(0.000123D0, 1); wl; + lr := 0.0; lr := 1/lr; + ws(" 1/0.0: "); Out.LongReal(lr, 1); wl; + lr := 0.0; lr := -1/lr; + ws("-1/0.0: "); Out.LongReal(lr, 1); wl; + wl; + ws(" 1 2 3"); wl; + ws(" 123456789012345678901234567890"); wl; + ws(" 1.0D0: "); Out.LongReal( 1.0D0, 12); wl; + ws(" 1.1D0: "); Out.LongReal( 1.1D0, 12); wl; + ws(" 2.1D0: "); Out.LongReal( 2.1D0, 12); wl; + ws("-1.1D0: "); Out.LongReal(-1.1D0, 12); wl; + ws(" 1.1D3: "); Out.LongReal( 1.1D3, 12); wl; + ws(" 1.1D-3: "); Out.LongReal( 1.1D-3, 12); wl; + ws(" 1.2345678987654321D3: "); Out.LongReal( 1.2345678987654321D3, 12); wl; + ws(" 0.0: "); Out.LongReal(0.0, 12); wl; + ws(" 0.000123D0: "); Out.LongReal(0.000123D0, 12); wl; + lr := 0.0; lr := 1/lr; + ws(" 1/0.0: "); Out.LongReal(lr, 12); wl; + lr := 0.0; lr := -1/lr; + ws("-1/0.0: "); Out.LongReal(lr, 12); wl; + wl; + ws(" 1 2 3"); wl; + ws(" 123456789012345678901234567890"); wl; + ws(" 1.0D0: "); Out.LongReal( 1.0D0, 30); wl; + ws(" 1.1D0: "); Out.LongReal( 1.1D0, 30); wl; + ws(" 2.1D0: "); Out.LongReal( 2.1D0, 30); wl; + ws("-1.1D0: "); Out.LongReal(-1.1D0, 30); wl; + ws(" 1.1D3: "); Out.LongReal( 1.1D3, 30); wl; + ws(" 1.1D-3: "); Out.LongReal( 1.1D-3, 30); wl; + ws(" 1.2345678987654321D3: "); Out.LongReal( 1.2345678987654321D3, 30); wl; + ws(" 0.0: "); Out.LongReal(0.0, 30); wl; + ws(" 0.000123D0: "); Out.LongReal(0.000123D0, 30); wl; + lr := 0.0; lr := 1/lr; + ws(" 1/0.0: "); Out.LongReal(lr, 30); wl; + lr := 0.0; lr := -1/lr; + ws("-1/0.0: "); Out.LongReal(lr, 30); wl; + wl; wl; wl; + + + ws("Testing REAL."); wl; wl; + ws(" 1 2 3"); wl; + ws(" 123456789012345678901234567890"); wl; + ws(" 1.0E0: "); Out.Real( 1.0E0, 1); wl; + ws(" 1.1E0: "); Out.Real( 1.1E0, 1); wl; + ws(" 2.1E0: "); Out.Real( 2.1E0, 1); wl; + ws("-1.1E0: "); Out.Real(-1.1E0, 1); wl; + ws(" 1.1E3: "); Out.Real( 1.1E3, 1); wl; + ws(" 1.1E-3: "); Out.Real( 1.1E-3, 1); wl; + ws(" 1.2345678987654321E3: "); Out.Real( 1.2345678987654321E3, 1); wl; + ws(" 0.0: "); Out.Real(0.0, 1); wl; + ws(" 0.000123E0: "); Out.Real(0.000123E0, 1); wl; + r := 0.0; r := 1/r; + ws(" 1/0.0: "); Out.Real(r, 1); wl; + r := 0.0; r := -1/r; + ws("-1/0.0: "); Out.Real(r, 1); wl; + wl; + ws(" 1 2 3"); wl; + ws(" 123456789012345678901234567890"); wl; + ws(" 1.0E0: "); Out.Real( 1.0E0, 12); wl; + ws(" 1.1E0: "); Out.Real( 1.1E0, 12); wl; + ws(" 2.1E0: "); Out.Real( 2.1E0, 12); wl; + ws("-1.1E0: "); Out.Real(-1.1E0, 12); wl; + ws(" 1.1E3: "); Out.Real( 1.1E3, 12); wl; + ws(" 1.1E-3: "); Out.Real( 1.1E-3, 12); wl; + ws(" 1.2345678987654321E3: "); Out.Real( 1.2345678987654321E3, 12); wl; + ws(" 0.0: "); Out.Real(0.0, 12); wl; + ws(" 0.000123E0: "); Out.Real(0.000123E0, 12); wl; + r := 0.0; r := 1/r; + ws(" 1/0.0: "); Out.Real(r, 12); wl; + r := 0.0; r := -1/r; + ws("-1/0.0: "); Out.Real(r, 12); wl; + wl; + ws(" 1 2 3"); wl; + ws(" 123456789012345678901234567890"); wl; + ws(" 1.0E0: "); Out.Real( 1.0E0, 30); wl; + ws(" 1.1E0: "); Out.Real( 1.1E0, 30); wl; + ws(" 2.1E0: "); Out.Real( 2.1E0, 30); wl; + ws("-1.1E0: "); Out.Real(-1.1E0, 30); wl; + ws(" 1.1E3: "); Out.Real( 1.1E3, 30); wl; + ws(" 1.1E-3: "); Out.Real( 1.1E-3, 30); wl; + ws(" 1.2345678987654321E3: "); Out.Real( 1.2345678987654321E3, 30); wl; + ws(" 0.0: "); Out.Real(0.0, 30); wl; + ws(" 0.000123E0: "); Out.Real(0.000123E0, 30); wl; + r := 0.0; r := 1/r; + ws(" 1/0.0: "); Out.Real(r, 30); wl; + r := 0.0; r := -1/r; + ws("-1/0.0: "); Out.Real(r, 30); wl; + wl; + +END outtest. diff --git a/src/test/confidence/out/result-O2 b/src/test/confidence/out/result-O2 new file mode 100644 index 00000000..1121e4ae --- /dev/null +++ b/src/test/confidence/out/result-O2 @@ -0,0 +1,93 @@ +Out module tests. +SIZE(INTEGER) = 2 + +Testing LONGREAL. + + 1 2 3 + 123456789012345678901234567890 + 1.0D0: 1.0D+000 + 1.1D0: 1.1D+000 + 2.1D0: 2.1D+000 +-1.1D0: -1.1D+000 + 1.1D3: 1.1D+003 + 1.1D-3: 1.1D-003 + 1.2345678987654321D3: 1.23456789876543D+003 + 0.0: 0.0D+000 + 0.000123D0: 1.23D-004 + 1/0.0: Infinity +-1/0.0: -Infinity + + 1 2 3 + 123456789012345678901234567890 + 1.0D0: 1.00000D+000 + 1.1D0: 1.10000D+000 + 2.1D0: 2.10000D+000 +-1.1D0: -1.1000D+000 + 1.1D3: 1.10000D+003 + 1.1D-3: 1.10000D-003 + 1.2345678987654321D3: 1.23456789876543D+003 + 0.0: 0.00000D+000 + 0.000123D0: 1.23000D-004 + 1/0.0: Infinity +-1/0.0: -Infinity + + 1 2 3 + 123456789012345678901234567890 + 1.0D0: 1.000000000000000D+000 + 1.1D0: 1.100000000000000D+000 + 2.1D0: 2.100000000000000D+000 +-1.1D0: -1.100000000000000D+000 + 1.1D3: 1.100000000000000D+003 + 1.1D-3: 1.100000000000000D-003 + 1.2345678987654321D3: 1.234567898765430D+003 + 0.0: 0.000000000000000D+000 + 0.000123D0: 1.230000000000000D-004 + 1/0.0: Infinity +-1/0.0: -Infinity + + + +Testing REAL. + + 1 2 3 + 123456789012345678901234567890 + 1.0E0: 1.0E+00 + 1.1E0: 1.1E+00 + 2.1E0: 2.1E+00 +-1.1E0: -1.1E+00 + 1.1E3: 1.1E+03 + 1.1E-3: 1.1E-03 + 1.2345678987654321E3: 1.234568E+03 + 0.0: 0.0E+00 + 0.000123E0: 1.23E-04 + 1/0.0: Infinity +-1/0.0: -Infinity + + 1 2 3 + 123456789012345678901234567890 + 1.0E0: 1.000000E+00 + 1.1E0: 1.100000E+00 + 2.1E0: 2.100000E+00 +-1.1E0: -1.10000E+00 + 1.1E3: 1.100000E+03 + 1.1E-3: 1.100000E-03 + 1.2345678987654321E3: 1.234568E+03 + 0.0: 0.000000E+00 + 0.000123E0: 1.230000E-04 + 1/0.0: Infinity +-1/0.0: -Infinity + + 1 2 3 + 123456789012345678901234567890 + 1.0E0: 1.0000000E+00 + 1.1E0: 1.1000000E+00 + 2.1E0: 2.1000000E+00 +-1.1E0: -1.1000000E+00 + 1.1E3: 1.1000000E+03 + 1.1E-3: 1.1000000E-03 + 1.2345678987654321E3: 1.2345680E+03 + 0.0: 0.0000000E+00 + 0.000123E0: 1.2300000E-04 + 1/0.0: Infinity +-1/0.0: -Infinity + diff --git a/src/test/confidence/out/result-OC b/src/test/confidence/out/result-OC new file mode 100644 index 00000000..8713aa8e --- /dev/null +++ b/src/test/confidence/out/result-OC @@ -0,0 +1,93 @@ +Out module tests. +SIZE(INTEGER) = 4 + +Testing LONGREAL. + + 1 2 3 + 123456789012345678901234567890 + 1.0D0: 1.0D+000 + 1.1D0: 1.1D+000 + 2.1D0: 2.1D+000 +-1.1D0: -1.1D+000 + 1.1D3: 1.1D+003 + 1.1D-3: 1.1D-003 + 1.2345678987654321D3: 1.23456789876543D+003 + 0.0: 0.0D+000 + 0.000123D0: 1.23D-004 + 1/0.0: Infinity +-1/0.0: -Infinity + + 1 2 3 + 123456789012345678901234567890 + 1.0D0: 1.00000D+000 + 1.1D0: 1.10000D+000 + 2.1D0: 2.10000D+000 +-1.1D0: -1.1000D+000 + 1.1D3: 1.10000D+003 + 1.1D-3: 1.10000D-003 + 1.2345678987654321D3: 1.23456789876543D+003 + 0.0: 0.00000D+000 + 0.000123D0: 1.23000D-004 + 1/0.0: Infinity +-1/0.0: -Infinity + + 1 2 3 + 123456789012345678901234567890 + 1.0D0: 1.000000000000000D+000 + 1.1D0: 1.100000000000000D+000 + 2.1D0: 2.100000000000000D+000 +-1.1D0: -1.100000000000000D+000 + 1.1D3: 1.100000000000000D+003 + 1.1D-3: 1.100000000000000D-003 + 1.2345678987654321D3: 1.234567898765430D+003 + 0.0: 0.000000000000000D+000 + 0.000123D0: 1.230000000000000D-004 + 1/0.0: Infinity +-1/0.0: -Infinity + + + +Testing REAL. + + 1 2 3 + 123456789012345678901234567890 + 1.0E0: 1.0E+00 + 1.1E0: 1.1E+00 + 2.1E0: 2.1E+00 +-1.1E0: -1.1E+00 + 1.1E3: 1.1E+03 + 1.1E-3: 1.1E-03 + 1.2345678987654321E3: 1.234568E+03 + 0.0: 0.0E+00 + 0.000123E0: 1.23E-04 + 1/0.0: Infinity +-1/0.0: -Infinity + + 1 2 3 + 123456789012345678901234567890 + 1.0E0: 1.000000E+00 + 1.1E0: 1.100000E+00 + 2.1E0: 2.100000E+00 +-1.1E0: -1.10000E+00 + 1.1E3: 1.100000E+03 + 1.1E-3: 1.100000E-03 + 1.2345678987654321E3: 1.234568E+03 + 0.0: 0.000000E+00 + 0.000123E0: 1.230000E-04 + 1/0.0: Infinity +-1/0.0: -Infinity + + 1 2 3 + 123456789012345678901234567890 + 1.0E0: 1.0000000E+00 + 1.1E0: 1.1000000E+00 + 2.1E0: 2.1000000E+00 +-1.1E0: -1.1000000E+00 + 1.1E3: 1.1000000E+03 + 1.1E-3: 1.1000000E-03 + 1.2345678987654321E3: 1.2345680E+03 + 0.0: 0.0000000E+00 + 0.000123E0: 1.2300000E-04 + 1/0.0: Infinity +-1/0.0: -Infinity + diff --git a/src/test/confidence/out/test.sh b/src/test/confidence/out/test.sh new file mode 100644 index 00000000..48198a64 --- /dev/null +++ b/src/test/confidence/out/test.sh @@ -0,0 +1,15 @@ +#!/bin/sh +. ../testenv.sh +$OBECOMP outtest.mod -m -O2 +#../../../../voc outtest.mod -m -O2 +./outtest >result-O2 +$OBECOMP outtest.mod -m -OC +#../../../../voc outtest.mod -m -OC +./outtest >result-OC +echo --- Testing with Oberon 2 variable model --- >result +cat result-O2 >>result +echo "" >>result +echo "" >>result +echo --- Testing with Component Pascal variable model --- >>result +cat result-OC >>result +. ../testresult.sh diff --git a/src/tools/make/oberon.mk b/src/tools/make/oberon.mk index b8688337..d8a8dd6b 100644 --- a/src/tools/make/oberon.mk +++ b/src/tools/make/oberon.mk @@ -389,6 +389,7 @@ confidence: @printf "\n\n--- Confidence tests ---\n\n" # cd src/test/confidence/math; $(RUNTEST) cd src/test/confidence/hello; $(RUNTEST) + cd src/test/confidence/out; $(RUNTEST) cd src/test/confidence/intsyntax; $(RUNTEST) cd src/test/confidence/language; $(RUNTEST) cd src/test/confidence/texts; $(RUNTEST)