add something like unit tests.

This commit is contained in:
Kelvin Sherlock 2015-01-13 16:59:43 -05:00
parent cf4a8e2fcc
commit d2bca7efe0
4 changed files with 211 additions and 0 deletions

40
test/makefile Normal file
View File

@ -0,0 +1,40 @@
LIBS = \
{Libraries}Stubs.o \
{CLibraries}StdCLib.o \
{Libraries}Interface.o \
{Libraries}Runtime.o \
{Libraries}ToolLibs.o
PPC_LIBS = {SharedLibraries}InterfaceLib \
{SharedLibraries}StdCLib \
{PPCLibraries}StdCRuntime.o \
{PPCLibraries}PPCCRuntime.o
LDFLAGS = -w -c 'MPS ' -t MPST \
-sn STDIO=Main -sn INTENV=Main -sn %A5Init=Main
SCFLAGS = -p
TARGETS = test_new_handle test_new_handle_2 test_new_pointer
all : $(TARGETS)
clean :
rm -f $(TARGETS) o/*
test_new_handle : o/test_new_handle.o
mpw Link $(LDFLAGS) -o $@ $^ $(LIBS)
test_new_handle_2 : o/test_new_handle_2.o
mpw Link $(LDFLAGS) -o $@ $^ $(LIBS)
test_new_pointer : o/test_new_pointer.o
mpw Link $(LDFLAGS) -o $@ $^ $(LIBS)
# % : o/%.o
# mpw Link $(LDFLAGS) -o $@ $^ $(LIBS)
o/%.o : %.c
mpw SC $(SCFLAGS) $< -o $@

30
test/test_new_handle.c Normal file
View File

@ -0,0 +1,30 @@
#include <MacMemory.h>
#include <stdio.h>
#include <string.h>
void test_new_handle(unsigned size)
{
unsigned long total = 0;
unsigned long count = 0;
for(;;) {
Handle h = NewHandle(size);
if (!h) {
fprintf(stdout, "memory error: %d\n", MemError());
break;
}
total += size;
count++;
}
fprintf(stdout, "%ld handles allocated\n", count);
fprintf(stdout, "%ld bytes allocated\n", total);
}
int main(void)
{
test_new_handle(1024 * 1024);
return 0;
}

110
test/test_new_handle_2.c Normal file
View File

@ -0,0 +1,110 @@
#include <MacMemory.h>
#include <stdio.h>
enum {
TimeLM = 0x020C
};
/* arc4random */
struct {
unsigned char i;
unsigned char j;
unsigned char s[256];
} rs;
void arc4_init(void)
{
int n;
for (n = 0; n < 256; n++)
rs.s[n] = n;
rs.i = 0;
rs.j = 0;
}
void arc4_addrandom(const unsigned char *dat, int datlen)
{
int n;
unsigned char si;
rs.i--;
for (n = 0; n < 256; n++) {
rs.i = (rs.i + 1);
si = rs.s[rs.i];
rs.j = (rs.j + si + dat[n % datlen]);
rs.s[rs.i] = rs.s[rs.j];
rs.s[rs.j] = si;
}
rs.j = rs.i;
}
unsigned char arc4_getbyte(void)
{
unsigned char si, sj;
rs.i = (rs.i + 1);
si = rs.s[rs.i];
rs.j = (rs.j + si);
sj = rs.s[rs.j];
rs.s[rs.i] = sj;
rs.s[rs.j] = si;
return (rs.s[(si + sj) & 0xff]);
}
unsigned long arc4_get24(void)
{
unsigned long val;
val |= arc4_getbyte() << 16;
val |= arc4_getbyte() << 8;
val |= arc4_getbyte();
return val;
}
void test(void)
{
unsigned i,j;
unsigned errors = 0;
unsigned success = 0;
for (i = 0; i < 10000; ++i)
{
Handle h[5];
for (j = 0; j < 5; ++j) {
unsigned long size = arc4_get24() >> 3;
Handle hh = NewHandle(size);
if (hh) {
success++;
} else {
fprintf(stdout, "NewHandle failed (%u): %d\n", size, MemError());
errors++;
}
h[j] = hh;
}
for (j = 0; j < 5; ++j) {
DisposeHandle(h[j]);
}
}
fprintf(stdout, "NewHandle failed: %u\n", errors);
fprintf(stdout, "NewHandle succeeded: %u\n", success);
}
int main(void)
{
// init with the time.
arc4_init();
arc4_addrandom((const unsigned char *)TimeLM, 4);
test();
return 0;
}

31
test/test_new_pointer.c Normal file
View File

@ -0,0 +1,31 @@
#include <MacMemory.h>
#include <stdio.h>
#include <string.h>
void test_new_pointer(unsigned size)
{
unsigned long total = 0;
unsigned long count = 0;
for(;;) {
void *p = NewPtr(size);
if (!p) {
fprintf(stdout, "memory error: %d\n", MemError());
break;
}
total += size;
count++;
}
fprintf(stdout, "%ld pointers allocated\n", count);
fprintf(stdout, "%ld bytes allocated\n", total);
}
int main(void)
{
test_new_pointer(1024 * 1024);
return 0;
}