aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorGaius Mulley <gaiusmod2@gmail.com>2024-08-25 10:14:49 +0100
committerGaius Mulley <gaiusmod2@gmail.com>2024-08-25 10:14:49 +0100
commit91f549537caa8dff2621c22ef2cdd48c55b0ad19 (patch)
treeb245b74cc3a5fd1478606da945f852fdb42fd259 /gcc
parentf23d4cea8682d84fd533a8ca57b099311e056ce0 (diff)
downloadgcc-91f549537caa8dff2621c22ef2cdd48c55b0ad19.zip
gcc-91f549537caa8dff2621c22ef2cdd48c55b0ad19.tar.gz
gcc-91f549537caa8dff2621c22ef2cdd48c55b0ad19.tar.bz2
modula2 testsuite: new libc unit test
This patch provides a simple unit test for snprintf and atof against the libc definition module. gcc/testsuite/ChangeLog: * gm2/calling-c/libc/run/pass/calling-c-libc-run-pass.exp: New test. * gm2/calling-c/libc/run/pass/testlibcstr.mod: New test. Signed-off-by: Gaius Mulley <gaiusmod2@gmail.com>
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/gm2/calling-c/libc/run/pass/calling-c-libc-run-pass.exp36
-rw-r--r--gcc/testsuite/gm2/calling-c/libc/run/pass/testlibcstr.mod39
2 files changed, 75 insertions, 0 deletions
diff --git a/gcc/testsuite/gm2/calling-c/libc/run/pass/calling-c-libc-run-pass.exp b/gcc/testsuite/gm2/calling-c/libc/run/pass/calling-c-libc-run-pass.exp
new file mode 100644
index 0000000..a7973d9
--- /dev/null
+++ b/gcc/testsuite/gm2/calling-c/libc/run/pass/calling-c-libc-run-pass.exp
@@ -0,0 +1,36 @@
+# Copyright (C) 2024 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GCC; see the file COPYING3. If not see
+# <http://www.gnu.org/licenses/>.
+
+# This file was written by Gaius Mulley (gaiusmod2@gmail.com)
+# for GNU Modula-2.
+
+if $tracelevel then {
+ strace $tracelevel
+}
+
+# load support procs
+load_lib gm2-torture.exp
+
+gm2_init_pim "${srcdir}/gm2/cslling-c/libc/run/pass"
+
+foreach testcase [lsort [glob -nocomplain $srcdir/$subdir/*.mod]] {
+ # If we're only testing specific files and this isn't one of them, skip it.
+ if ![runtest_file_p $runtests $testcase] then {
+ continue
+ }
+
+ gm2-torture-execute $testcase "" "pass"
+}
diff --git a/gcc/testsuite/gm2/calling-c/libc/run/pass/testlibcstr.mod b/gcc/testsuite/gm2/calling-c/libc/run/pass/testlibcstr.mod
new file mode 100644
index 0000000..9d90d75
--- /dev/null
+++ b/gcc/testsuite/gm2/calling-c/libc/run/pass/testlibcstr.mod
@@ -0,0 +1,39 @@
+MODULE testlibcstr ;
+
+FROM SYSTEM IMPORT ADDRESS, ADR ;
+FROM Storage IMPORT ALLOCATE, DEALLOCATE ;
+FROM libc IMPORT strtod, atof, printf, exit, snprintf ;
+FROM DynamicStrings IMPORT String,
+ InitString, InitStringCharStar, Equal, Slice,
+ KillString ;
+
+(*
+ runtest -
+*)
+
+PROCEDURE runtest ;
+CONST
+ BufSpace = 100 ;
+VAR
+ s: String ;
+ r: REAL ;
+ a: ADDRESS ;
+BEGIN
+ r := atof (ADR ("3.14159")) ;
+ ALLOCATE (a, BufSpace) ;
+ snprintf (a, BufSpace, "%f", r) ;
+ s := InitStringCharStar (a) ;
+ IF NOT Equal (InitString ("3.14159"), Slice (s, 0, 7))
+ THEN
+ printf ("failed to convert 3.14159 to a REAL or string\n") ;
+ exit (1)
+ END ;
+ DEALLOCATE (a, BufSpace) ;
+ s := KillString (s)
+END runtest ;
+
+
+BEGIN
+ runtest ;
+ printf ("all tests passed!\n")
+END testlibcstr.