Skip to content

Instantly share code, notes, and snippets.

@wanis
Created December 18, 2013 18:40
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save wanis/8027500 to your computer and use it in GitHub Desktop.
Save wanis/8027500 to your computer and use it in GitHub Desktop.
first public TDD in Kaunas!!!
<?php
class Test extends PHPUnit_Framework_TestCase {
/**
* @var Calc
*/
private $calc;
protected function setUp() {
$this->calc = new Calc();
}
public function test_sums_2_numbers()
{
$this->assertSame(2, $this->calc->calculate('1 + 1'));
}
public function test_makes_minus_on_2_numbers()
{
$this->assertSame(1, $this->calc->calculate('2 - 1'));
}
public function test_calc_can_multiply()
{
$this->assertSame(6, $this->calc->calculate('2 * 3'));
}
public function test_multiple_operands()
{
$this->assertSame(2, $this->calc->calculate('2 + 2 - 2'));
}
public function test_operator_position()
{
$this->assertSame(6, $this->calc->calculate('2 + 2 * 2'));
}
}
class Calc
{
public function calculate($string)
{
$elements = explode(' ', $string);
return $this->parseArray($elements);
}
protected function parseArray($elements)
{
if (count($elements) == 1) {
return array_pop($elements);
}
$left = array_shift($elements);
$operand = array_shift($elements);
switch($operand) {
case '+':
return $left + $this->parseArray($elements);
case '-':
return $left - $this->parseArray($elements);
case '*':
return $left * $this->parseArray($elements);
}
}
}
@tygas
Copy link

tygas commented Dec 18, 2013

Ačiū už pamoką

@darles
Copy link

darles commented Dec 18, 2013

@vzailskas
Copy link

@dominykas
Copy link

@okaminu
Copy link

okaminu commented Dec 18, 2013

@acirtautas
Copy link

EVAL EVERYTHING !!!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment