summaryrefslogtreecommitdiffstats
path: root/3rdparty/simpletest/test/expectation_test.php
diff options
context:
space:
mode:
authorRobin Appelman <icewind@owncloud.com>2012-02-12 18:06:32 +0100
committerRobin Appelman <icewind@owncloud.com>2012-02-12 18:07:58 +0100
commit357944693017572319334aa8943e888cde0e99c0 (patch)
treed5c7e79c674c3db637865e8f14356ef2235a81aa /3rdparty/simpletest/test/expectation_test.php
parent0917bdecddd74a48ee2b21f18e184c579d156b62 (diff)
downloadnextcloud-server-357944693017572319334aa8943e888cde0e99c0.tar.gz
nextcloud-server-357944693017572319334aa8943e888cde0e99c0.zip
use SimpleTest for unit testing
includes some tests for storage providers, more to come
Diffstat (limited to '3rdparty/simpletest/test/expectation_test.php')
-rwxr-xr-x3rdparty/simpletest/test/expectation_test.php317
1 files changed, 317 insertions, 0 deletions
diff --git a/3rdparty/simpletest/test/expectation_test.php b/3rdparty/simpletest/test/expectation_test.php
new file mode 100755
index 00000000000..31fbe65e683
--- /dev/null
+++ b/3rdparty/simpletest/test/expectation_test.php
@@ -0,0 +1,317 @@
+<?php
+// $Id: expectation_test.php 2009 2011-04-28 08:57:25Z pp11 $
+require_once(dirname(__FILE__) . '/../autorun.php');
+require_once(dirname(__FILE__) . '/../expectation.php');
+
+class TestOfEquality extends UnitTestCase {
+
+ function testBoolean() {
+ $is_true = new EqualExpectation(true);
+ $this->assertTrue($is_true->test(true));
+ $this->assertFalse($is_true->test(false));
+ }
+
+ function testStringMatch() {
+ $hello = new EqualExpectation("Hello");
+ $this->assertTrue($hello->test("Hello"));
+ $this->assertFalse($hello->test("Goodbye"));
+ }
+
+ function testInteger() {
+ $fifteen = new EqualExpectation(15);
+ $this->assertTrue($fifteen->test(15));
+ $this->assertFalse($fifteen->test(14));
+ }
+
+ function testFloat() {
+ $pi = new EqualExpectation(3.14);
+ $this->assertTrue($pi->test(3.14));
+ $this->assertFalse($pi->test(3.15));
+ }
+
+ function testArray() {
+ $colours = new EqualExpectation(array("r", "g", "b"));
+ $this->assertTrue($colours->test(array("r", "g", "b")));
+ $this->assertFalse($colours->test(array("g", "b", "r")));
+ }
+
+ function testHash() {
+ $is_blue = new EqualExpectation(array("r" => 0, "g" => 0, "b" => 255));
+ $this->assertTrue($is_blue->test(array("r" => 0, "g" => 0, "b" => 255)));
+ $this->assertFalse($is_blue->test(array("r" => 0, "g" => 255, "b" => 0)));
+ }
+
+ function testHashWithOutOfOrderKeysShouldStillMatch() {
+ $any_order = new EqualExpectation(array('a' => 1, 'b' => 2));
+ $this->assertTrue($any_order->test(array('b' => 2, 'a' => 1)));
+ }
+}
+
+class TestOfWithin extends UnitTestCase {
+
+ function testWithinFloatingPointMargin() {
+ $within = new WithinMarginExpectation(1.0, 0.2);
+ $this->assertFalse($within->test(0.7));
+ $this->assertTrue($within->test(0.8));
+ $this->assertTrue($within->test(0.9));
+ $this->assertTrue($within->test(1.1));
+ $this->assertTrue($within->test(1.2));
+ $this->assertFalse($within->test(1.3));
+ }
+
+ function testOutsideFloatingPointMargin() {
+ $within = new OutsideMarginExpectation(1.0, 0.2);
+ $this->assertTrue($within->test(0.7));
+ $this->assertFalse($within->test(0.8));
+ $this->assertFalse($within->test(1.2));
+ $this->assertTrue($within->test(1.3));
+ }
+}
+
+class TestOfInequality extends UnitTestCase {
+
+ function testStringMismatch() {
+ $not_hello = new NotEqualExpectation("Hello");
+ $this->assertTrue($not_hello->test("Goodbye"));
+ $this->assertFalse($not_hello->test("Hello"));
+ }
+}
+
+class RecursiveNasty {
+ private $me;
+
+ function RecursiveNasty() {
+ $this->me = $this;
+ }
+}
+
+class OpaqueContainer {
+ private $stuff;
+ private $value;
+
+ public function __construct($value) {
+ $this->value = $value;
+ }
+}
+
+class DerivedOpaqueContainer extends OpaqueContainer {
+ // Deliberately have a variable whose name with the same suffix as a later
+ // variable
+ private $new_value = 1;
+
+ // Deliberately obscures the variable of the same name in the base
+ // class.
+ private $value;
+
+ public function __construct($value, $base_value) {
+ parent::__construct($base_value);
+ $this->value = $value;
+ }
+}
+
+class TestOfIdentity extends UnitTestCase {
+
+ function testType() {
+ $string = new IdenticalExpectation("37");
+ $this->assertTrue($string->test("37"));
+ $this->assertFalse($string->test(37));
+ $this->assertFalse($string->test("38"));
+ }
+
+ function _testNastyPhp5Bug() {
+ $this->assertFalse(new RecursiveNasty() != new RecursiveNasty());
+ }
+
+ function _testReallyHorribleRecursiveStructure() {
+ $hopeful = new IdenticalExpectation(new RecursiveNasty());
+ $this->assertTrue($hopeful->test(new RecursiveNasty()));
+ }
+
+ function testCanComparePrivateMembers() {
+ $expectFive = new IdenticalExpectation(new OpaqueContainer(5));
+ $this->assertTrue($expectFive->test(new OpaqueContainer(5)));
+ $this->assertFalse($expectFive->test(new OpaqueContainer(6)));
+ }
+
+ function testCanComparePrivateMembersOfObjectsInArrays() {
+ $expectFive = new IdenticalExpectation(array(new OpaqueContainer(5)));
+ $this->assertTrue($expectFive->test(array(new OpaqueContainer(5))));
+ $this->assertFalse($expectFive->test(array(new OpaqueContainer(6))));
+ }
+
+ function testCanComparePrivateMembersOfObjectsWherePrivateMemberOfBaseClassIsObscured() {
+ $expectFive = new IdenticalExpectation(array(new DerivedOpaqueContainer(1,2)));
+ $this->assertTrue($expectFive->test(array(new DerivedOpaqueContainer(1,2))));
+ $this->assertFalse($expectFive->test(array(new DerivedOpaqueContainer(0,2))));
+ $this->assertFalse($expectFive->test(array(new DerivedOpaqueContainer(0,9))));
+ $this->assertFalse($expectFive->test(array(new DerivedOpaqueContainer(1,0))));
+ }
+}
+
+class TransparentContainer {
+ public $value;
+
+ public function __construct($value) {
+ $this->value = $value;
+ }
+}
+
+class TestOfMemberComparison extends UnitTestCase {
+
+ function testMemberExpectationCanMatchPublicMember() {
+ $expect_five = new MemberExpectation('value', 5);
+ $this->assertTrue($expect_five->test(new TransparentContainer(5)));
+ $this->assertFalse($expect_five->test(new TransparentContainer(8)));
+ }
+
+ function testMemberExpectationCanMatchPrivateMember() {
+ $expect_five = new MemberExpectation('value', 5);
+ $this->assertTrue($expect_five->test(new OpaqueContainer(5)));
+ $this->assertFalse($expect_five->test(new OpaqueContainer(8)));
+ }
+
+ function testMemberExpectationCanMatchPrivateMemberObscuredByDerivedClass() {
+ $expect_five = new MemberExpectation('value', 5);
+ $this->assertTrue($expect_five->test(new DerivedOpaqueContainer(5,8)));
+ $this->assertTrue($expect_five->test(new DerivedOpaqueContainer(5,5)));
+ $this->assertFalse($expect_five->test(new DerivedOpaqueContainer(8,8)));
+ $this->assertFalse($expect_five->test(new DerivedOpaqueContainer(8,5)));
+ }
+
+}
+
+class DummyReferencedObject{}
+
+class TestOfReference extends UnitTestCase {
+
+ function testReference() {
+ $foo = "foo";
+ $ref = &$foo;
+ $not_ref = $foo;
+ $bar = "bar";
+
+ $expect = new ReferenceExpectation($foo);
+ $this->assertTrue($expect->test($ref));
+ $this->assertFalse($expect->test($not_ref));
+ $this->assertFalse($expect->test($bar));
+ }
+}
+
+class TestOfNonIdentity extends UnitTestCase {
+
+ function testType() {
+ $string = new NotIdenticalExpectation("37");
+ $this->assertTrue($string->test("38"));
+ $this->assertTrue($string->test(37));
+ $this->assertFalse($string->test("37"));
+ }
+}
+
+class TestOfPatterns extends UnitTestCase {
+
+ function testWanted() {
+ $pattern = new PatternExpectation('/hello/i');
+ $this->assertTrue($pattern->test("Hello world"));
+ $this->assertFalse($pattern->test("Goodbye world"));
+ }
+
+ function testUnwanted() {
+ $pattern = new NoPatternExpectation('/hello/i');
+ $this->assertFalse($pattern->test("Hello world"));
+ $this->assertTrue($pattern->test("Goodbye world"));
+ }
+}
+
+class ExpectedMethodTarget {
+ function hasThisMethod() {}
+}
+
+class TestOfMethodExistence extends UnitTestCase {
+
+ function testHasMethod() {
+ $instance = new ExpectedMethodTarget();
+ $expectation = new MethodExistsExpectation('hasThisMethod');
+ $this->assertTrue($expectation->test($instance));
+ $expectation = new MethodExistsExpectation('doesNotHaveThisMethod');
+ $this->assertFalse($expectation->test($instance));
+ }
+}
+
+class TestOfIsA extends UnitTestCase {
+
+ function testString() {
+ $expectation = new IsAExpectation('string');
+ $this->assertTrue($expectation->test('Hello'));
+ $this->assertFalse($expectation->test(5));
+ }
+
+ function testBoolean() {
+ $expectation = new IsAExpectation('boolean');
+ $this->assertTrue($expectation->test(true));
+ $this->assertFalse($expectation->test(1));
+ }
+
+ function testBool() {
+ $expectation = new IsAExpectation('bool');
+ $this->assertTrue($expectation->test(true));
+ $this->assertFalse($expectation->test(1));
+ }
+
+ function testDouble() {
+ $expectation = new IsAExpectation('double');
+ $this->assertTrue($expectation->test(5.0));
+ $this->assertFalse($expectation->test(5));
+ }
+
+ function testFloat() {
+ $expectation = new IsAExpectation('float');
+ $this->assertTrue($expectation->test(5.0));
+ $this->assertFalse($expectation->test(5));
+ }
+
+ function testReal() {
+ $expectation = new IsAExpectation('real');
+ $this->assertTrue($expectation->test(5.0));
+ $this->assertFalse($expectation->test(5));
+ }
+
+ function testInteger() {
+ $expectation = new IsAExpectation('integer');
+ $this->assertTrue($expectation->test(5));
+ $this->assertFalse($expectation->test(5.0));
+ }
+
+ function testInt() {
+ $expectation = new IsAExpectation('int');
+ $this->assertTrue($expectation->test(5));
+ $this->assertFalse($expectation->test(5.0));
+ }
+
+ function testScalar() {
+ $expectation = new IsAExpectation('scalar');
+ $this->assertTrue($expectation->test(5));
+ $this->assertFalse($expectation->test(array(5)));
+ }
+
+ function testNumeric() {
+ $expectation = new IsAExpectation('numeric');
+ $this->assertTrue($expectation->test(5));
+ $this->assertFalse($expectation->test('string'));
+ }
+
+ function testNull() {
+ $expectation = new IsAExpectation('null');
+ $this->assertTrue($expectation->test(null));
+ $this->assertFalse($expectation->test('string'));
+ }
+}
+
+class TestOfNotA extends UnitTestCase {
+
+ function testString() {
+ $expectation = new NotAExpectation('string');
+ $this->assertFalse($expectation->test('Hello'));
+ $this->assertTrue($expectation->test(5));
+ }
+}
+?> \ No newline at end of file