#include "compiled.h"
#include "tested.h"
#include <dkutil/include/dkutilAllInclude.h>
#ifndef __GNUG__
#include <dkutil/math/oldmath/math_allinclude.h>
#endif

namespace dkutil{

using namespace dkutil;

int TestCommandLineParser(HINSTANCE hInstance,HINSTANCE hPrevInstance,
									 LPSTR lpCmdLine,int nShowCmd
									)
{
	//CommandLineParser Test
	typedef private_::CommandLineParser PAR;
	PAR par(lpCmdLine,nShowCmd);
	PAR::const_iterator it;
	for(it=par.begin();it != par.end();it++)
	{
		dMB("your command line",(*it).str.c_str());
	}
	par.reset(" command ok hohoho -f\" sugsig\" -a\"ddrddr\" ahoaho\"\" ",0);
	for(it=par.begin();it != par.end();it++)
	{
		dODS("sig[%s] str[%s]",(*it).sig.c_str(),(*it).str.c_str());
	}
	return 0;
}

#ifndef __GNUG__

void TestProcessTimer()
{
	{
		//ProcessTimer<ProgressClockTiemr<> > p;
		ProcessTimer<ProgressRealCPUClockTiemr<> > p;
		oldmath::dKingyoRandom_MT_NO_SETUP mt;
		int a=0;
		p.begin();
		for(int i=0;i<100;i++){
			mt.Rand();
		}
		p.end();
	}
}

void TestINIManager(){
	{
		typedef INIManager INIM;
		INIM m;
		if(false==m.reset("test02.ini")){
			MB("PARSING ERROR");
		}
		if(m.empty()){
			MB("ERROR");
		}
		for(INIM::const_section_iterator it=m.begin();it!=m.end();it++)
		{
			dODS("[%s]",(*it).first.c_str());
			for(INIM::const_key_iterator kit=(*it).second.begin();
			kit!=(*it).second.end();kit++)
			{
				dODSNoNewLine("%s = ",(*kit).first.c_str());
				(*kit).second.Data.print();
			}
		}
	}
}
#else
void TestINIManager(){
	ODS("Can't Test Mingw");
}
void TestProcessTimer(){
	TestINIManager();
	}
#endif



void TestVersionInfo(){

		const char *sig[13]={
		     "Comments"   ,      // コメント
	      "CompanyName"   ,   // 会社名
	      "FileDescription",  // 説明
	      "FileVersion"   ,   // ファイルバージョン
		    "InternalName" ,    // 内部名
	      "LegalCopyright",   // 著作権
	      "LegalTrademarks",  // 商標
	      "OriginalFilename", // 正式ファイル名
	      "PrivateBuild" ,   // プライベートビルド情報
	      "ProductName"  ,    // 製品名
	      "ProductVersion",   // 製品バージョン
	      "SpecialBuild",     // スペシャルビルド情報
				NULL
	};
	GetVersionInfo v;
	char buff[1024]="";
	size_t len = 12;
	for(size_t i = 0;i<len;i++){
		if(false==v.GetInfo("comctl32.dll",buff,sizeof(buff),sig[i]))
		{}else{
			dODS("%s = %s",sig[i],buff);
		}
	}
}


}//end of dkutil namespace
