/*

	9unit
	Copyright (C) Jonathan Lamothe <jonathan@jlamothe.net>

	This program is free software: you can redistribute it and/or modify
	it under the terms of the GNU Lesser General Public License as
	published by the Free Software Foundation, either version 3 of the
	License, or (at your option) any later version.

	This program is distributed in the hope that it will be useful, but
	WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
	Lesser General Public License for more details.

	You should have received a copy of the GNU Lesser General Public
	License along with this program.  If not, see
	<http://www.gnu.org/licenses/>.

*/

#define STR_BUF_SIZE 256 // buffer size for constructing arbitrary strings

#define decl_test(n) static TestResult n(TestState *)
#define def_test(n, s) static TestResult n(TestState *s)

// initializes a sample TestState value
void mk_sample_state(TestState *);

// ensures two TestState values are equal
extern void chk_TestState_eq(
	TestState *, // the state we are *actually* updating ;)
	const char *, // prefix for each status line
	const char *, // context for errors
	const TestState *, // actual state
	const TestState * // expected state
);

// ensure two integers are equal
extern void chk_int_eq(
	TestState *,
	const char *, // the error context
	int, // the actual value
	int // the expected value
);

// ensure two pointers are equal
extern void chk_ptr_eq(
	TestState *,
	const char *, // the error context
	const void *, // the actual value
	const void * // the expected value
);

// ensure two pointers are not equal
extern void chk_ptr_ne(
	TestState *,
	const char *, // the error context
	const void *, // the actual value
	const void * // the prohibited value
);

// ensure two strings are equal
extern void chk_str_eq(
	TestState *,
	const char *, // the error context
	const char *, // the actual value
	const char * // the expected value
);

//jl