-
-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathPrepareTest.php
More file actions
92 lines (77 loc) · 2.23 KB
/
PrepareTest.php
File metadata and controls
92 lines (77 loc) · 2.23 KB
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
<?php
declare(strict_types=1);
namespace Tests\Benchmark;
use Tests\TestCase;
class PrepareTest extends TestCase
{
public function testCallback(): void
{
$result = [];
$this->benchmark()
->iterations(3)
->prepare(function () use (&$result) {
$result[] = 1;
})
->compare([
'foo' => fn () => $this->work(),
'bar' => fn () => $this->work(),
]);
$this->assertSame(6, count($result));
}
public function testParameters(): void
{
$result = [];
$this->benchmark()
->iterations(3)
->prepare(function (mixed $name, int $iteration) use (&$result) {
$result[] = sprintf('%s:%d', $name, $iteration);
})
->compare([
'foo' => fn () => $this->work(),
'bar' => fn () => $this->work(),
]);
$this->assertSame(6, count($result));
$this->assertSame([
'foo:1',
'foo:2',
'foo:3',
'bar:1',
'bar:2',
'bar:3',
], $result);
}
public function testName(): void
{
$result = [];
$this->benchmark()
->iterations(3)
->prepare(function (mixed $name) use (&$result) {
$result[] = $name;
})
->compare([
'foo' => fn () => $this->work(),
'bar' => fn () => $this->work(),
]);
$this->assertSame(6, count($result));
$this->assertSame([
'foo',
'foo',
'foo',
'bar',
'bar',
'bar',
], $result);
}
public function testPrepareResult(): void
{
$this->benchmark()
->iterations(3)
->prepare(
fn (mixed $name, int $iteration) => sprintf('%s:%d', $name, $iteration)
)
->compare([
'foo' => fn (int $iteration, string $result) => $this->assertSame('foo:' . $iteration, $result),
'bar' => fn (int $iteration, string $result) => $this->assertSame('bar:' . $iteration, $result),
]);
}
}