演習にしたがって取締役の処理を追加します。
具体的には取締役クラスの作成および社長クラスで取締役クラスを生成する処理を追加します。
まずはUnitTestを作成します。 ソースは次の通り、
<?php
require_once 'PHPUnit.php';
require_once 'torishimariyaku.php';
class torishimariyakuTest extends PHPUnit_TestCase {
var $shain;
function torishimariyakuTest($name)
{
$this->PHPUnit_TestCase($name);
}
function setup()
{
$this->shain = new Torishimariyaku();
}
function testStandup()
{
$ret = $this->shain->standup();
$this->assertEquals("取締役がふんぞりかえって立ちました。\n", $ret);
}
function testKyuryou()
{
$kyuryou = $this->shain->getKyuryou(100);
$this->assertEquals(402, $kyuryou);
}
}
?>
<?php
// UnitTest
require_once 'PHPUnit/GUI/HTML.php';
require_once 'Tests/shachouTest.php';
require_once 'Tests/tantouTest.php';
require_once 'Tests/shuninTest.php';
require_once 'Tests/buchouTest.php';
require_once 'Tests/torishimariyakuTest.php';
// run Test Suites
$suite = array();
array_push($suite, new PHPUnit_TestSuite("shachouTest"));
array_push($suite, new PHPUnit_TestSuite("tantouTest"));
array_push($suite, new PHPUnit_TestSuite("shuninTest"));
array_push($suite, new PHPUnit_TestSuite("buchouTest"));
array_push($suite, new PHPUnit_TestSuite("torishimariyakuTest"));
$result = new PHPUnit_GUI_HTML($suite);
$result->show();
?>
<?php
require_once 'shain.php';
/*
* 取締役
*/
class Torishimariyaku extends Shain {
function standup()
{
return "取締役がふんぞりかえって立ちました。\n";
}
function getKyuryou($kihonkyu)
{
return $kihonkyu * 4 + 2;
}
}
?>
![[取締役テスト結果]](images/step3-01.jpg)
社長クラスのUnitTestに取締役を指定したときの処理を追加します。
テストのソースは次のようになります。
<?php
// $Id: 3-step3.html 1 2009-03-19 11:17:04Z atsushifx $
require_once 'PHPUnit.php';
require_once 'shachou.php';
class shachouTest extends PHPUnit_TestCase {
var $shachou;
function shachouTest($name)
{
$this->PHPUnit_TestCase($name);
}
function setup()
{
$this->shachou = new Shachou();
}
function testStandup()
{
$_POST["tantou"] = "担当"; $_POST["kihonkyu"] = "100";
$ret = $this->shachou->main();
$this->assertEquals("担当が普通に立ちました。\n私の給料は100円です。\n", $ret);
$_POST["tantou"] = "主任"; $_POST["kihonkyu"] = "100";
$ret = $this->shachou->main();
$this->assertEquals("主任がすばやく立ちました。\n私の給料は201円です。\n", $ret);
$_POST["tantou"] = "部長"; $_POST["kihonkyu"] = "100";
$ret = $this->shachou->main();
$this->assertEquals("部長がだるそうに立ちました。\n私の給料は300円です。\n", $ret);
$_POST["tantou"] = "取締役"; $_POST["kihonkyu"] = "100";
$ret = $this->shachou->main();
$this->assertEquals("取締役がふんぞりかえって立ちました。\n私の給料は402円です。\n", $ret);
}
}
?>
<?php
// $Id: 3-step3.html 1 2009-03-19 11:17:04Z atsushifx $
require_once 'tantou.php';
require_once 'shunin.php';
require_once 'buchou.php';
require_once 'torishimariyaku.php';
class Shachou {
function main()
{
switch ($_POST["tantou"]) {
case "担当":
$shain = new Tantou();
break;
case "主任":
$shain = new Shunin();
break;
case "部長":
$shain = new Buchou();
break;
case "取締役":
$shain = new Torishimariyaku();
break;
}
$ret = "";
$ret .= $shain->standup();
$kihonkyu = $_POST["kihonkyu"];
$kyuryou = $shain->getKyuryou($kihonkyu);
$ret .= "私の給料は" . $kyuryou . "円です。\n";
return $ret;
}
}
?>
![[全テストの実行結果]](images/step3-02.jpg)
UIに取締役を追加します。
ソースは次のようになります。
<?php // $Id: 3-step3.html 1 2009-03-19 11:17:04Z atsushifx $ require_once 'shachou.php'; ?> <head> <title>standup step2</title> <body> <form method="post" action="<?= $_SERVER["PHP_SELF"];?>"> 社長: <select name="tantou"> <option>担当 <option>主任 <option>部長 <option>取締役 </select> 基本給=<input type="text" name="kihonkyu" size="10"> <input type="submit" name="standup" value="立ちなさい"> </form> <p> <?php $shachou = new Shachou(); echo "\n"; echo $shachou->main(); echo "\n"; ?>
実行して、動作を確認します。テストがすべて通っていれば正常に動作するはずです。
以下のリンクで動作が確認できます。
[step3 動作デモ]
以上で、step3は終了です。
Copyright © 1997-2003 by A.G.Labo
$Revision: 1 $