File: maps.php

package info (click to toggle)
php-ramsey-collection 2.0.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 612 kB
  • sloc: php: 3,239; xml: 31; makefile: 22
file content (109 lines) | stat: -rw-r--r-- 3,909 bytes parent folder | download
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
97
98
99
100
101
102
103
104
105
106
107
108
109
<?php

// phpcs:disable

declare(strict_types=1);

namespace Ramsey\Collection\Test\types;

use Ramsey\Collection\Map\AssociativeArrayMap;

use Ramsey\Collection\Map\NamedParameterMap;
use Ramsey\Collection\Map\TypedMap;
use Ramsey\Collection\Test\Mock\Person;
use function PHPStan\Testing\assertType;

$associativeArray = new AssociativeArrayMap([
    'foo' => 1,
    'bar' => 'something',
    'baz' => false,
    'qux' => 23.3,
]);

assertType('Ramsey\Collection\Map\AssociativeArrayMap', $associativeArray);

assertType('mixed', $associativeArray['foo']);
assertType('mixed', $associativeArray['bar']);
assertType('mixed', $associativeArray['baz']);
assertType('mixed', $associativeArray['qux']);
assertType('mixed', $associativeArray->offsetGet('foo'));
assertType('array<string, mixed>', $associativeArray->toArray());
assertType('array<string, mixed>', $associativeArray->__serialize());
assertType('Traversable<string, mixed>', $associativeArray->getIterator());

/** @psalm-suppress MixedAssignment */
foreach ($associativeArray as $key => $value) {
    assertType('string', $key);
    assertType('mixed', $value);
}

assertType('array<int, string>', $associativeArray->keys());
assertType('mixed', $associativeArray->get('foo'));
assertType('mixed', $associativeArray->put('foo', 'hello'));
assertType('mixed', $associativeArray->putIfAbsent('foo', 'hello'));
assertType('mixed', $associativeArray->remove('foo'));
assertType('mixed', $associativeArray->replace('foo', 'hello'));

$namedParameterMap = new NamedParameterMap(
    [
        'foo' => 'string',
        'bar' => Person::class,
    ],
    [
        'foo' => 'hello',
        'bar' => new Person('Jamie'),
    ],
);

assertType('Ramsey\Collection\Map\NamedParameterMap', $namedParameterMap);

assertType('mixed', $namedParameterMap['foo']);
assertType('mixed', $namedParameterMap['bar']);
assertType('mixed', $namedParameterMap->offsetGet('foo'));
assertType('array<string, mixed>', $namedParameterMap->toArray());
assertType('array<string, mixed>', $namedParameterMap->__serialize());
assertType('Traversable<string, mixed>', $namedParameterMap->getIterator());

/** @psalm-suppress MixedAssignment */
foreach ($namedParameterMap as $key => $value) {
    assertType('string', $key);
    assertType('mixed', $value);
}

assertType('array<int, string>', $namedParameterMap->keys());
assertType('mixed', $namedParameterMap->get('foo'));
assertType('mixed', $namedParameterMap->put('foo', 'goodbye'));
assertType('mixed', $namedParameterMap->putIfAbsent('foo', 'goodbye'));
assertType('mixed', $namedParameterMap->remove('foo'));
assertType('mixed', $namedParameterMap->replace('foo', 'goodbye'));

assertType('array<string, string>', $namedParameterMap->getNamedParameters());




$typedMap = new TypedMap('int', Person::class, [
    123 => new Person('Jason'),
    456 => new Person('Jackie'),
]);

assertType('Ramsey\Collection\Map\TypedMap<int, Ramsey\Collection\Test\Mock\Person>', $typedMap);

assertType(Person::class, $typedMap[123]);
assertType(Person::class, $typedMap[456]);
assertType(Person::class, $typedMap->offsetGet(123));
assertType('array<int, Ramsey\Collection\Test\Mock\Person>', $typedMap->toArray());
assertType('array<int, Ramsey\Collection\Test\Mock\Person>', $typedMap->__serialize());
assertType('Traversable<int, Ramsey\Collection\Test\Mock\Person>', $typedMap->getIterator());

foreach ($typedMap as $key => $value) {
    assertType('int', $key);
    assertType(Person::class, $value);
}

assertType('array<int, int>', $typedMap->keys());
assertType(Person::class . '|null', $typedMap->get(123));
assertType(Person::class . '|null', $typedMap->put(123, new Person('Jeffrey')));
assertType(Person::class . '|null', $typedMap->putIfAbsent(123, new Person('Jeffrey')));
assertType(Person::class . '|null', $typedMap->remove(123));
assertType(Person::class . '|null', $typedMap->replace(123, new Person('Jeffrey')));