* support/regression/tests/bug1057979.c:
[fw/sdcc] / support / regression / tests / bug1057979.c
index 202149f59acaf42c93d4daf53caf5a25d09a374c..08aa3e1aa52b3d9235871a8782ab7b3cadeaac9e 100644 (file)
@@ -2,29 +2,55 @@
    bug1057979.c
 */
 
-#include <testfwk.h>
 #include <stdlib.h>
 #include <string.h>
 #include <stdio.h>
+#include <testfwk.h>
 
-char s[12+1];
+char s[12 + 1];
 
 void
-test_sprintf(void)
+test_sprintf (void)
 {
   s[12] = 0x12;
 
-#if defined(SDCC_mcs51) || defined(SDCC_ds390) || defined(PORT_HOST)
-//This still fails dramatically for hc08 and z80
-  sprintf( s, "%d", 99 );
-  ASSERT( 0 == strcmp( s, "99" ) );
-  sprintf( s, "%d", 100 );
-  ASSERT( 0 == strcmp( s, "100" ) );
-  sprintf( s, "%d", 2004 );
-  ASSERT( 0 == strcmp( s, "2004" ) );
-  sprintf( s, "%ld", 2147483647L );
-  ASSERT( 0 == strcmp( s, "2147483647" ) );
+  sprintf (s, "%d", 99);
+  ASSERT (0 == strcmp (s, "99"));
+  sprintf (s, "%d", 100);
+  ASSERT (0 == strcmp (s, "100"));
+  sprintf (s, "%d", 2004);
+  ASSERT (0 == strcmp (s, "2004"));
+  sprintf (s, "%ld", 2147483647L);
+  ASSERT (0 == strcmp (s, "2147483647"));
+
+  //and from bug 1073386
+  sprintf (s, "%04X", 0x8765u);
+  ASSERT (0 == strcmp (s, "8765"));
+
+  //and from bug 1193299
+  sprintf (s, "%3.3s", "abcd");
+  ASSERT (0 == strcmp (s, "abc"));
+  sprintf (s, "%-3.3s", "abcd");
+  ASSERT (0 == strcmp (s, "abc"));
+  sprintf (s, "%3.3s", "ab");
+  ASSERT (0 == strcmp (s, " ab"));
+  sprintf (s, "%-3.3s", "ab");
+  ASSERT (0 == strcmp (s, "ab "));
+
+#if defined(SDCC_ds390) || defined(PORT_HOST)
+  //and from bug 1358192
+  sprintf (s, "%f", 10.1);
+  LOG ((s));
+  ASSERT (0 == strcmp (s, "10.100000"));
+
+  //and from bug 1388703
+  sprintf (s, "%4.1f", 1.36);
+  LOG ((s));
+  ASSERT (0 == strcmp (s, " 1.4"));
+  sprintf (s, "%4.1f", -1.37);
+  LOG ((s));
+  ASSERT (0 == strcmp (s, "-1.4"));
 #endif
 
-  ASSERT( s[12]==0x12 );
+  ASSERT (s[12] == 0x12);
 }