oscar64/autotest/loopboundtest.c

95 lines
1.0 KiB
C

#include <assert.h>
struct S
{
int a[100];
};
int lts(S * s)
{
int x = 0;
for(int i=0; i<100; i++)
x += s->a[i];
return x;
}
int les(S * s)
{
int x = 0;
for(int i=0; i<=99; i++)
x += s->a[i];
return x;
}
int gts(S * s)
{
int x = 0;
for(int i=100; i>0; i--)
x += s->a[i-1];
return x;
}
int ges(S * s)
{
int x = 0;
for(int i=99; i>=0; i--)
x += s->a[i];
return x;
}
int ltu(S * s)
{
unsigned x = 0;
for(int i=0; i<100; i++)
x += s->a[i];
return x;
}
int leu(S * s)
{
unsigned x = 0;
for(int i=0; i<=99; i++)
x += s->a[i];
return x;
}
int gtu(S * s)
{
unsigned x = 0;
for(int i=100; i>0; i--)
x += s->a[i-1];
return x;
}
int geu(S * s)
{
unsigned x = 0;
for(int i=100; i>=1; i--)
x += s->a[i-1];
return x;
}
int main(void)
{
S s;
int k = 0;
for(int i=0; i<100; i++)
{
int t = (i & 15) + 3;
s.a[i] = t;
k += t;
}
assert(lts(&s) == k);
assert(les(&s) == k);
assert(gts(&s) == k);
assert(ges(&s) == k);
assert(ltu(&s) == k);
assert(leu(&s) == k);
assert(gtu(&s) == k);
assert(geu(&s) == k);
return 0;
}