Added a cc65 regression test for pointer and offset addition operations.
This commit is contained in:
parent
7e14dde07b
commit
e050655757
1 changed files with 250 additions and 0 deletions
250
test/val/add5.c
Normal file
250
test/val/add5.c
Normal file
|
@ -0,0 +1,250 @@
|
||||||
|
/*
|
||||||
|
** !!DESCRIPTION!! Simple tests about adding pointers and offsets
|
||||||
|
** !!ORIGIN!! cc65 regression tests
|
||||||
|
** !!LICENCE!! Public Domain
|
||||||
|
** !!AUTHOR!! 2016-01-01, Greg King
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
static unsigned char failures = 0;
|
||||||
|
|
||||||
|
static char array[16];
|
||||||
|
|
||||||
|
static char *cPtr;
|
||||||
|
static int *iPtr;
|
||||||
|
static long *lPtr;
|
||||||
|
|
||||||
|
/* These functions test: adding an offset variable to a pointer variable. */
|
||||||
|
|
||||||
|
static void cPointer_char(void)
|
||||||
|
{
|
||||||
|
char *cP = array;
|
||||||
|
char offset = 3;
|
||||||
|
|
||||||
|
cPtr = cP + offset;
|
||||||
|
if (cPtr != (void *)&array[3]) {
|
||||||
|
++failures;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void cPointer_int(void)
|
||||||
|
{
|
||||||
|
char *cP = array;
|
||||||
|
int offset = 3;
|
||||||
|
|
||||||
|
cPtr = cP + offset;
|
||||||
|
if (cPtr != (void *)&array[3]) {
|
||||||
|
++failures;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void cPointer_long(void)
|
||||||
|
{
|
||||||
|
char *cP = array;
|
||||||
|
long offset = 3;
|
||||||
|
|
||||||
|
cPtr = cP + offset;
|
||||||
|
if (cPtr != (void *)&array[3]) {
|
||||||
|
++failures;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void iPointer_char(void)
|
||||||
|
{
|
||||||
|
int *iP = (int *)array;
|
||||||
|
char offset = 3;
|
||||||
|
|
||||||
|
iPtr = iP + offset;
|
||||||
|
if (iPtr != (void *)&array[6]) {
|
||||||
|
++failures;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void iPointer_int(void)
|
||||||
|
{
|
||||||
|
int *iP = (int *)array;
|
||||||
|
int offset = 3;
|
||||||
|
|
||||||
|
iPtr = iP + offset;
|
||||||
|
if (iPtr != (void *)&array[6]) {
|
||||||
|
++failures;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void iPointer_long(void)
|
||||||
|
{
|
||||||
|
int *iP = (int *)array;
|
||||||
|
long offset = 3;
|
||||||
|
|
||||||
|
iPtr = iP + offset;
|
||||||
|
if (iPtr != (void *)&array[6]) {
|
||||||
|
++failures;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void lPointer_char(void)
|
||||||
|
{
|
||||||
|
long *lP = (long *)array;
|
||||||
|
char offset = 3;
|
||||||
|
|
||||||
|
lPtr = lP + offset;
|
||||||
|
if (lPtr != (void *)&array[12]) {
|
||||||
|
++failures;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void lPointer_int(void)
|
||||||
|
{
|
||||||
|
long *lP = (long *)array;
|
||||||
|
int offset = 3;
|
||||||
|
|
||||||
|
lPtr = lP + offset;
|
||||||
|
if (lPtr != (void *)&array[12]) {
|
||||||
|
++failures;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void lPointer_long(void)
|
||||||
|
{
|
||||||
|
long *lP = (long *)array;
|
||||||
|
long offset = 3;
|
||||||
|
|
||||||
|
lPtr = lP + offset;
|
||||||
|
if (lPtr != (void *)&array[12]) {
|
||||||
|
++failures;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* These functions test: adding a pointer variable to an offset variable. */
|
||||||
|
|
||||||
|
static void char_cPointer(void)
|
||||||
|
{
|
||||||
|
char *cP = array;
|
||||||
|
char offset = 3;
|
||||||
|
|
||||||
|
cPtr = offset + cP;
|
||||||
|
if (cPtr != (void *)&array[3]) {
|
||||||
|
++failures;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void int_cPointer(void)
|
||||||
|
{
|
||||||
|
char *cP = array;
|
||||||
|
int offset = 3;
|
||||||
|
|
||||||
|
cPtr = offset + cP;
|
||||||
|
if (cPtr != (void *)&array[3]) {
|
||||||
|
++failures;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void long_cPointer(void)
|
||||||
|
{
|
||||||
|
char *cP = array;
|
||||||
|
long offset = 3;
|
||||||
|
|
||||||
|
cPtr = (offset + cP);
|
||||||
|
if (cPtr != (void *)&array[3]) {
|
||||||
|
++failures;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void char_iPointer(void)
|
||||||
|
{
|
||||||
|
int *iP = (int *)array;
|
||||||
|
char offset = 3;
|
||||||
|
|
||||||
|
iPtr = offset + iP;
|
||||||
|
if (iPtr != (void *)&array[6]) {
|
||||||
|
++failures;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void int_iPointer(void)
|
||||||
|
{
|
||||||
|
int *iP = (int *)array;
|
||||||
|
int offset = 3;
|
||||||
|
|
||||||
|
iPtr = offset + iP;
|
||||||
|
if (iPtr != (void *)&array[6]) {
|
||||||
|
++failures;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void long_iPointer(void)
|
||||||
|
{
|
||||||
|
int *iP = (int *)array;
|
||||||
|
long offset = 3;
|
||||||
|
|
||||||
|
iPtr = (offset + iP);
|
||||||
|
if (iPtr != (void *)&array[6]) {
|
||||||
|
++failures;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void char_lPointer(void)
|
||||||
|
{
|
||||||
|
long *lP = (long *)array;
|
||||||
|
char offset = 3;
|
||||||
|
|
||||||
|
lPtr = offset + lP;
|
||||||
|
if (lPtr != (void *)&array[12]) {
|
||||||
|
++failures;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void int_lPointer(void)
|
||||||
|
{
|
||||||
|
long *lP = (long *)array;
|
||||||
|
int offset = 3;
|
||||||
|
|
||||||
|
lPtr = offset + lP;
|
||||||
|
if (lPtr != (void *)&array[12]) {
|
||||||
|
++failures;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void long_lPointer(void)
|
||||||
|
{
|
||||||
|
long *lP = (long *)array;
|
||||||
|
long offset = 3;
|
||||||
|
|
||||||
|
lPtr = (offset + lP);
|
||||||
|
if (lPtr != (void *)&array[12]) {
|
||||||
|
++failures;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
cPointer_char();
|
||||||
|
cPointer_int();
|
||||||
|
cPointer_long();
|
||||||
|
|
||||||
|
iPointer_char();
|
||||||
|
iPointer_int();
|
||||||
|
iPointer_long();
|
||||||
|
|
||||||
|
lPointer_char();
|
||||||
|
lPointer_int();
|
||||||
|
lPointer_long();
|
||||||
|
|
||||||
|
char_cPointer();
|
||||||
|
int_cPointer();
|
||||||
|
long_cPointer();
|
||||||
|
|
||||||
|
char_iPointer();
|
||||||
|
int_iPointer();
|
||||||
|
long_iPointer();
|
||||||
|
|
||||||
|
char_lPointer();
|
||||||
|
int_lPointer();
|
||||||
|
long_lPointer();
|
||||||
|
|
||||||
|
if (failures != 0) {
|
||||||
|
printf("add5: failures: %u\n", failures);
|
||||||
|
}
|
||||||
|
return failures;
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue