annotate vendor/dflydev/dot-access-data/tests/Dflydev/DotAccessData/DataTest.php @ 5:12f9dff5fda9 tip

Update to Drupal core 8.7.1
author Chris Cannam
date Thu, 09 May 2019 15:34:47 +0100
parents c75dbcec494b
children
rev   line source
Chris@0 1 <?php
Chris@0 2
Chris@0 3 /*
Chris@0 4 * This file is a part of dflydev/dot-access-data.
Chris@0 5 *
Chris@0 6 * (c) Dragonfly Development Inc.
Chris@0 7 *
Chris@0 8 * For the full copyright and license information, please view the LICENSE
Chris@0 9 * file that was distributed with this source code.
Chris@0 10 */
Chris@0 11
Chris@0 12 namespace Dflydev\DotAccessData;
Chris@0 13
Chris@0 14 class DataTest extends \PHPUnit_Framework_TestCase
Chris@0 15 {
Chris@0 16 protected function getSampleData()
Chris@0 17 {
Chris@0 18 return array(
Chris@0 19 'a' => 'A',
Chris@0 20 'b' => array(
Chris@0 21 'b' => 'B',
Chris@0 22 'c' => array('C1', 'C2', 'C3'),
Chris@0 23 'd' => array(
Chris@0 24 'd1' => 'D1',
Chris@0 25 'd2' => 'D2',
Chris@0 26 'd3' => 'D3',
Chris@0 27 ),
Chris@0 28 ),
Chris@0 29 'c' => array('c1', 'c2', 'c3'),
Chris@0 30 'f' => array(
Chris@0 31 'g' => array(
Chris@0 32 'h' => 'FGH',
Chris@0 33 ),
Chris@0 34 ),
Chris@0 35 'h' => array(
Chris@0 36 'i' => 'I',
Chris@0 37 ),
Chris@0 38 'i' => array(
Chris@0 39 'j' => 'J',
Chris@0 40 ),
Chris@0 41 );
Chris@0 42 }
Chris@0 43
Chris@0 44 protected function runSampleDataTests(DataInterface $data)
Chris@0 45 {
Chris@0 46 $this->assertEquals('A', $data->get('a'));
Chris@0 47 $this->assertEquals('B', $data->get('b.b'));
Chris@0 48 $this->assertEquals(array('C1', 'C2', 'C3'), $data->get('b.c'));
Chris@0 49 $this->assertEquals('D3', $data->get('b.d.d3'));
Chris@0 50 $this->assertEquals(array('c1', 'c2', 'c3'), $data->get('c'));
Chris@0 51 $this->assertNull($data->get('foo'), 'Foo should not exist');
Chris@0 52 $this->assertNull($data->get('f.g.h.i'));
Chris@0 53 $this->assertEquals($data->get('foo', 'default-value-1'), 'default-value-1', 'Return default value');
Chris@0 54 $this->assertEquals($data->get('f.g.h.i', 'default-value-2'), 'default-value-2');
Chris@0 55 }
Chris@0 56
Chris@0 57 public function testAppend()
Chris@0 58 {
Chris@0 59 $data = new Data($this->getSampleData());
Chris@0 60
Chris@0 61 $data->append('a', 'B');
Chris@0 62 $data->append('c', 'c4');
Chris@0 63 $data->append('b.c', 'C4');
Chris@0 64 $data->append('b.d.d3', 'D3b');
Chris@0 65 $data->append('b.d.d4', 'D');
Chris@0 66 $data->append('e', 'E');
Chris@0 67 $data->append('f.a', 'b');
Chris@0 68 $data->append('h.i', 'I2');
Chris@0 69 $data->append('i.k.l', 'L');
Chris@0 70
Chris@0 71 $this->assertEquals(array('A', 'B'), $data->get('a'));
Chris@0 72 $this->assertEquals(array('c1', 'c2', 'c3', 'c4'), $data->get('c'));
Chris@0 73 $this->assertEquals(array('C1', 'C2', 'C3', 'C4'), $data->get('b.c'));
Chris@0 74 $this->assertEquals(array('D3', 'D3b'), $data->get('b.d.d3'));
Chris@0 75 $this->assertEquals(array('D'), $data->get('b.d.d4'));
Chris@0 76 $this->assertEquals(array('E'), $data->get('e'));
Chris@0 77 $this->assertEquals(array('b'), $data->get('f.a'));
Chris@0 78 $this->assertEquals(array('I', 'I2'), $data->get('h.i'));
Chris@0 79 $this->assertEquals(array('L'), $data->get('i.k.l'));
Chris@0 80
Chris@0 81 $this->setExpectedException('RuntimeException');
Chris@0 82
Chris@0 83 $data->append('', 'broken');
Chris@0 84 }
Chris@0 85
Chris@0 86 public function testSet()
Chris@0 87 {
Chris@0 88 $data = new Data;
Chris@0 89
Chris@0 90 $this->assertNull($data->get('a'));
Chris@0 91 $this->assertNull($data->get('b.c'));
Chris@0 92 $this->assertNull($data->get('d.e'));
Chris@0 93
Chris@0 94 $data->set('a', 'A');
Chris@0 95 $data->set('b.c', 'C');
Chris@0 96 $data->set('d.e', array('f' => 'F', 'g' => 'G',));
Chris@0 97
Chris@0 98 $this->assertEquals('A', $data->get('a'));
Chris@0 99 $this->assertEquals(array('c' => 'C'), $data->get('b'));
Chris@0 100 $this->assertEquals('C', $data->get('b.c'));
Chris@0 101 $this->assertEquals('F', $data->get('d.e.f'));
Chris@0 102 $this->assertEquals(array('e' => array('f' => 'F', 'g' => 'G',)), $data->get('d'));
Chris@0 103
Chris@0 104 $this->setExpectedException('RuntimeException');
Chris@0 105
Chris@0 106 $data->set('', 'broken');
Chris@0 107 }
Chris@0 108
Chris@0 109 public function testSetClobberStringInPath()
Chris@0 110 {
Chris@0 111 $data = new Data;
Chris@0 112
Chris@0 113 $data->set('a.b.c', 'Should not be able to write to a.b.c.d.e');
Chris@0 114
Chris@0 115 $this->setExpectedException('RuntimeException');
Chris@0 116
Chris@0 117 $data->set('a.b.c.d.e', 'broken');
Chris@0 118 }
Chris@0 119
Chris@0 120 public function testRemove()
Chris@0 121 {
Chris@0 122 $data = new Data($this->getSampleData());
Chris@0 123
Chris@0 124 $data->remove('a');
Chris@0 125 $data->remove('b.c');
Chris@0 126 $data->remove('b.d.d3');
Chris@0 127 $data->remove('d');
Chris@0 128 $data->remove('d.e.f');
Chris@0 129 $data->remove('empty.path');
Chris@0 130
Chris@0 131 $this->assertNull($data->get('a'));
Chris@0 132 $this->assertNull($data->get('b.c'));
Chris@0 133 $this->assertNull($data->get('b.d.d3'));
Chris@0 134 $this->assertNull(null);
Chris@0 135 $this->assertEquals('D2', $data->get('b.d.d2'));
Chris@0 136
Chris@0 137 $this->setExpectedException('RuntimeException');
Chris@0 138
Chris@0 139 $data->remove('', 'broken');
Chris@0 140 }
Chris@0 141
Chris@0 142 public function testGet()
Chris@0 143 {
Chris@0 144 $data = new Data($this->getSampleData());
Chris@0 145
Chris@0 146 $this->runSampleDataTests($data);
Chris@0 147 }
Chris@0 148
Chris@0 149 public function testHas()
Chris@0 150 {
Chris@0 151 $data = new Data($this->getSampleData());
Chris@0 152
Chris@0 153 foreach (
Chris@0 154 array('a', 'i', 'b.d', 'f.g.h', 'h.i', 'b.d.d1') as $existentKey
Chris@0 155 ) {
Chris@0 156 $this->assertTrue($data->has($existentKey));
Chris@0 157 }
Chris@0 158
Chris@0 159 foreach (
Chris@0 160 array('p', 'b.b1', 'b.c.C1', 'h.i.I', 'b.d.d1.D1') as $notExistentKey
Chris@0 161 ) {
Chris@0 162 $this->assertFalse($data->has($notExistentKey));
Chris@0 163 }
Chris@0 164 }
Chris@0 165
Chris@0 166 public function testGetData()
Chris@0 167 {
Chris@0 168 $wrappedData = new Data(array(
Chris@0 169 'wrapped' => array(
Chris@0 170 'sampleData' => $this->getSampleData()
Chris@0 171 ),
Chris@0 172 ));
Chris@0 173
Chris@0 174 $data = $wrappedData->getData('wrapped.sampleData');
Chris@0 175
Chris@0 176 $this->runSampleDataTests($data);
Chris@0 177
Chris@0 178 $this->setExpectedException('RuntimeException');
Chris@0 179
Chris@0 180 $data = $wrappedData->getData('wrapped.sampleData.a');
Chris@0 181 }
Chris@0 182
Chris@0 183 public function testImport()
Chris@0 184 {
Chris@0 185 $data = new Data();
Chris@0 186 $data->import($this->getSampleData());
Chris@0 187
Chris@0 188 $this->runSampleDataTests($data);
Chris@0 189 }
Chris@0 190
Chris@0 191 public function testImportData()
Chris@0 192 {
Chris@0 193 $data = new Data();
Chris@0 194 $data->importData(new Data($this->getSampleData()));
Chris@0 195
Chris@0 196 $this->runSampleDataTests($data);
Chris@0 197 }
Chris@0 198
Chris@0 199 public function testExport()
Chris@0 200 {
Chris@0 201 $data = new Data($this->getSampleData());
Chris@0 202
Chris@0 203 $this->assertEquals($this->getSampleData(), $data->export());
Chris@0 204 }
Chris@0 205 }