(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();