#include "munga.h"
#pragma hdrstop

#include "namelist.h"
#include "notation.h"
//
//-------------------------------------------------
// Math
//-------------------------------------------------
//
#include "rect2d.h"
#include "angle.h"
#include "random.h"
#include "vector4d.h"
#include "rotation.h"
#include "origin.h"
#include "linmtrx.h"
#include "matrix.h"
#include "unitvec.h"
#include "ray.h"
#include "normal.h"
//
//----------------
// Spatial library
//----------------
//
#include "boxsolid.h"
//
//------------------
// Connection Engine
//------------------
//
#include "vchain.h"
#include "tree.h"
#include "table.h"
#include "hash.h"
#include "time.h"
#include "receiver.h"

// #define RUN_APPLICATION

char GlobalEggFileName[80];

int main()
{
	#if defined(TEST_CLASS)
	//
	//-----------------------
	// Test NameList classes
	//-----------------------
	//
	#if 1
		#if 1
			ObjectNameList::TestClass();
			NameList::TestClass();
			AlphaNameList::TestClass();
			NotationFile::TestClass();
		#endif

		#if 1
			ResourceFile::TestClass();
			StreamableResourceFile::TestClass();
		#endif

		//
		//------------------
		// Test string class
		//------------------
		//
		#if 1
			CString::TestClass();
		#endif

		//
		//----------------
		// Test Math brick
		//----------------
		//
		#if 1
			RandomGenerator::TestClass();
			Radian::TestClass();
			Degree::TestClass();
			SinCosPair::TestClass();
			Vector3D::TestClass();
			LBE3Vector3D::TestClass();
			TIVector3D::TestClass();
			Vector4D::TestClass();
			Point3D::TestClass();
			UnitVector::TestClass();
			Ray::TestClass();
			EulerAngles::TestClass();
			Quaternion::TestClass();
			Origin::TestClass();
			AffineMatrix::TestClass();
			LinearMatrix::TestClass();
			Matrix4x4::TestClass();
			Normal::TestClass();
			Rectangle2D::TestClass();
		#endif

		//
		//-----------------
		// Test spatializer
		//-----------------
		//
		#if 1
			BoundingBox::TestClass();
			BoxedSolid::TestClass();
		#endif

		//
		//------------------
		// Test time manager
		//------------------
		//
		#if 1
			Time::TestClass();
		#endif

		//
		//------------------------
		// Test connection library
		//------------------------
		//
		#if 1
			Chain::TestClass();
			SChain::TestClass();
			VChain::TestClass();
			Tree::TestClass();
			Table::TestClass();
			Hash::TestClass();
		#endif

		//
		//------------------
		// Test Memory brick
		//------------------
		//
		#if 1
			MemoryBlock::TestClass();
			MemoryStack::TestClass();
		#endif

		//
		//----------------------------
		// Test dynamic dispatch brick
		//----------------------------
		//
		#if 1
			MessageTap::TestClass();
			Receiver::MessageHandlerSet::TestClass();
			Derivation::TestClass();
			Receiver::TestClass();
		#endif
	#endif

	//
	//--------------------------------------------
	// Stop registering, and tell us about its use
	//--------------------------------------------
	//
	Tell("Exiting\n");
	#endif

	return 0;
}
