gbdk-releases/sdcc/support/regression/tests/scott-compare3.c
2015-01-10 16:25:09 +01:00

173 lines
2 KiB
C

/**
compare3.c
regression testing program for comparing literals to variables
*/
#include <testfwk.h>
unsigned int aint0 = 0;
unsigned int aint1 = 0;
unsigned char achar0 = 0;
unsigned char achar1 = 0;
// compare to 0
// assumes
// achar0 == 0
// achar1 != 0
// aint0 == 0
// aint1 != 0
void c_0(void)
{
ASSERT(!(achar0 != 0));
ASSERT(!(achar0));
ASSERT(!(achar1 == 0));
ASSERT(!(!achar1));
ASSERT(!(aint0 != 0));
ASSERT(!(aint0));
ASSERT(!(aint1 == 0));
ASSERT(!(!aint1));
}
// compare to 1
// assumes
// achar0 != 1
// achar1 == 1
// aint0 != 1
// aint1 == 1
void c_1(void)
{
ASSERT(!(achar0 == 1));
ASSERT(!(achar1 != 1));
ASSERT(!(aint0 == 1));
ASSERT(!(aint1 != 1));
}
// compare to 2
// assumes
// achar0 == 2
// aint0 == 2
void c_2(void)
{
ASSERT(!(achar0 != 2));
ASSERT(!(aint0 != 2));
}
// compare to 0xff
// assumes
// achar0 == 0xff
// aint0 == 0xff
void c_ff(void)
{
ASSERT(!(achar0 != 0xff));
ASSERT(!(aint0 != 0xff));
ASSERT(!(aint0 == 0xfe));
ASSERT(!(aint0 == 0xff00U));
}
// compare to 0x00a5
// assumes
// achar0 == 0xa5
// aint0 == 0x00a5
void c_a5(void)
{
ASSERT(!(achar0 != 0xa5));
ASSERT(!(aint0 != 0xa5));
ASSERT(!(aint0 == 0xa4));
ASSERT(!(aint0 == 0xa500U));
}
// compare to 0xa500
// assumes
// achar0 == 0xa5
// aint0 == 0xa500
void c_a500(void)
{
ASSERT(!(achar0 == (unsigned char)0xa500U));
ASSERT(!(aint0 != 0xa500U));
ASSERT(!(aint0 == 0xa400U));
ASSERT(!(aint0 == 0x00a5));
}
// compare to 0xabcd
// assumes
// achar0 == 0xa5
// aint0 == 0xabcd
void c_abcd(void)
{
ASSERT(!(achar0 == (unsigned char)0xabcdU));
ASSERT(!(aint0 != 0xabcdU));
ASSERT(!(aint0 == 0xab00U));
ASSERT(!(aint0 == 0x00cd));
ASSERT(!(aint0 == (unsigned int)0x1234abcdU));
}
void
testCompare3 (void)
{
aint1 = 1;
achar1 = 1;
c_0();
c_1();
aint0 = 2;
achar0 = 2;
c_2();
aint0 = 0xff;
achar0 = 0xff;
c_ff();
aint0 = 0xa5;
achar0 = 0xa5;
c_a5();
aint0 = 0xabcd;
c_abcd();
}