/*
 * testdata.c   
 *     -- Defines a number of test images, as static constant data.
 *
 *        G_aTests[]  = an array of test images.
 *        G_nTests    = number of elements (image_t) in G_aTests[].
 */


#include "image.h"  /* image_t */


/*********************************************************************
 * The test images :
 */

#define X 0xff
#define e 0x00


/* Test for connected-component finding.  */
static pix_t data_test1[] = 
	{ X, X, X, e, X, e,
	  e, e, X, e, X, e,
	  e, e, X, X, X, e };
static image_t const img_test1 = 
	{
	6, /*xsize */
	3, /*ysize */
	data_test1
	};


/* Test for connected-component finding.  */
static pix_t data_test2[] = 
	{ X, X, e, X, X, X, e, 
	  e, X, X, X, e, X, X };
static image_t const img_test2 = 
	{
	7, /*xsize */
	2, /*ysize */
	data_test2
	};


/* Test for connected-component finding.  */
static pix_t data_test3[] = 
	{ X, X, e, X, X, X, e, 
	  e, X, e, X, e, X, e,
	  e, X, X, X, e, X, X };
static image_t const img_test3 = 
	{
	7, /*xsize */
	3, /*ysize */
	data_test3
	};


/* Test for connected-component finding.  */
static pix_t data_test4[] = 
	{ X, X, e, X, X, X, e, 
	  e, X, e, X, e, X, e,
	  e, X, e, X, e, X, X,
	  e, X, X, X, e, e, e };
static image_t const img_test4 = 
	{
	7, /*xsize */
	4, /*ysize */
	data_test4
	};


/* Test for connected-component finding. */
static pix_t data_test5[] = 
	{ e, e, e, e, e,   e, e, e, e, e,   e, e, e, e, X,  
	  e, e, e, e, e,   X, X, X, X, X,   X, e, e, e, X,  
	  e, e, e, e, e,   X, X, e, e, e,   e, e, e, e, X,  
	  e, X, X, X, X,   X, X, e, e, X,   e, e, e, e, X,  
	  e, e, e, e, X,   X, X, e, e, X,   e, e, e, e, X,  

	  e, e, e, e, X,   X, X, X, X, X,   X, X, e, e, X,  
	  e, e, e, e, e,   e, e, e, e, e,   e, X, X, e, X,  
	  e, e, e, e, e,   e, e, X, e, e,   e, X, X, e, X,  
	  e, X, e, X, X,   e, X, X, e, e,   e, X, e, e, X,  
	  X, X, e, X, X,   e, X, e, e, X,   X, X, e, e, X,  

	  e, X, e, X, X,   e, X, e, e, e,   X, X, e, e, X,  
	  X, X, X, X, X,   X, X, X, e, e,   e, X, e, e, X,  
	  X, e, e, e, e,   e, e, e, e, e,   e, X, e, e, X,  
	  X, e, e, X, X,   X, X, X, X, X,   X, X, e, e, X,  
	  X, e, e, e, e,   e, e, e, e, e,   e, e, e, e, X,  

	  X, X, X, X, X,   X, X, X, X, X,   X, X, X, X, X };
static image_t const img_test5 = 
	{
	15, /*xsize */
	16, /*ysize */
	data_test5
	};


/* Test for connected-component finding. */
static pix_t data_test6[] = 
	{ X, X, X, X, X, X, X, X, X, X, X,
	  X, e, e, e, e, e, e, e, e, e, X,
	  X, e, e, e, X, X, X, X, e, e, X,
	  X, e, e, e, X, e, e, X, e, e, X,
	  X, e, e, X, X, e, e, X, e, e, X,
	  X, e, e, X, e, e, e, X, e, e, X,
	  X, X, X, X, e, e, e, X, e, e, X,
	  e, e, e, e, e, e, e, X, e, e, X,
	  e, e, e, e, e, e, e, X, X, X, X };
static image_t const img_test6 = 
	{
	11, /*xsize */
	 9, /*ysize */
	data_test6
	};


/* Test for connected-component finding.  */
static pix_t data_test7[] = 
	{ X, X, X, X, X, e, e, X, X, X, X,
	  X, e, e, e, X, e, e, e, e, e, X,
	  X, e, e, e, X, e, e, X, e, e, X,
	  X, e, e, e, X, e, e, X, e, e, X,
	  X, e, e, X, X, e, e, X, e, e, X,
	  X, e, e, X, e, e, e, X, e, e, X,
	  X, X, X, X, e, e, e, X, e, e, X,
	  e, e, e, e, e, e, e, X, e, e, X,
	  e, e, e, e, e, e, e, X, X, X, X };
static image_t const img_test7 = 
	{
	11, /*xsize */
	 9, /*ysize */
	data_test7
	};


/* Test for computed center of mass, and {x|y}_{min|max}.
 * Also test for 4-connected vs. 8-connected regions.
 */
static pix_t data_test8[] = 
	{ e, X, e, e, e,   e, e, e, e, e,   e, e, e, e, e, 
	  X, X, X, e, e,   e, e, e, e, e,   e, X, X, X, e, 
	  e, X, e, X, X,   X, X, X, X, e,   X, X, X, X, X, 
	  e, e, e, X, e,   e, e, e, X, e,   X, X, X, X, X, 
	  e, e, e, X, e,   X, X, e, X, e,   X, X, X, X, X, 
	  e, e, e, X, e,   X, X, e, X, e,   e, X, X, X, e, 
	  e, e, e, X, e,   e, e, e, X, e,   e, e, e, e, e, 
	  e, e, e, X, X,   X, X, X, X, e,   e, e, e, e, e };
static image_t const img_test8 = 
	{
	15, /*xsize */
	 8, /*ysize */
	data_test8
	};



/* Test for maximum number of components in an image.  */
static pix_t data_test9[] = 
	{ X, e, X, e, X, 
	  e, X, e, X, e, 
	  X, e, X, e, X, 
	  e, X, e, X, e, 
	  X, e, X, e, X };
static image_t const img_test9 = 
	{
	 5, /*xsize */
	 5, /*ysize */
	data_test9
	};



#undef e 
#undef X 




/*********************************************************************
 * Define the exported quantities 'G_aTests[]' and 'G_nTests' :
 */

image_t const * G_aTests[] =
	{
	&img_test1,
	&img_test2,
	&img_test3,
	&img_test4,
	&img_test5,
	&img_test6,
	&img_test7,
	&img_test8,
	&img_test9,
	};

int const G_nTests = sizeof(G_aTests) / sizeof(image_t*);