summaryrefslogtreecommitdiff
path: root/support/regression/tests/bug1057979.c
blob: b16383fbf6f28eb77aaf7567f62fa8576447db0d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
/*
   bug1057979.c
*/

#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <testfwk.h>

char s[12 + 1];

void
test_sprintf (void)
{
#if !defined( __SDCC_pdk14) && !defined(__SDCC_pdk15) && !defined(__SDCC_pic14) // Lack of memory
#ifndef __SDCC_pic16
  s[12] = 0x12;

  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);
#endif
#endif
}