forked from diogolmenezes/dojo
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathheranca-trabalhador-vagabundo.php
134 lines (113 loc) · 3.45 KB
/
heranca-trabalhador-vagabundo.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
<?php
# Problema :
# Exemplo basico de herança onde existe um trabalhador, um vagabundo e ambos são pessoas.
# Ambos tem nome.
# Ambos tem status
#
# O trabalhador:
# - pode andar ate em casa e ficar com status descansando
# - pode andar ate trabalho e ficar ocm status trabalhando
# O vagabundo:
# - pode andar ate em casa e ficar com status dormindo
# - pode andar ate trabalho e ficar ocm status vagabundeando
#
# Sempre que andarem, o sistema deve retornar:
# Fulano está indo para $local
class Pessoa
{
public $Nome = "";
public $Status = "";
public function __construct($nome)
{
$this->Nome = $nome;
}
public function Andar($local, $parado = "descansando", $operando = "trabalhando")
{
if($local == "casa")
$this->Status = $parado;
else
$this->Status = $operando;
return "$this->Nome está indo para $local";
}
}
class Trabalhador extends Pessoa
{
public function __construct($nome)
{
parent::__construct($nome);
$this->Status = "Descansando";
}
}
class Vagabundo extends Pessoa
{
public function __construct($nome)
{
parent::__construct($nome);
$this->Status = "Dormindo";
}
public function Andar($local, $parado = "Dormindo", $operando = "Vagabundeando")
{
return parent::Andar($local, $parado, $operando);
}
}
// class TrabalhadorTest extends PHPUnit_Framework_TestCase
// {
// public function setUp()
// {
// $this->Trabalhador = new Trabalhador("Joao");
// }
// public function test_instancia_de()
// {
// $this->assertInstanceOf("Trabalhador", $this->Trabalhador);
// }
// public function test_deve_possuir_nome()
// {
// $this->assertEquals("Joao", $this->Trabalhador->Nome);
// }
// public function test_deve_possuir_status()
// {
// $this->assertEquals("Descansando", $this->Trabalhador->Status);
// }
// public function test_deve_andar_ate_trabalho()
// {
// $this->assertEquals("Joao está indo para empresa", $this->Trabalhador->Andar("empresa"));
// $this->assertEquals("Trabalhando", $this->Trabalhador->Status);
// }
// public function test_deve_andar_ate_casa()
// {
// $this->Trabalhador->Andar("empresa");
// $this->assertEquals("Joao está indo para casa", $this->Trabalhador->Andar("casa"));
// $this->assertEquals("Descansando", $this->Trabalhador->Status);
// }
// }
class VagabundoTest extends PHPUnit_Framework_TestCase
{
public function setUp()
{
$this->Vagabundo = new Vagabundo("Frango");
}
public function test_instancia_de()
{
$this->assertInstanceOf("Vagabundo", $this->Vagabundo);
}
public function test_deve_possuir_nome()
{
$this->assertEquals("Frango", $this->Vagabundo->Nome);
}
public function test_deve_possuir_status()
{
$this->assertEquals("Dormindo", $this->Vagabundo->Status);
}
public function test_deve_andar_ate_praia()
{
$this->assertEquals("Frango está indo para praia", $this->Vagabundo->Andar("praia"));
$this->assertEquals("Vagabundeando", $this->Vagabundo->Status);
}
public function test_deve_andar_ate_casa()
{
$this->Vagabundo->Andar("empresa");
$this->assertEquals("Frango está indo para casa", $this->Vagabundo->Andar("casa"));
$this->assertEquals("Dormindo", $this->Vagabundo->Status);
}
}
?>