From 66da3c59288b18531f1a8ca5092f8d380638646a Mon Sep 17 00:00:00 2001 From: Sam Minnee Date: Tue, 23 Feb 2010 23:20:31 +0000 Subject: [PATCH] MINOR: More tests for array data git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/branches/2.4@99750 467b73ca-7a2a-4603-9d3b-597d59a354a9 --- tests/ArrayDataTest.php | 88 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 87 insertions(+), 1 deletion(-) diff --git a/tests/ArrayDataTest.php b/tests/ArrayDataTest.php index 56904151e..730f638eb 100644 --- a/tests/ArrayDataTest.php +++ b/tests/ArrayDataTest.php @@ -1,7 +1,7 @@ assertEquals("Varchar", get_class($arrayData->A)); $this->assertEquals("ArrayData", get_class($arrayData->B)); } + + function testWrappingANonEmptyObjectWorks() { + $object = new ArrayDataTest_NonEmptyObject(); + $this->assertTrue(is_object($object)); + + $arrayData = new ArrayData($object); + + $this->assertEquals("Apple", $arrayData->getField('a')); + $this->assertEquals("Banana", $arrayData->getField('b')); + $this->assertFalse($arrayData->hasField('c')); + } + + function testWrappingAnEmptyObjectWorks() { + $object = (object) array(); + $this->assertTrue(is_object($object)); + + $arrayData = new ArrayData($object); + + $this->assertEquals(null, $arrayData->TotalItems()); // (tobych) Shouldn't we get 0? + } + + function testWrappingAnAssociativeArrayWorks() { + $array = array("A" => "Alpha", "B" => "Beta"); + $this->assertTrue(ArrayLib::is_associative($array)); + + $arrayData = new ArrayData($array); + + $this->assertTrue($arrayData->hasField("A")); + $this->assertEquals("Alpha", $arrayData->getField("A")); + $this->assertEquals("Beta", $arrayData->getField("B")); + } + + function testWrappingAnEmptyArrayWorks() { + $arrayData = new ArrayData(array()); + + $this->assertEquals(null, $arrayData->TotalItems()); // (tobych) Shouldn't we get 0? + } + + function testRefusesToWrapAnIndexedArray() { + $array = array(0 => "One", 1 => "Two"); + $this->assertFalse(ArrayLib::is_associative($array)); + + /* + * Expect user_error() to be called below, if enabled + * (tobych) That should be an exception. Something like: + * $this->setExpectedException('InvalidArgumentException'); + */ + + // $arrayData = new ArrayData($array); + } + + function testForTemplateWorks() { + $arrayData = new ArrayData(array('b' => 'bunny')); + $this->assertEquals("array (\n 'b' => 'bunny',\n)", $arrayData->forTemplate()); + } + + function testObjectToArrayWorks() { + $object = new ArrayDataTest_NonEmptyObject(); + + $array = ArrayDataTest_ArrayData_Exposed::object_to_array($object); + + $this->assertEquals("Apple", $array['a']); + $this->assertEquals("Banana", $array['b']); + } + } + +class ArrayDataTest_ArrayData_Exposed extends ArrayData { + + public static function object_to_array($obj) { + return parent::object_to_array($obj); + } + +} + +class ArrayDataTest_NonEmptyObject { + + static $c = "Cucumber"; + + public function __construct() { + $this->a = "Apple"; + $this->b = "Banana"; + } + +} + +?>