[Home]LeJeuDuFrigo/AtelierOctobre2004TremeurEtCedric

AgileFrance | LeJeuDuFrigo | DernieresNouvelles | Preferences | AideEnLigne

TremeurBalbous et CedricGirard, langage PHP, outil de test : simpletest

Un seul fichier de code, pour la simplicité de développement.

<?
error_reporting(E_ALL);

require_once('simpletest/unit_tester.php');
require_once('simpletest/reporter.php');

class CFrigo
	{
	var $temperature, $commande=100;
	var $journal=array();
	
	function CFrigo()
		{
		$this->temperature=Number_Format(15, 1);
		$this->Memorise();
		}
		
	function Action($action)
		{
		if($action!=-1 and $action<=200 and is_int($action)) 
			{
			$this->commande=$action;
			if(count($this->journal)<5) $id=0; else $id=count($this->journal)-5;
			$Ti5=$this->journal[$id]['temperature'];
			$this->temperature=$this->temperature+($this->commande/10+2-$Ti5)/3;
			$this->Memorise();
			}
		}
		
	function Temperature()
		{
		return Number_Format($this->temperature, 5);
		}
		
	function Memorise()
		{
		$this->journal[]=array('temperature'=>$this->Temperature(), 'commande'=>$this->commande);
		}

	function Resultat()
		{
		$resultat=array('t T C');
		foreach ($this->journal as $id=>$ligne) $resultat[]=$id.' '.$ligne['temperature'].' '.$ligne['commande'];
		return $resultat;
		}
	}

class testFrigo extends UnitTestCase
	{
	var $frigo;

	function setUp()
		{
		$this->frigo=new CFrigo();
		}
	
	function VerifieValeurs($temperature, $commande)
		{
		$this->AssertEqual($temperature, $this->frigo->Temperature());
		$this->AssertEqual($commande, $this->frigo->commande);
		}

	function testValeursInitiales()
		{
		$this->VerifieValeurs('15.0', 100);
		}
		
	function testActionCommande()
		{
		$this->VerifieValeurs(15, 100);
		
		$this->frigo->Action(50);
		$this->VerifieValeurs(12.33333, 50);

		$this->frigo->Action('');
		$this->VerifieValeurs(12.33333, 50);

		$this->frigo->Action(-1);
		$this->VerifieValeurs(12.33333, 50);

		$this->frigo->Action(201);
		$this->VerifieValeurs(12.33333, 50);
		}
		
	function testRecapitulatif()
		{
		$this->VerifieValeurs(15, 100);
		
		$this->frigo->Action(50);
		$this->VerifieValeurs(12.33333, 50);

		$this->frigo->Action(75);
		$this->VerifieValeurs(10.5, 75);

		$this->frigo->Action('7lib');
		$this->VerifieValeurs(10.5, 75);

		$this->frigo->Action('Q');
		$tab=$this->frigo->resultat();
		$this->AssertEqual(4, count($tab));
		$this->AssertEqual('t T C', $tab[0]);
		$this->AssertEqual('0 15.00000 100', $tab[1]);
		$this->AssertEqual('1 12.33333 50', $tab[2]);
		$this->AssertEqual('2 10.50000 75', $tab[3]);
		}
		
	function testEvolutionTemperature()
		{
		$this->VerifieValeurs(15, 100);
		
		$this->frigo->Action(100);
		$this->VerifieValeurs(14, 100);
		$this->frigo->Action(100);
		$this->VerifieValeurs(13, 100);
		$this->frigo->Action(100);
		$this->VerifieValeurs(12, 100);
		$this->frigo->Action(100);
		$this->VerifieValeurs(11, 100);
		$this->frigo->Action(100);
		$this->VerifieValeurs(10, 100);
		$this->frigo->Action(100);
		$this->VerifieValeurs(9.33333, 100);
		$this->frigo->Action(100);
		$this->VerifieValeurs(9, 100);
		}

	function testEvolutionCommande()
		{
		$this->VerifieValeurs(15, 100);
		
		$this->frigo->Action(50);
		$this->VerifieValeurs(12.33333, 50);
		$this->frigo->Action(50);
		$this->VerifieValeurs(9.66667, 50);
		$this->frigo->Action(50);
		$this->VerifieValeurs(7, 50);
		$this->frigo->Action(50);
		$this->VerifieValeurs(4.33333, 50);
		$this->frigo->Action(75);
		$this->VerifieValeurs(2.5, 75);
		$this->frigo->Action(75);
		$this->VerifieValeurs(1.55556, 75);
		$this->frigo->Action(75);
		$this->VerifieValeurs(1.5, 75);
		}
		
	function testDivision()
		{
		$this->AssertEqual(3.33333, Round(10/3, 5));
		}
	}
	
$test = &new testFrigo('All tests');
$test->run(new HtmlReporter());
?>

AgileFrance | LeJeuDuFrigo | DernieresNouvelles | Preferences | AideEnLigne
Edit this page | View other revisions
Last edited October 8, 2007 3:25 pm (diff)
Search: