ORCA-C/Tests/Conformance/C6.2.3.1.CC

110 lines
2.9 KiB
C++

/* Conformance Test 5.11.0.1: Verification of type equivalence: int types */
#include <stdio.h>
#include <stdlib.h>
int main (void)
{
char ch = 'Z';
int i = 80, k;
short sh = 5;
enum E { a, b, c } e = b;
unsigned char uch = 'm';
unsigned int ui = 0xff;
unsigned short ush = 0x80;
static void TestCnv (unsigned int ch, unsigned int i, int ui);
static int TestInt (int ch, int i, int e, int sh, int ui, int ush, int uch);
static unsigned int TestUnsigned (unsigned int ush, unsigned int ui,
unsigned int uch, unsigned int e,
unsigned int sh, unsigned int i,
unsigned int ch);
k = TestInt (ch, i, e, sh, ui, ush, uch);
if (k != 0x703)
goto Fail;
k = TestUnsigned (ush, ui, uch, e, sh, i, ch);
if (k != 0x3739)
goto Fail;
ch = 131;
i = -32767;
ui = 0xa123;
TestCnv (ch, i, ui);
printf ("Passed Conformance Test 6.2.3.1\n");
return 0;
Fail:
printf ("Failed Conformance Test 6.2.3.1\n");
}
/*****************************************************************************/
static int TestInt (int ch, int i, int e, int sh, int ui, int ush, int uch)
{
int j;
/* Ensure parameters have not been changed during usual conversions. */
if ((ch != 90) || (i != 80) || (e != 1) || (sh != 5) || (ui != 255) ||
(ush != 128) || (uch != 109))
goto Fail;
/* Compute integral expression and check expected result. */
j = (ch + i * e - ui / sh << 4 | ush >> 1) - (uch);
if (j != 1795)
goto Fail;
return j;
Fail:
printf ("Failure in TestInt function in Conformance Test 5.11.0.1\n");
exit (-1);
}
/*****************************************************************************/
static unsigned int TestUnsigned (unsigned int ush, unsigned int ui,
unsigned int uch, unsigned int e,
unsigned int sh, unsigned int i,
unsigned int ch)
{
unsigned int j;
/* Ensure parameters have not been changed during usual conversions. */
if ((ush != 128) || (ui != 255) || (sh != 5) || (e != 1) || (i != 80) ||
(ch != 90) || (uch != 109))
goto Fail;
/* Compute integral expression and check expected result. */
j = ((ush ^ e) * uch) - (ch / sh >> 2) + (i & ui);
if (j != 14137)
goto Fail;
return j;
Fail:
printf ("Failure in TestUnsigned function in Conformance Test 6.2.3.1\n");
exit (-1);
}
/*****************************************************************************/
static void TestCnv (unsigned int ch, unsigned int i, int ui)
{
if ((ch != 0x0083) || (i != 0x8001) || (ui != -24285))
goto Fail;
return;
Fail:
printf ("Failure in TestCnv function in Conformance Test 6.2.3.1\n");
exit (-1);
}