bin/ai/regression/regression.nut
author truelight
Mon, 19 Mar 2007 13:29:28 +0000
branchnoai
changeset 9481 39ba1c349d3d
parent 9470 4593c953a276
child 9485 df09b849ca60
permissions -rw-r--r--
(svn r9330) [NoAI] -Add: added -r as param for regression run.sh script to start the game, so you can check if it build what we expected him to for yourself
class Regression extends AIController {
	stop     = false;

	function Start();
	function Stop();

	constructor() {	}
}



function Regression::TestInit()
{
	print("");
	print("--TestInit--");
	print(" TickTest: " + this.GetTick());
	Sleep(1);
	print(" TickTest: " + this.GetTick());
}

function Regression::Base()
{
	local base = AIBase();

	print("");
	print("--AIBase--");
	print("  Rand():       " + base.Rand());
	print("  Rand():       " + base.Rand());
	print("  Rand():       " + base.Rand());
	print("  RandRange(0): " + base.RandRange(0));
	print("  RandRange(0): " + base.RandRange(0));
	print("  RandRange(0): " + base.RandRange(0));
	print("  RandRange(1): " + base.RandRange(1));
	print("  RandRange(1): " + base.RandRange(1));
	print("  RandRange(1): " + base.RandRange(1));
	print("  RandRange(2): " + base.RandRange(2));
	print("  RandRange(2): " + base.RandRange(2));
	print("  RandRange(2): " + base.RandRange(2));
	print("  RandRange(9): " + base.RandRange(9));
	print("  RandRange(9): " + base.RandRange(9));
	print("  RandRange(9): " + base.RandRange(9));
	print("  Chance(1, 2): " + base.Chance(1, 2));
	print("  Chance(1, 2): " + base.Chance(1, 2));
	print("  Chance(1, 2): " + base.Chance(1, 2));
}

function Regression::Cargo()
{
	local cargo = AICargo();

	print("");
	print("--AICargo--");
	for (local i = -1; i < 15; i++) {
		print("  Cargo " + i);
		print("    GetCargoLabel():         '" + cargo.GetCargoLabel(i)+ "'");
		print("    IsFreight():             " + cargo.IsFreight(i));
		print("    GetCargoIncome(0, 0):    " + cargo.GetCargoIncome(0, 0, i));
		print("    GetCargoIncome(10, 10):  " + cargo.GetCargoIncome(10, 10, i));
		print("    GetCargoIncome(100, 10): " + cargo.GetCargoIncome(100, 10, i));
		print("    GetCargoIncome(10, 100): " + cargo.GetCargoIncome(10, 100, i));
	}
}

function Regression::Company()
{
	local company = AICompany();

	print("");
	print("--Company--");
	print("  SetCompanyName():     " + company.SetCompanyName("Regression"));
	print("  SetCompanyName():     " + company.SetCompanyName("Regression"));
	print("  GetCompanyName():     " + company.GetCompanyName());
	print("  GetCompanyValue():    " + company.GetCompanyValue());
	print("  GetBankBalance():     " + company.GetBankBalance());
	print("  GetLoanAmount():      " + company.GetLoanAmount());
	print("  GetMaxLoanAmount():   " + company.GetMaxLoanAmount());
	print("  GetLoanInterval():    " + company.GetLoanInterval());
	print("  SetLoanAmount(1):     " + company.SetLoanAmount(1));
	print("  SetLoanAmount(100):   " + company.SetLoanAmount(100));
	print("  SetLoanAmount(10000): " + company.SetLoanAmount(10000));
	print("  GetBankBalance():     " + company.GetBankBalance());
	print("  GetLoanAmount():      " + company.GetLoanAmount());
	print("  SetLoanAmount(10000): " + company.SetLoanAmount(company.GetMaxLoanAmount()));
	print("  GetBankBalance():     " + company.GetBankBalance());
	print("  GetLoanAmount():      " + company.GetLoanAmount());
}

function Regression::Industry()
{
	local industry = AIIndustry();
	local j = 0;

	print("");
	print("--Industry--");
	print("  GetMaxIndustryID():  " + industry.GetMaxIndustryID());
	print("  GetIndustryCount():  " + industry.GetIndustryCount());
	for (local i = -1; i < industry.GetMaxIndustryID(); i++) {
		if (industry.IsValidIndustry(i)) j++;
		print("  Industry " + i);
		print("    IsValidIndustry(): " + industry.IsValidIndustry(i));
		print("    GetName():         " + industry.GetName(i));
		print("    GetLocation():     " + industry.GetLocation(i));
	}
	print("  Valid Industries:    " + j);
	print("  GetIndustryCount():  " + industry.GetIndustryCount());
}

function Regression::Map()
{
	local map = AIMap();

	print("");
	print("--Map--");
	print("  GetMapSize():     " + map.GetMapSize());
	print("  GetMapSizeX():    " + map.GetMapSizeX());
	print("  GetMapSizeY():    " + map.GetMapSizeY());
	print("  GetTileX(123):    " + map.GetTileX(123));
	print("  GetTileY(123):    " + map.GetTileY(123));
	print("  IsValidTile(123): " + map.IsValidTile(123));
	print("  GetTileX(124):    " + map.GetTileX(124));
	print("  GetTileY(124):    " + map.GetTileY(124));
	print("  IsValidTile(124): " + map.IsValidTile(124));
	print("  IsValidTile(0):   " + map.IsValidTile(0));
	print("  IsValidTile(-1):  " + map.IsValidTile(-1));
	print("  IsValidTile():    " + map.IsValidTile(map.GetMapSize()));
	print("  IsValidTile():    " + map.IsValidTile(map.GetMapSize() - 1));
}

function Regression::Town()
{
	local town = AITown();
	local j = 0;

	print("");
	print("--Town--");
	print("  GetMaxTownID():    " + town.GetMaxTownID());
	print("  GetTownCount():    " + town.GetTownCount());
	for (local i = -1; i < town.GetMaxTownID(); i++) {
		if (town.IsValidTown(i)) j++;
		print("  Town " + i);
		print("    IsValidTown():   " + town.IsValidTown(i));
		print("    GetName():       " + town.GetName(i));
		print("    GetPopulation(): " + town.GetPopulation(i));
		print("    GetLocation():   " + town.GetLocation(i));
	}
	print("  Valid Industries:  " + j);
	print("  GetTownCount():    " + town.GetTownCount());
}


function Regression::Start()
{
	this.TestInit();
	this.Base();
	this.Cargo();
	this.Company();
	this.Industry();
	this.Map();
	this.Town();
}

function Regression::Stop()
{
	this.stop = true;
}

class FRegression extends AIFactory {
	function GetAuthor()      { return "OpenTTD Dev Team"; }
	function GetName()        { return "Regression"; }
	function GetDescription() { return "This runs regression-tests on all commands. On the same map the result should always be the same."; }
	function GetVersion()     { return 1; }
	function GetDate()        { return "2007-03-18"; }
	function CreateInstance() { return "Regression"; }
}

/* Only enable this if you want to run the regression test.
 *  The best way to do it is to disable all other AIs, so you are sure thisone
 *  kicks in, and use a pre-made savegame of which you already know the result.
 * You can compare the output from this AI with the pre-made one, and it should
 *  match. If not, something went wrong. */
iFRegression <-FRegression();