| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530 |
- <?php
- namespace AlibabaCloud\Client\Tests\LowerthanVersion7_2\Unit\Traits;
- use PHPUnit\Framework\TestCase;
- /**
- * Class HasDataTraitTest
- *
- * @package AlibabaCloud\Client\Tests\LowerthanVersion7_2\Unit\Traits
- *
- * @coversDefaultClass \AlibabaCloud\Client\Traits\HasDataTrait
- */
- class HasDataTraitTest extends TestCase
- {
- /**
- * @dataProvider searchData
- *
- * @param array $data
- * @param string $expression
- * @param mixed $expected
- */
- public function testSearch(array $data, $expression, $expected)
- {
- // Setup
- $result = new HasDataTraitClass($data);
- // Assert
- self::assertEquals($expected, $result->search($expression));
- }
- /**
- * @return array
- */
- public function searchData()
- {
- return [
- [
- // Data
- [
- 'key' => [
- 'name' => 'value',
- ],
- ],
- // Expression
- 'key.name',
- // Expected
- 'value',
- ],
- [
- // Data
- [
- 'key' => [
- 'name' => 'value',
- ],
- ],
- // Expression
- 'key',
- // Expected
- ['name' => 'value',],
- ],
- [
- // Data
- [
- 'key' => [
- 'name' => [
- 'value',
- ],
- ],
- ],
- // Expression
- 'key.name',
- // Expected
- ['value'],
- ],
- [
- // Data
- [
- 'key' => [
- 'name' => [
- 'a',
- 'b',
- 'c',
- ],
- ],
- ],
- // Expression
- 'key.name[2]',
- // Expected
- 'c',
- ],
- ];
- }
- public function testAdd()
- {
- // Setup
- $result = new HasDataTraitClass([]);
- // Assert
- self::assertEquals([], $result->all());
- // Test
- $result->add('a.b.c', 'value');
- // Assert
- self::assertEquals(
- [
- 'a' => [
- 'b' => [
- 'c' => 'value',
- ],
- ],
- ],
- $result->all()
- );
- // Test
- $result->add('b');
- // Assert
- self::assertEquals(
- [
- 'a' => [
- 'b' => [
- 'c' => 'value',
- ],
- ],
- 'b' => null,
- ],
- $result->all()
- );
- }
- public function testClear()
- {
- // Setup
- $result = new HasDataTraitClass([]);
- // Test
- $result->add('a.b.c', 'value');
- // Assert
- self::assertEquals(
- [
- 'a' => [
- 'b' => [
- 'c' => 'value',
- ],
- ],
- ],
- $result->all()
- );
- // Test
- $result->clear('a.b');
- // Assert
- self::assertEquals(
- [
- 'a' => [
- 'b' => [],
- ],
- ],
- $result->all()
- );
- // Test
- $result->clear('a');
- // Assert
- self::assertEquals(['a' => [],], $result->all());
- // Test
- $result->clear();
- // Assert
- self::assertEquals([], $result->all());
- }
- public function testDelete()
- {
- // Setup
- $result = new HasDataTraitClass([]);
- // Test
- $result->add('a.b.c', 'value');
- $result->delete('a.b.c');
- // Assert
- self::assertEquals(
- [
- 'a' => [
- 'b' => [],
- ],
- ],
- $result->all()
- );
- }
- public function testFlatten()
- {
- // Setup
- $result = new HasDataTraitClass([]);
- // Test
- $result->add('a.b.c', 'value');
- $result->add('b.c.d.e', 'value');
- // Assert
- self::assertEquals(
- [
- 'a.b.c' => 'value',
- 'b.c.d.e' => 'value',
- ],
- $result->flatten()
- );
- }
- public function testGet()
- {
- // Setup
- $result = new HasDataTraitClass([]);
- // Test
- $result->add('a.b.c', 'value');
- $result->add('b.c.d.e', 'value');
- // Assert
- self::assertEquals(null, $result->get('null'));
- // Assert
- self::assertEquals(
- [
- 'b' => [
- 'c' => 'value',
- ],
- ],
- $result->get('a')
- );
- // Assert
- self::assertEquals(
- [
- 'a' => [
- 'b' => [
- 'c' => 'value',
- ],
- ],
- 'b' => [
- 'c' => [
- 'd' => [
- 'e' => 'value',
- ],
- ],
- ],
- ],
- $result->get()
- );
- }
- public function testHas()
- {
- // Setup
- $result = new HasDataTraitClass([]);
- // Test
- $result->add('a.b.c', 'value');
- $result->add('b.c.d.e', 'value');
- // Assert
- self::assertEquals(true, $result->has('a'));
- self::assertEquals(true, $result->has('a.b'));
- self::assertEquals(true, $result->has('a.b.c'));
- self::assertEquals(true, $result->has('b'));
- self::assertEquals(true, $result->has('b.c'));
- self::assertEquals(true, $result->has('b.c.d'));
- self::assertEquals(true, $result->has('b.c.d.e'));
- self::assertEquals(false, $result->has('e'));
- $result->clear();
- self::assertEquals(false, $result->has('a'));
- }
- public function testSetAndIsEmpty()
- {
- // Setup
- $result = new HasDataTraitClass([]);
- // Test
- $result->set('a.b.c', 'value');
- // Assert
- self::assertEquals('value', $result->get('a.b.c'));
- self::assertEquals(false, $result->isEmpty('a.b.c'));
- self::assertEquals(true, $result->isEmpty('a.b.c.d'));
- // Test
- $result->set('b.c.d.e', 'value');
- // Assert
- self::assertEquals('value', $result->get('b.c.d.e'));
- self::assertEquals(false, $result->isEmpty('b.c.d.e'));
- }
- public function testSetReference()
- {
- // Setup
- $result = new HasDataTraitClass([]);
- // Test
- $result->set('a.b.c', 'value');
- $array = [1, 2, 3];
- $result->setReference($array);
- // Assert
- self::assertEquals($array, $result->all());
- }
- public function testToJson()
- {
- // Setup
- $result = new HasDataTraitClass([]);
- // Test
- $result->set('a.b.c', 'value');
- // Assert
- self::assertEquals('{"a":{"b":{"c":"value"}}}', $result->toJson());
- }
- public function testToArray()
- {
- // Setup
- $result = new HasDataTraitClass([]);
- // Test
- $result->set('a.b.c', 'value');
- // Assert
- self::assertEquals($result->all(), $result->toArray());
- }
- public function testOffsetExists()
- {
- // Setup
- $result = new HasDataTraitClass([]);
- // Test
- $result->set('a.b.c', 'value');
- // Assert
- self::assertEquals(true, isset($result['a']));
- self::assertEquals(true, isset($result['a.b.c']));
- self::assertEquals(false, isset($result['b']));
- }
- public function testOffsetGet()
- {
- // Setup
- $result = new HasDataTraitClass([]);
- // Test
- $result->set('a.b.c', 'value');
- // Assert
- self::assertEquals('value', $result['a.b.c']);
- self::assertEquals(null, $result['b']);
- }
- public function testOffsetSet()
- {
- // Setup
- $result = new HasDataTraitClass([]);
- // Test
- $result->set('a.b.c', 'value');
- $result['d'] = 'd';
- $result['d.e.f'] = 'f';
- // Assert
- self::assertEquals('value', $result['a.b.c']);
- self::assertEquals(
- [
- 'e' => [
- 'f' => 'f',
- ],
- ],
- $result['d']
- );
- self::assertEquals('f', $result['d.e.f']);
- }
- public function testOffsetUnSet()
- {
- // Setup
- $result = new HasDataTraitClass([]);
- // Test
- $result['d.e.f'] = 'f';
- // Assert
- self::assertEquals(
- [
- 'e' => [
- 'f' => 'f',
- ],
- ],
- $result['d']
- );
- // Test
- unset($result['d.e.f']);
- // Assert
- self::assertEquals(
- [
- 'e' => [
- ],
- ],
- $result['d']
- );
- // Test
- unset($result['d.e']);
- // Assert
- self::assertEquals([], $result['d']);
- }
- public function testCount()
- {
- // Setup
- $result = new HasDataTraitClass([]);
- // Assert
- self::assertEquals(0, $result->count());
- // Test
- $result['d.e.f'] = 'f';
- // Assert
- self::assertEquals(1, $result->count());
- // Test
- $result['e'] = 'e';
- // Assert
- self::assertEquals(2, $result->count());
- }
- public function testGetIterator()
- {
- // Setup
- $result = new HasDataTraitClass([]);
- // Assert
- self::assertInstanceOf(\ArrayIterator::class, $result->getIterator());
- }
- public function testJsonSerialize()
- {
- // Setup
- $result = new HasDataTraitClass([]);
- $result['a.b'] = 'c';
- // Assert
- self::assertEquals(
- [
- 'a' => [
- 'b' => 'c',
- ],
- ],
- $result->jsonSerialize()
- );
- }
- public function testObjectGet()
- {
- // Setup
- $result = new HasDataTraitClass([]);
- $result['a.b'] = 'c';
- $result['d'] = 'e';
- // Assert
- self::assertEquals('c', $result->a->b);
- self::assertEquals('e', $result->d);
- self::assertEquals(null, $result->null);
- }
- public function testObjectSet()
- {
- // Setup
- $result = new HasDataTraitClass([]);
- $result->a = 'a';
- $result->b = 'b';
- // Assert
- self::assertEquals('a', $result->a);
- self::assertEquals('b', $result->b);
- }
- public function testObjectIsSet()
- {
- // Setup
- $result = new HasDataTraitClass([]);
- $result->a = 'a';
- // Assert
- self::assertEquals(true, isset($result->a));
- self::assertEquals(false, isset($result->b));
- }
- public function testObjectUnSet()
- {
- // Setup
- $result = new HasDataTraitClass([]);
- $result->a = 'a';
- // Assert
- self::assertEquals(true, isset($result->a));
- // Test
- unset($result->a);
- // Assert
- self::assertEquals(false, isset($result->a));
- }
- }
|