home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The C Users' Group Library 1994 August
/
wc-cdrom-cusersgrouplibrary-1994-08.iso
/
vol_300
/
355_01
/
slk1.exe
/
SHERLOCK
/
SLTEST.C
< prev
next >
Wrap
C/C++ Source or Header
|
1991-06-09
|
6KB
|
352 lines
/*
Test file for all sherlock macros.
source: sl.tst
started: June 2, 1988
version:
February 14, 1989
March 24, 1989
April 19, 1989
June 30, 1989 include <stdio.h> added.
*/
#undef SHERLOCK
#define SHERLOCK 1
#ifdef PREFERRED
#include "sl.h"
#else
#include "sl1.h"
#endif
#include <stdio.h>
struct struct1 {int a;};
struct struct1 struct1_var;
typedef int bool;
typedef enum {red, blue, green} en_test;
bool bool_test();
char char_test();
double double_test();
en_test enum_test();
float float_test();
int int_test();
long long_test();
void * ptr_test();
char * str_test();
unsigned int
uint_test();
unsigned long
ulong_test();
void void_test();
void name_test();
void off_test();
void on_off_test();
void ptrace_test();
void stat_test();
void tick_test();
void trace_test();
void time_test();
void time2_test();
void sppo_test();
struct struct1 struct_test();
struct struct1 s1var;
void f1(void), f2(void), g1(void), g2(void);
main(argc, argv)
int argc;
char **argv;
{
SL_INIT();
SL_PARSE(argc, argv, "++", "--");
ENTER_TRACE("main", printf("argc: %d\n", argc));
STAT("main_stat_test");
#ifdef PREFERRED
printf("\nsltest ");
#else
printf("\nsl--1--test ");
#endif
printf("June 30, 1989\n\n");
bool_test();
char_test();
double_test();
enum_test();
float_test();
int_test();
long_test();
ptr_test();
str_test();
uint_test();
ulong_test();
void_test();
sppo_test();
name_test();
off_test();
on_off_test();
ptrace_test();
stat_test();
tick_test();
trace_test();
s1var= struct_test();
TRACEP("dump", SL_DUMP());
TRACEPN("dump", SL_CLEAR(); printf("\n"));
time_test();
TRACEP("dump", SL_DUMP());
TICK("BAD_TRACEPOINT_NAME!");
LEAVE("main");
}
bool bool_test()
{
ENTER("bool_test");
sl_bout(1);
printf("\nshould return %s\n", sl_sbout(1));
RETURN_BOOL("bool_test",1);
}
char char_test()
{
TICKB("char_test");
sl_cout('A');
printf("\nshould return A\n");
RETURN_CHAR("char_test", 'A');
}
double double_test()
{
TICKB("double_test");
sl_dout(0.2);
printf("\nshould return 0.2\n");
RETURN_DOUBLE("double_test", (double) 0.2);
}
en_test enum_test()
{
TICKB("enum_test");
sl_iout((int)blue);
printf("\nshould return blue in {red, blue, green}\n");
RETURN_INT("enum_test", blue);
}
float float_test()
{
TICKB("float_test");
sl_fout(0.1);
printf("\nshould return 0.1\n");
RETURN_FLOAT("float_test", 0.1);
}
int int_test()
{
TICKB("int_test");
sl_iout(10);
printf("\nshould return 10\n");
RETURN_INT("int_test", 10);
}
long long_test()
{
TICKB("long_test");
sl_lout(20L);
printf("\nshould return 20L\n");
RETURN_LONG("long_test", 20L);
}
void * ptr_test()
{
int a;
TICKB("ptr_test");
sl_pout(&a);
printf("\nshould return %p\n", &a);
RETURN_PTR("ptr_test", &a);
}
char * str_test()
{
TICKB("str_test");
sl_sout("abc");
printf("\nshould return \"abc\"\n");
RETURN_STRING("str_test", "abc");
}
unsigned int uint_test()
{
TICKB("uint_test");
sl_uiout(1000);
printf("\nshould return 1000 unsigned long\n");
RETURN_UINT("uint_test", 1000);
}
unsigned long ulong_test()
{
TICKB("ulong_test");
sl_ulout(2000L);
printf("\nshould return 2000 unsigned long\n");
RETURN_ULONG("ulong_test", 2000L);
}
void void_test()
{
TICKB("void_test");
RETURN_VOID("void_test");
}
void trace_test()
{
TRACEB("trace_test", printf("TRACEB\n"));
TRACE("trace_test", printf("TRACE\n"));
TRACEN("trace_test", printf("TRACEN1\n"));
TRACEN("trace_test", printf("TRACEN2\n"));
TRACEX("trace_test", printf("TRACEX\n"));
}
void ptrace_test()
{
TRACEPB("tracep_test", printf("TRACEPB\n"));
TRACEP("tracep_test", printf("TRACEP\n"));
TRACEPN("tracep_test", printf("TRACEPN1\n"));
TRACEPN("tracep_test", printf("TRACEPN2\n"));
TRACEPX("tracep_test", printf("TRACEPX\n"));
}
void name_test()
{
SL_NAME(name,"name_test");
printf("tracepoint name should be \"name_test\"\n");
TICKB(name);
TICKX(name);
}
void off_test()
{
TICKB("off_test");
SL_OFF("off_test*");
TICK("off_test_off");
SL_ON("off_test*");
TICK("off_test_on");
TICKX("off_test");
}
void on_off_test()
{
printf("on_off_test begins...\n");
SL_ON("*");
f1();
f2();
g1();
g2();
SL_OFF("f*");
f1();
f2();
g1();
g2();
printf("on_off_test ends...\n");
}
void f1(void)
{
TICKB("f1");
TICKX("f1");
}
void f2(void)
{
TICKB("f2");
TICKX("f2");
}
void g1(void)
{
TICKB("g1");
TICKX("g1");
}
void g2(void)
{
TICKB("g2");
TICKX("g2");
}
void stat_test()
{
STAT("stat_test");
STATB("stat_test");
STATX("stat_test"); /* This will bump t_xtrace */
}
void tick_test()
{
TICK("tick_test");
TICKB("tick_test");
TICKN("tick_test");
TICKX("tick_test");
}
/*
These two tests are intended to discover something about
timing statistics.
*/
void time_test()
{
int i, j;
STATB("time_test");
j = 0;
for (i = 0; i < 10000; i++) {
j = j + 1;
}
time2_test();
STATX("time_test");
}
void time2_test()
{
int i, j;
STATB("time2_test");
j = 0;
for (i = 0; i < 20000; i++) {
j = j + 1;
}
STATX("time2_test");
}
/*
Test the routines generated by the SPP -o option.
*/
void sppo_test(void)
{
printf("Test of SPP -o routines: ");
sl_lpout();
sl_sout("arg1");
sl_csout();
sl_sout("arg2");
sl_rpout();
}
/*
Test functions returning a struct, not pointer to struct.
*/
struct struct1 struct_test(void)
{
printf(" struct1_var: %p\n", struct1_var);
printf("&struct1_var: %p\n", &struct1_var);
}