Blame view

framework/tests/core/ArrayDataTest.php 2.54 KB
0084d336   Administrator   Importers CRUD
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
  <?php
  
  class ArrayDataTest extends SapphireTest {
  
  	public function testViewabledataItemsInsideArraydataArePreserved() {
  		/* ViewableData objects will be preserved, but other objects will be converted */
  		$arrayData = new ArrayData(array(
  			"A" => new Varchar("A"),
  			"B" => new stdClass(),
  		));
  		$this->assertEquals("Varchar", get_class($arrayData->A));
  		$this->assertEquals("ArrayData", get_class($arrayData->B));
  	}
  
  	public 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'));
  	}
  
  	public 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"));
  	}
  
  	public 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);
  	}
  
  	public function testSetField() {
  		$arrayData = new ArrayData(array());
  		
  		$arrayData->setField('d', 'Delta');
  		
  		$this->assertTrue($arrayData->hasField('d'));
  		$this->assertEquals('Delta', $arrayData->getField('d'));
  	}
  	
  	public function testGetArray() {
  		$originalDeprecation = Deprecation::dump_settings();
  		Deprecation::notification_version('2.4');
  
  		$array = array(
  			'Foo' => 'Foo',
  			'Bar' => 'Bar',
  			'Baz' => 'Baz'
  		);
  		
  		$arrayData = new ArrayData($array);
  		
  		$this->assertEquals($arrayData->toMap(), $array);
  
  		Deprecation::restore_settings($originalDeprecation);
  	}
  
  	public function testArrayToObject() {
  		$arr = array("test1" => "result1","test2"=>"result2");
  		$obj = ArrayData::array_to_object($arr);
  		$objExpected = new stdClass();
  		$objExpected->test1 = "result1";
  		$objExpected->test2 = "result2";
  		$this->assertEquals($obj,$objExpected, "Two objects match");
  	}
  
  }
  
  class ArrayDataTest_NonEmptyObject {
  
  	static $c = "Cucumber";
  
  	public function __construct() {
  		$this->a = "Apple";
  		$this->b = "Banana";
  	}
  
  }