diff options
| author | shmibs <shmibs@gmail.com> | 2014-08-01 09:05:48 -0700 | 
|---|---|---|
| committer | shmibs <shmibs@gmail.com> | 2014-08-01 09:05:48 -0700 | 
| commit | 17c76a851e3c3550f6398aad11e7c71e1a122576 (patch) | |
| tree | 9e15eb284966dec97032452b6cd3383da4fd6fb4 | |
| parent | 0cfbc56786d1e0141aaa89497515acaa89824665 (diff) | |
| download | simple-test-17c76a851e3c3550f6398aad11e7c71e1a122576.tar.gz | |
all around cleanup
| -rw-r--r-- | README.pdf | bin | 144894 -> 138351 bytes | |||
| -rw-r--r-- | README.tex | 76 | ||||
| -rw-r--r-- | a_simple_example.c (renamed from simple_test.c) | 4 | ||||
| -rw-r--r-- | simple-test.h (renamed from test.h) | 42 | 
4 files changed, 80 insertions, 42 deletions
| Binary files differ @@ -58,10 +58,15 @@  	}  } -\newcommand{\myrow}[2]{ +\newcommand{\mymacrow}[2]{  	\footnotesize\textcolor{DarkOrchid3}{\textbf{#1}}: & \small #2 \\[8pt]  } +\newcommand{\mytermrow}[2]{ +	\tt\bf\small #1 & \tt\small #2 \\ +} + +  \begin{document} @@ -93,7 +98,7 @@  	\hrule  	\lstset{style=customc} -	\lstinputlisting{simple_test.c} +	\lstinputlisting{a_simple_example.c}  	\hrule  	\pagebreak @@ -102,10 +107,12 @@  	\hrule  	\vspace{8pt} +	% successful output  	\begin{tabular*}{\textwidth}{r@{\ \tt\bf :: }l} -		\tt\bf\small 1 & \tt\small\color{Brown3}description of the first test \\ -		\tt\bf\small 2 & \tt\small\color{Brown3}this is the second test \\ -		               & \tt\small\color{SteelBlue3}grabbing heap string... \\ +		\mytermrow{1}{\color{Yellow4}description of the first test} +		\mytermrow{2}{\color{Yellow4}this is the second test} +		\mytermrow{ }{\color{DodgerBlue2}grabbing heap string...} +		\mytermrow{ }{\color{SpringGreen4}success!}  	\end{tabular*}  	\vspace{8pt} @@ -116,17 +123,14 @@  	\hrule  	\vspace{8pt} +	% failed output  	\begin{tabular*}{\textwidth}{r@{\ \tt\bf :: }l} -		\tt\bf\small 1 & \tt\small \color{Brown3}description of the first test \\ +		\mytermrow{1}{\color{Yellow4}description of the first test} +		\mytermrow{ }{\color{Red1}FAIL: error message shown on failing} +		\mytermrow{ }{\textcolor{SpringGreen4}{\textbf{\ \ expected:}}6} +		\mytermrow{ }{\textcolor{Red1}{\textbf{\ \ \ \ actual:}}0}  	\end{tabular*} -	\myhl{\tt\small\textbf{FAIL: error message shown on failing}} -	 -	\begin{tabular*}{\textwidth}{r@{\ }l} -		\tt\bf\small\color{Green3} expected: & \tt\small 6 \\ -		\tt\bf\small\color{Red1} actual:     & \tt\small 0 \\ -	\end{tabular*} -  	\vspace{8pt}  	\hrule @@ -134,38 +138,66 @@  	\myheading{defined macros}  	\begin{tabularx}{\textwidth}{r@{\ }X} -		\myrow{EXPECT\_ZERO(summary, arg)}{ +		\mymacrow{BEGIN\_TEST}{ +			must appear before all tests and  +			after all global variable declarations +		} +		\mymacrow{END\_TEST}{ +			must appear at the end of your test +			program +		} +		\mymacrow{CLEANUP(statements)}{ +			this defines a list of statements to run +			when the test exits, either successfully or +			on a failure. it isn't necessary for a test +			to run, but, if it does appear, it must be +			after the declaration of all variables to +			which it makes reference. +		} +		\mymacrow{RETURN()}{ +			place at the end of a test which uses +			CLEANUP to ensure it is called before the +			test exits. i couldn't find any way around +			this without using more than just one +			header file, so i hope it isn't too annoying. +		} +		\mymacrow{STATE(description)}{ +			show a prettily-formatted description of the +			program's state during a test. takes printf-style +			arguments. +		} +		\mymacrow{EXPECT\_ZERO(summary, arg)}{  			fail if \texttt{arg} does not resolve to 0  		} -		\myrow{EXPECT\_ONE(summary, arg)}{ +		\mymacrow{EXPECT\_ONE(summary, arg)}{  			fail if \texttt{arg} does not resolve to 1  		} -		\myrow{EXPECT\_GREATER\_THAN\_ZERO(summary, arg)}{ +		\mymacrow{EXPECT\_GREATER\_THAN\_ZERO(summary, arg)}{  			fail if \texttt{arg} does not resolve to a value  			greater than 0. this will be replaced with more  			generic integer comparisons soon.  		} -		\myrow{EXPECT\_INT(summary, arg1, arg2)}{ +		\mymacrow{EXPECT\_INT(summary, arg1, arg2)}{  			fail if \texttt{arg2} does not match the  			expected integer value \texttt{arg1}  		} -		\myrow{EXPECT\_EQUAL\_INT(summary, arg1, arg2)}{ +		\mymacrow{EXPECT\_EQUAL\_INT(summary, arg1, arg2)}{  			fail if \texttt{arg1} and \texttt{arg2} are  			not equal  		} -		\myrow{EXPECT\_UNEQUAL\_INT(summary, arg1, arg2)}{ +		\mymacrow{EXPECT\_UNEQUAL\_INT(summary, arg1, arg2)}{  			fail if \texttt{arg1} and \texttt{arg2} are  			equal  		} -		\myrow{EXPECT\_STR(summary, arg1, arg2)}{ +		\mymacrow{EXPECT\_STR(summary, arg1, arg2)}{  			fail if string \texttt{arg2} does not match the  			expected string value \texttt{arg1}  		} -		\myrow{EXPECT\_EQUAL\_STR(summary, arg1, arg2)}{ +		\mymacrow{EXPECT\_EQUAL\_STR(summary, arg1, arg2)}{  			fail if \texttt{arg1} and \texttt{arg2} are  			not equivalent strings  		} -		\myrow{EXPECT\_UNEQUAL\_STR(summary, arg1, arg2)}{ +		\mymacrow{EXPECT\_UNEQUAL\_STR(summary, arg1, arg2)}{  			fail if \texttt{arg1} and \texttt{arg2} are  			equivalent strings  		} diff --git a/simple_test.c b/a_simple_example.c index e57db38..fb7d774 100644 --- a/simple_test.c +++ b/a_simple_example.c @@ -1,4 +1,4 @@ -#include "test.h" +#include "simple-test.h"  #include "header_with_stuff_to_be_tested.h"  BEGIN_TEST @@ -29,7 +29,7 @@ TEST("this is the second test")    CLEANUP(        if(heap_string != NULL)          free(heap_string); -        ) +        );    /* then, define the body of the test */ @@ -26,6 +26,7 @@ int main(int argc, char *argv[]) \  /* yaaaay! */  #define END_TEST \ +	printf("\e[1m    :: \e[m\e[32msuccess!\e[m\n"); \  	return 0; \  } @@ -54,7 +55,12 @@ _test_cleanup_current=_TEST_PASTE(_test_cleanup_, unique_count);  /* pretty printing for the current state within   * a test */ -#define STATE(str) printf("\e[1m    :: \e[m\e[34m%s...\e[m\n", str) +#define STATE(...) \ +	do { \ +		printf("\e[1m    :: \e[m\e[34m"); \ +		printf(...); \ +		printf("...\e[m\n"); \ +	} while(0)  /* one of these goes at the end of every test   * with CLEANUP (unless you want memory leaks). @@ -80,70 +86,70 @@ do { \  #define EXPECT_ZERO(summary, arg) \  do { \  	if(arg) \ -		FAIL_VAL(summary, "%i", "%i", 0, arg); \ +		_TEST_FAIL_VAL(summary, "%i", "%i", 0, arg); \  } while(0);  #define EXPECT_ONE(summary, arg) \  do { \  	if(arg != 1) \ -		FAIL_VAL(summary, "%i", "%i", 1, arg); \ +		_TEST_FAIL_VAL(summary, "%i", "%i", 1, arg); \  } while(0);  #define EXPECT_GREATER_THAN_ZERO(summary, arg) \  do { \  	if(arg <= 0) \ -		FAIL_VAL(summary, "%s", "%i", ">0", arg); \ +		_TEST_FAIL_VAL(summary, "%s", "%i", ">0", arg); \  } while(0);  #define EXPECT_INT(summary, arg1, arg2) \  do { \  	if(arg1 != arg2) \ -		FAIL_VAL(summary, "%i", "%i", arg1, arg2); \ +		_TEST_FAIL_VAL(summary, "%i", "%i", arg1, arg2); \  } while(0);  #define EXPECT_EQUAL_INT(summary, arg1, arg2) \  do { \  	if(arg1 != arg2) \ -		FAIL_EQUAL(summary, "%i", "%i", arg1, arg2); \ +		_TEST_FAIL_EQUAL(summary, "%i", "%i", arg1, arg2); \  } while(0);  #define EXPECT_UNEQUAL_INT(summary, arg1, arg2) \  do { \  	if(arg1 == arg2) \ -		FAIL_EQUAL(summary, "%i", "%i", arg1, arg2); \ +		_TEST_FAIL_EQUAL(summary, "%i", "%i", arg1, arg2); \  } while(0);  #define EXPECT_STR(summary, arg1, arg2) \  do { \  	if( strcmp(arg1, arg2) ) \ -		FAIL_VAL(summary, "%s", "%s", arg1, arg2); \ +		_TEST_FAIL_VAL(summary, "‘%s’", "‘%s’", arg1, arg2); \  } while(0);  #define EXPECT_EQUAL_STR(summary, arg1, arg2) \  do { \  	if( strcmp(arg1, arg2) ) \ -		FAIL_EQUAL(summary, "%s", "%s", arg1, arg2); \ +		_TEST_FAIL_EQUAL(summary, "‘%s’", "‘%s’", arg1, arg2); \  } while(0);  #define EXPECT_UNEQUAL_STR(summary, arg1, arg2) \  do { \  	if( !strcmp(arg1, arg2) ) \ -		FAIL_EQUAL(summary, "%s", "%s", arg1, arg2); \ +		_TEST_FAIL_EQUAL(summary, "‘%s’", "‘%s’", arg1, arg2); \  } while(0); -#define FAIL_VAL(summary, format1, format2, expected, actual) \ +#define _TEST_FAIL_VAL(summary, format1, format2, expected, actual) \  do { \ -	puts("\e[1;41mFAIL: " summary "\e[m"); \ -	printf("  \e[1;32mexpected:\e[m " format1 \ -			"\n    \e[1;31mactual:\e[m " format2 "\n", expected, actual); \ +	printf("\e[1m    :: \e[m\e[31mFAIL: " summary "\e[m\n"); \ +	printf("\e[1m    :: \e[m\e[1;32m  expected:\e[m " format1 "\n", expected);\ +	printf("\e[1m    :: \e[m\e[1;31m    actual:\e[m " format1 "\n", actual); \  	_TEST_RETURN(true); \  } while(0) -#define FAIL_EQUAL(summary, format1, format2, arg1, arg2) \ +#define _TEST_FAIL_EQUAL(summary, format1, format2, arg1, arg2) \  do { \ -	puts("\e[1;41mFAIL: " summary "\e[m"); \ -	printf("  arg1 == \e[1;31m" format1 "\e[m\n", arg1); \ -	printf("  arg2 == \e[1;31m" format2 "\e[m\n", arg2); \ +	printf("\e[1m    :: \e[m\e[31mFAIL: " summary "\e[m\n"); \ +	printf("\e[1m    :: \e[m  arg1 == \e[1;31m" format1 "\e[m\n", arg1); \ +	printf("\e[1m    :: \e[m  arg2 == \e[1;31m" format2 "\e[m\n", arg2); \  	_TEST_RETURN(true); \  } while(0) | 
