Trailing-Edge
-
PDP-10 Archives
-
SRI_NIC_PERM_FS_1_19910112
-
kcc-5/lib/pml/cctest.c
There are 5 other files named cctest.c in the archive. Click here to see a list.
/*)BUILD
*/
/*
*
* CCTEST - Program to test C Compiler
*
* Adaped for the DECUS compiler from the MIT compiler by
* Fred Fish @GACA 17-Jan-83
*
*/
/*
*
* data for testing global data definition and initialization
*
*/
int e1;
int e2 = 9;
int e3 = {2*6};
int e4[5] = {0, 1, 2, 3, 4};
static int i1;
static int i2 = -13;
static int i3 = {4096};
static int i4[5] = {0, -1, -2, -3, -4};
char c1;
char c2 = 'a';
char c3 = {'b'};
char c4[5] = {'A', 'B', 'C', 'D', 'E'};
int *p1 = {&i2};
char *p2[2] = {"foo", &c3};
int *p3;
/*
*
* small functions for testing functions
*
*/
int f1 (z) {return (z+3);}
int f2 (x, y) {return (x-y);}
/*
*
* MAIN - control routine
*
*/
#include <stdio.h>
main ()
{printf ("C Testing Program.\n");
tcond ();
tint ();
tincr ();
tbit ();
tclass (5, -9999);
tfunc (f1);
tswitch ();
printf ("Done.\n");
}
error (i)
{printf ("*** Error No. %d ***\n", i);}
/*
*
* TCOND - test conditionals and logical operations
*
*/
tcond ()
{int i, j;
printf ("Testing Conditionals.\n");
if (0) error (10);
if (1) ; else error (20);
i = 0;
if (i) error (30);
if (i > 0) error (40);
if (i < 0) error (50);
if (i != 0) error (60);
if (i == 0) ; else error (70);
if (i <= 0) ; else error (80);
if (i >= 0) ; else error (90);
if (i > 0) i = 4; else i = 3;
if (i != 3) error (100);
if (i == 0) error (110);
if (i == 4) error (120);
i = 0;
j = 0;
if (i && j) error (130);
if (i || j) error (140);
if (!i) ; else error (150);
j = 1;
if (i && j) error (160);
if (i || j) ; else error (170);
if (!j) error (180);
i = 2;
if (i && j) ; else error (190);
if (i || j) ; else error (200);
if (!i) error (210);
}
/*
*
* TINT - test integer arithmetic
*
*/
tint ()
{int i, j, k;
int x0, x1, x2, x3, x4;
printf ("Testing Integer Arithmetic.\n");
x0=0;x1=1;x2=2;x3=3;x4=4;
if (x0 != 0) error (10);
if (x1 > 1) error (20);
if (x2 < 2) error (30);
if (x3 <= 3) ; else error (31);
if (x4 >= 4) ; else error (32);
if (x1 + x2 != x3) error (40);
if (x1 * x3 != x3) error (50);
if (x4 / x2 != x2) error (60);
if (x4 % x3 != x1) error (70);
i = 56;
j = -102;
k = 7;
if (i*j + i*k != i*(j+k)) error (80);
if (i*(k+3) + j*(k+3) != (i+j)*(k+3)) error (90);
j += i;
if (j != -46) error (100);
if ((j += i) != 10 || j != 10) error (110);
if (++j != 11 || j != 11) error (120);
if (j++ != 11 || j != 12) error (130);
if (--j != 11 || j != 11) error (140);
if (j-- != 11 || j != 10) error (150);
if (-j != k-17) error (160);
if ((j *= 2) != 20 || j != 20) error (170);
if ((j -= 13) != k || j != k) error (180);
if ((j %= 4) != 3 || j != 3) error (190);
if ((i /= 14) != x4 || i != x4) error (200);
if (3 + 5 - 12 * 40 != -472) error (210);
if (-5 * 10 != -448/56 + 68%9 - 47) error (220);
if (k*1 != 0+k) error (230);
if (k/1 != k || k != k-0) error (240);
if (i*0) error (250);
}
/*
*
* TFUNC - test function calling
*
*/
tfunc (x) int (*x)();
{printf ("Testing Function Calling.\n");
if ((*x)(4) != 7) error (10);
x = f2;
if ((*x)(7,2) != 5) error (20);
}
/*
*
* TSWITCH - test switch statement
*
*/
tswitch ()
{printf ("Testing Switch Statements.\n");
tsw1 (0);
tsw1 (1);
tsw1 (2);
tsw1 (3);
tsw1 (4);
tsw1 (-2);
tsw1 (-5);
tsw1 (-10000);
tsw1 (4000);
tsw1 (15);
tsw2 (0);
tsw2 (1);
tsw2 (2);
tsw2 (3);
tsw2 (4);
tsw2 (-2);
tsw2 (-5);
tsw2 (-10000);
tsw2 (4000);
tsw2 (15);
}
/*
*
* support routines for testing of switch statement
*
*/
tsw1 (i)
{switch (i) {
error (10);
break;
error (20);
case 4:
if (i!=4) error (30);
break;
error (40);
case 2:
if (i!=2) error (50);
case 3:
if (i!=3 && i!=2) error (60);
break;
error (70);
case 0:
if (i!=0) error (80);
break;
case -2:
if (i != -2) error (90);
break;
default:
if (i == -2 || i == 0 || i == 2 || i == 3 || i == 4)
error (100);
}
}
tsw2 (i)
{int j;
j = -9;
switch (i) {
error (200);
break;
error (210);
case -10000:
if (i != -10000) error (220);
break;
error (230);
case 3:
if (i != 3) error (240);
j = 3;
case -5:
if (i != -5 && i != 3) error (250);
if (i == 3 && j != 3) error (251);
break;
case 4000:
if (i != 4000) error (260);
j = 36;
break;
default:
if (i == -10000 || i == 3 || i == -5 || i == 4000)
error (270);
if (i == 1) j = 24;
}
if (i == 3 && j != 3) error (280);
if (i == 4000 && j != 36) error (290);
if (i == 1 && j != 24) error (300);
}
/*
*
* TINCR - test increment and decrement operations
*
*/
tincr ()
{int i, *p, a[3];
printf ("Testing Increment and Decrement Operations.\n");
i = 0;
if (i) error (4000);
++i;
if (i != 1) error (4010);
++i;
if (i != 2) error (4020);
i++;
if (i != 3) error (4030);
i++;
if (i != 4) error (4040);
i--;
if (i != 3) error (4050);
i = -10;
--i;
if (i != -11) error (4060);
++i;
if (i != -10) error (4070);
if (--i != -11) error (4080);
if (i != -11) error (4090);
if (i-- != -11) error (4100);
if (i != -12) error (4110);
if (++i != -11) error (4120);
if (i != -11) error (4130);
if (i++ != -11) error (4140);
if (i != -10) error (4150);
a[0] = 10;
a[1] = 11;
a[2] = 12;
p = a+1;
if (*p != 11) error (4160);
if (*--p != 10) error (4170);
if (*p != 10) error (4180);
if (*p++ != 10) error (4190);
if (*p != 11) error (4200);
if (*++p != 12) error (4210);
if (*p != 12) error (4220);
if (*p-- != 12) error (4230);
if (*p != 11) error (4240);
}
/*
*
* TBIT - test bit hacking operations
*
*/
tbit ()
{int i, j;
printf ("Testing Bit Hacking Operations.\n");
i = 0;
j = -1;
if (~i != j) error (10);
if (~~i != i) error (20);
if (~j != i) error (30);
if (i & j) error (40);
if (i | i) error (50);
if (j ^ j) error (60);
i = 1;
if ((i << 1) != 2) error (70);
if ((i <<= 1) != 2 || i != 2) error (71);
i = 1;
if ((i << 8) != 0400) error (80);
if ((i <<= 8) != 0400 || i != 0400) error (81);
i = 0404;
if ((i >> 1) != 0202) error (90);
if ((i >>= 1) != 0202 || i != 0202) error (91);
i = 0404;
if ((i >> 2) != 0101) error (100);
if ((i >> 6) != 04) error (110);
i = 0404;
if ((i ^ 0703) != 0307) error (120);
if ((i ^= 0703) != 0307 || i != 0307) error (121);
i = 0404;
if ((i ^ 0707) != 0303) error (130);
if ((i ^= 0707) != 0303 || i != 0303) error (131);
i = 0404;
if ((i | 030) != 0434) error (140);
if ((i |= 030) != 0434 || i != 0434) error (141);
i = 0625;
if ((i & 0451) != 0401) error (150);
if ((i &= 0451) != 0401 || i != 0401) error (151);
}
/*
*
* TCLASS - test different storage classes
*
*/
tclass (x, y) int x, y;
{int i, j;
static int k, l;
printf ("Testing Storage Classes.\n");
if (x != 5) error (5010);
if (y != -9999) error (5020);
if (k != 0) error (5030);
if (l != 0) error (5040);
i = 6;
j = 9;
x = i;
k = y;
if (i != 6) error (5050);
if (j != 9) error (5060);
if (x != 6) error (5070);
if (y != -9999) error (5080);
if (k != -9999) error (5090);
if (l != 0) error (5100);
if (e1 != 0) error (5110);
if (e2 != 9) error (5120);
if (e3 != 12) error (5130);
if (e4[0] != 0) error (5140);
if (e4[4] != 4) error (5150);
if (i1 != 0) error (5160);
if (i2 != -13) error (5170);
if (i3 != 4096) error (5180);
if (i4[1] != -1) error (5190);
if (i4[3] != -3) error (5200);
if (c1 != 0) error (5210);
if (c2 != 'a') error (5220);
if (c3 != 'b') error (5230);
if (c4[0] != 'A') error (5240);
if (c4[4] != 'E') error (5250);
if (p1 != &i2) error (5260);
if (p2[0][1] != 'o') error (5270);
if (p2[1] != &c3) error (5280);
e2 = i2;
i1 = e3;
if (e2 != -13) error (5290);
e2 = c1;
if (e2 != 0) error (5300);
if (i1 != 12) error (5310);
p1 = &x;
if (*p1 != 6) error (5320);
*p1 = 98;
p1 = &k;
if (*p1 != -9999) error (5330);
*p1 = 34;
if (x != 98) error (5340);
if (k != 34) error (5350);
if ((&c4[4] - &c4[1]) != 3) error (5360);
if ((&e4[2] - &e4[3]) != -1) error (5370);
if (p3) error (5380);
if (!p3); else error (5480);
p1 = &y;
if (*p1 != y) error (5490);
*p1 = 77;
if (y != 77) error (5500);
}