
#if !defined(TESTBT_HPP)
#	define TESTBT_HPP

#	if !defined(APP_HPP)
#		include <app.hpp>
#	endif

#	if !defined(APP_THP)
#		include <app.thp>
#	endif

#	if !defined(MISSION_HPP)
#		include <mission.hpp>
#	endif

#define TEST_DEBUG

	//##########################################################################
	//######################    TestBTApplication    ##########################
	//##########################################################################

	class TestBTApplication:
		public TestApplication
	{
	public:
		TestBTApplication(StreamableResourceFile *resource);
		~TestBTApplication();

      static Logical
      	ParseCommandLine(
         	int argc,
            char *argv[],
				CString *egg_notation_file_name
			);

	private:
		Registry*
			MakeRegistry();
		Entity*
			MakeViewpointEntity(Entity::MakeMessage *message);
  	};

   //##########################################################################
	//###########################    TestBTMission    ##########################
	//##########################################################################

	class TestBTMission:
   	public Mission
	{
	public:
		TestBTMission(
         NotationFile *notation_file,
         StreamableResourceFile *resources
      );
		~TestBTMission();

      Logical
      	TestInstance() const;

      void
      	CreatePlayerMessage(
            NotationFile *notation_file,
            StreamableResourceFile *resources
         );
	};

#endif
