https://gcc.gnu.org/g:91f549537caa8dff2621c22ef2cdd48c55b0ad19

commit r15-3158-g91f549537caa8dff2621c22ef2cdd48c55b0ad19
Author: Gaius Mulley <gaiusm...@gmail.com>
Date:   Sun Aug 25 10:14:49 2024 +0100

    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 <gaiusm...@gmail.com>

Diff:
---
 .../libc/run/pass/calling-c-libc-run-pass.exp      | 36 ++++++++++++++++++++
 .../gm2/calling-c/libc/run/pass/testlibcstr.mod    | 39 ++++++++++++++++++++++
 2 files changed, 75 insertions(+)

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 000000000000..a7973d9c020d
--- /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 (gaiusm...@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 000000000000..9d90d7599517
--- /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.

Reply via email to