public function CtoolsMathExpressionStackTestCase::testStack in Chaos Tool Suite (ctools) 7
Test the math expression stack system.
File
- tests/
math_expression_stack.test, line 32
Class
- CtoolsMathExpressionStackTestCase
- Tests the simple MathExpressionStack class.
Code
public function testStack() {
$stack = new ctools_math_expr_stack();
// Test the empty stack.
$this
->assertNull($stack
->last());
$this
->assertNull($stack
->pop());
// Add an element and see whether it's the right element.
$value = $this
->randomName();
$stack
->push($value);
$this
->assertIdentical($value, $stack
->last());
$this
->assertIdentical($value, $stack
->pop());
$this
->assertNull($stack
->pop());
// Add multiple elements and see whether they are returned in the right
// order.
$values = array(
$this
->randomName(),
$this
->randomName(),
$this
->randomName(),
);
foreach ($values as $value) {
$stack
->push($value);
}
// Test the different elements at different positions with the last()
// method.
$count = count($values);
foreach ($values as $key => $value) {
$this
->assertEqual($value, $stack
->last($count - $key));
}
// Pass in a non-valid number to last.
$non_valid_number = rand(10, 20);
$this
->assertNull($stack
->last($non_valid_number));
// Test the order of the poping.
$values = array_reverse($values);
foreach ($values as $key => $value) {
$this
->assertEqual($stack
->last(), $value);
$this
->assertEqual($stack
->pop(), $value);
}
$this
->assertNull($stack
->pop());
}