bug1057979.c
*/
-#include <testfwk.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
+#include <testfwk.h>
char s[12+1];
ASSERT( 0 == strcmp( s, "2147483647" ) );
//and from bug 1073386
+#ifdef SDCC_pic16
+ //pic16 printf doesn't support flags, width and precision specifiers
+ sprintf( s, "%04X", 0x8765u );
+ ASSERT( 0 == strcmp( s, "04X" ) );
+
+ //and from bug 1193299
+ sprintf( s, "%3.3s", "abcd" );
+ ASSERT( 0 == strcmp( s, "3.3s" ) );
+ sprintf( s, "%-3.3s", "abcd" );
+ ASSERT( 0 == strcmp( s, "-3.3s" ) );
+ sprintf( s, "%3.3s", "ab" );
+ ASSERT( 0 == strcmp( s, "3.3s" ) );
+ sprintf( s, "%-3.3s", "ab" );
+ ASSERT( 0 == strcmp( s, "-3.3s" ) );
+#else
sprintf( s, "%04X", 0x8765u );
ASSERT( 0 == strcmp( s, "8765" ) );
//and from bug 1193299
sprintf( s, "%3.3s", "abcd" );
- LOG((s));
ASSERT( 0 == strcmp( s, "abc" ) );
sprintf( s, "%-3.3s", "abcd" );
ASSERT( 0 == strcmp( s, "abc" ) );
ASSERT( 0 == strcmp( s, " ab" ) );
sprintf( s, "%-3.3s", "ab" );
ASSERT( 0 == strcmp( s, "ab " ) );
+#endif
+#if defined(SDCC_ds390) || defined(PORT_HOST)
//and from bug 1358192
-#if defined(SDCC__ds390)
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 );