source: trunk/server/www/vendors/simpletest/test/expectation_test.php @ 6

Last change on this file since 6 was 6, checked in by sander, 11 years ago

Added SimpleTest? test framework

File size: 7.3 KB
Line 
1<?php
2// $Id: expectation_test.php 1539 2007-06-09 08:35:54Z pachanga $
3require_once(dirname(__FILE__) . '/../autorun.php');
4require_once(dirname(__FILE__) . '/../expectation.php');
5
6class TestOfEquality extends UnitTestCase {
7
8    function testBoolean() {
9        $is_true = &new EqualExpectation(true);
10        $this->assertTrue($is_true->test(true));
11        $this->assertFalse($is_true->test(false));
12    }
13
14    function testStringMatch() {
15        $hello = &new EqualExpectation("Hello");
16        $this->assertTrue($hello->test("Hello"));
17        $this->assertFalse($hello->test("Goodbye"));
18    }
19
20    function testInteger() {
21        $fifteen = &new EqualExpectation(15);
22        $this->assertTrue($fifteen->test(15));
23        $this->assertFalse($fifteen->test(14));
24    }
25
26    function testFloat() {
27        $pi = &new EqualExpectation(3.14);
28        $this->assertTrue($pi->test(3.14));
29        $this->assertFalse($pi->test(3.15));
30    }
31
32    function testArray() {
33        $colours = &new EqualExpectation(array("r", "g", "b"));
34        $this->assertTrue($colours->test(array("r", "g", "b")));
35        $this->assertFalse($colours->test(array("g", "b", "r")));
36    }
37
38    function testHash() {
39        $is_blue = &new EqualExpectation(array("r" => 0, "g" => 0, "b" => 255));
40        $this->assertTrue($is_blue->test(array("r" => 0, "g" => 0, "b" => 255)));
41        $this->assertFalse($is_blue->test(array("r" => 0, "g" => 255, "b" => 0)));
42    }
43
44    function testHashWithOutOfOrderKeysShouldStillMatch() {
45        $any_order = &new EqualExpectation(array('a' => 1, 'b' => 2));
46        $this->assertTrue($any_order->test(array('b' => 2, 'a' => 1)));
47    }
48}
49
50class TestOfWithin extends UnitTestCase {
51
52    function testWithinFloatingPointMargin() {
53        $within = new WithinMarginExpectation(1.0, 0.2);
54        $this->assertFalse($within->test(0.7));
55        $this->assertTrue($within->test(0.8));
56        $this->assertTrue($within->test(0.9));
57        $this->assertTrue($within->test(1.1));
58        $this->assertTrue($within->test(1.2));
59        $this->assertFalse($within->test(1.3));
60    }
61
62    function testOutsideFloatingPointMargin() {
63        $within = new OutsideMarginExpectation(1.0, 0.2);
64        $this->assertTrue($within->test(0.7));
65        $this->assertFalse($within->test(0.8));
66        $this->assertFalse($within->test(1.2));
67        $this->assertTrue($within->test(1.3));
68    }
69}
70
71class TestOfInequality extends UnitTestCase {
72
73    function testStringMismatch() {
74        $not_hello = &new NotEqualExpectation("Hello");
75        $this->assertTrue($not_hello->test("Goodbye"));
76        $this->assertFalse($not_hello->test("Hello"));
77    }
78}
79
80class RecursiveNasty {
81    var $_me;
82
83    function RecursiveNasty() {
84        $this->_me = $this;
85    }
86}
87
88class TestOfIdentity extends UnitTestCase {
89
90    function testType() {
91        $string = &new IdenticalExpectation("37");
92        $this->assertTrue($string->test("37"));
93        $this->assertFalse($string->test(37));
94        $this->assertFalse($string->test("38"));
95    }
96
97    function _testNastyPhp5Bug() {
98        $this->assertFalse(new RecursiveNasty() != new RecursiveNasty());
99    }
100
101    function _testReallyHorribleRecursiveStructure() {
102        $hopeful = &new IdenticalExpectation(new RecursiveNasty());
103        $this->assertTrue($hopeful->test(new RecursiveNasty()));
104    }
105}
106
107class DummyReferencedObject{}
108
109class TestOfReference extends UnitTestCase {
110
111    function testReference() {
112        $foo = "foo";
113        $ref =& $foo;
114        $not_ref = $foo;
115        $bar = "bar";
116
117        $expect = &new ReferenceExpectation($foo);
118        $this->assertTrue($expect->test($ref));
119        $this->assertFalse($expect->test($not_ref));
120        $this->assertFalse($expect->test($bar));
121    }
122
123    function testObjectsReferencesDualityForPhp5AndPhp4() {
124        $dummy = new DummyReferencedObject();
125        $ref =& $dummy;
126        $not_ref = $dummy;
127
128        $hopeful = &new ReferenceExpectation($dummy);
129        $this->assertTrue($hopeful->test($ref));
130
131        if (version_compare(phpversion(), '5') >= 0) {
132            $this->assertTrue($hopeful->test($not_ref));
133        } else {
134            $this->assertFalse($hopeful->test($not_ref));
135        }
136    }
137
138    function testReallyHorribleRecursiveStructure() {
139        $nasty = new RecursiveNasty();
140        $ref =& $nasty;
141        $hopeful = &new ReferenceExpectation($nasty);
142        $this->assertTrue($hopeful->test($ref));
143    }
144}
145
146class TestOfNonIdentity extends UnitTestCase {
147
148    function testType() {
149        $string = &new NotIdenticalExpectation("37");
150        $this->assertTrue($string->test("38"));
151        $this->assertTrue($string->test(37));
152        $this->assertFalse($string->test("37"));
153    }
154}
155
156class TestOfPatterns extends UnitTestCase {
157
158    function testWanted() {
159        $pattern = &new PatternExpectation('/hello/i');
160        $this->assertTrue($pattern->test("Hello world"));
161        $this->assertFalse($pattern->test("Goodbye world"));
162    }
163
164    function testUnwanted() {
165        $pattern = &new NoPatternExpectation('/hello/i');
166        $this->assertFalse($pattern->test("Hello world"));
167        $this->assertTrue($pattern->test("Goodbye world"));
168    }
169}
170
171class ExpectedMethodTarget {
172    function hasThisMethod() {}
173}
174
175class TestOfMethodExistence extends UnitTestCase {
176
177    function testHasMethod() {
178        $instance = &new ExpectedMethodTarget();
179        $expectation = &new MethodExistsExpectation('hasThisMethod');
180        $this->assertTrue($expectation->test($instance));
181        $expectation = &new MethodExistsExpectation('doesNotHaveThisMethod');
182        $this->assertFalse($expectation->test($instance));
183    }
184}
185
186class TestOfIsA extends UnitTestCase {
187
188    function testString() {
189        $expectation = &new IsAExpectation('string');
190        $this->assertTrue($expectation->test('Hello'));
191        $this->assertFalse($expectation->test(5));
192    }
193
194    function testBoolean() {
195        $expectation = &new IsAExpectation('boolean');
196        $this->assertTrue($expectation->test(true));
197        $this->assertFalse($expectation->test(1));
198    }
199
200    function testBool() {
201        $expectation = &new IsAExpectation('bool');
202        $this->assertTrue($expectation->test(true));
203        $this->assertFalse($expectation->test(1));
204    }
205
206    function testDouble() {
207        $expectation = &new IsAExpectation('double');
208        $this->assertTrue($expectation->test(5.0));
209        $this->assertFalse($expectation->test(5));
210    }
211
212    function testFloat() {
213        $expectation = &new IsAExpectation('float');
214        $this->assertTrue($expectation->test(5.0));
215        $this->assertFalse($expectation->test(5));
216    }
217
218    function testReal() {
219        $expectation = &new IsAExpectation('real');
220        $this->assertTrue($expectation->test(5.0));
221        $this->assertFalse($expectation->test(5));
222    }
223
224    function testInteger() {
225        $expectation = &new IsAExpectation('integer');
226        $this->assertTrue($expectation->test(5));
227        $this->assertFalse($expectation->test(5.0));
228    }
229
230    function testInt() {
231        $expectation = &new IsAExpectation('int');
232        $this->assertTrue($expectation->test(5));
233        $this->assertFalse($expectation->test(5.0));
234    }
235}
236
237class TestOfNotA extends UnitTestCase {
238
239    function testString() {
240        $expectation = &new NotAExpectation('string');
241        $this->assertFalse($expectation->test('Hello'));
242        $this->assertTrue($expectation->test(5));
243    }
244}
245?>
Note: See TracBrowser for help on using the repository browser.