+
+// some decls to suppress some warnings the compiler will emit
+void exit(int);
+int printf(const char *__format, ...);
+int strcmp(const char *__s1, const char *__s2);
+int vsprintf(char *__src, const char *__format, void *);
+void *dlsym(void *__handle, const char *__symbol);
+void *dlopen(const char *__library, long __flags);
+int snprintf(char *__s, unsigned long __maxlen, const char *__format);
+
+int external_1 = 1337;
+int external_2 = 7331;
+
+void expecti(int a, int b) {
+ if (a != b) {
+ printf(" Expected: %d\n", b);
+ printf(" Result: %d\n", a);
+ exit(1);
+ }
+}
+
+void expectl(long a, long b) {
+ if (a != b) {
+ printf(" Expected: %d\n", b);
+ printf(" Result: %d\n", a);
+ exit(1);
+ }
+}
+
+void expectf(float a, float b) {
+ if (a != b) {
+ printf(" Expected: %f\n", b);
+ printf(" Result: %f\n", a);
+ exit(1);
+ }
+}
+
+void expectd(double a, double b) {
+ if (a != b) {
+ printf(" Expected: %f\n", b);
+ printf(" Result: %f\n", a);
+ exit(1);
+ }
+}
+
+void expects(short a, short b) {
+ if (a != b) {
+ printf(" Expected: %s\n", b);
+ printf(" Result: %s\n", a);
+ exit(1);
+ }
+}
+
+void expectstr(const char *a, const char *b) {
+ if (strcmp(a, b)) {
+ printf(" Expected: %s\n", b);
+ printf(" Result: %s\n", a);
+ exit(1);
+ }
+}