Skip to content

Commit abe2b82

Browse files
committed
workaround for Windows OPcache bug
1 parent f73d51a commit abe2b82

File tree

2 files changed

+75
-51
lines changed

2 files changed

+75
-51
lines changed
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
--TEST--
2+
Random: Engine: serialize: native
3+
--FILE--
4+
<?php
5+
6+
$engines = [];
7+
$engines[] = new \Random\Engine\Mt19937(1234);
8+
$engines[] = new \Random\Engine\PcgOneseq128XslRr64(1234);
9+
$engines[] = new \Random\Engine\Xoshiro256StarStar(1234);
10+
11+
foreach ($engines as $engine) {
12+
for ($i = 0; $i < 1000; $i++) {
13+
$engine->generate();
14+
}
15+
$engine2 = unserialize(serialize($engine));
16+
for ($i = 0; $i < 5000; $i++) {
17+
if ($engine->generate() !== $engine2->generate()) {
18+
$className = $engine::class;
19+
die("failure class: {$className} i: {$i}");
20+
}
21+
}
22+
}
23+
24+
die('success');
25+
?>
26+
--EXPECT--
27+
success
Original file line numberDiff line numberDiff line change
@@ -1,51 +1,48 @@
1-
--TEST--
2-
Random: Engine: serialize
3-
--FILE--
4-
<?php
5-
6-
final class User64 implements \Random\Engine
7-
{
8-
private int $count = 0;
9-
10-
public function generate(): string
11-
{
12-
return \pack('P*', ++$this->count);
13-
}
14-
}
15-
16-
final class User32 implements \Random\Engine
17-
{
18-
private int $count = 0;
19-
20-
public function generate(): string
21-
{
22-
return \pack('V', ++$this->count);
23-
}
24-
}
25-
26-
$engines = [];
27-
$engines[] = new \Random\Engine\Mt19937(1234);
28-
$engines[] = new \Random\Engine\PcgOneseq128XslRr64(1234);
29-
$engines[] = new \Random\Engine\Xoshiro256StarStar(1234);
30-
if (\PHP_INT_SIZE >= 8) {
31-
$engines[] = new \User64();
32-
}
33-
$engines[] = new \User32();
34-
35-
foreach ($engines as $engine) {
36-
for ($i = 0; $i < 1000; $i++) {
37-
$engine->generate();
38-
}
39-
$engine2 = unserialize(serialize($engine));
40-
for ($i = 0; $i < 5000; $i++) {
41-
if ($engine->generate() !== $engine2->generate()) {
42-
$className = $engine::class;
43-
die("failure class: {$className} i: {$i}");
44-
}
45-
}
46-
}
47-
48-
die('success');
49-
?>
50-
--EXPECT--
51-
success
1+
--TEST--
2+
Random: Engine: serialize: user
3+
--FILE--
4+
<?php
5+
6+
final class User64 implements \Random\Engine
7+
{
8+
private int $count = 0;
9+
10+
public function generate(): string
11+
{
12+
return \pack('P*', ++$this->count);
13+
}
14+
}
15+
16+
final class User32 implements \Random\Engine
17+
{
18+
private int $count = 0;
19+
20+
public function generate(): string
21+
{
22+
return \pack('V', ++$this->count);
23+
}
24+
}
25+
26+
$engines = [];
27+
if (\PHP_INT_SIZE >= 8) {
28+
$engines[] = new \User64();
29+
}
30+
$engines[] = new \User32();
31+
32+
foreach ($engines as $engine) {
33+
for ($i = 0; $i < 1000; $i++) {
34+
$engine->generate();
35+
}
36+
$engine2 = unserialize(serialize($engine));
37+
for ($i = 0; $i < 5000; $i++) {
38+
if ($engine->generate() !== $engine2->generate()) {
39+
$className = $engine::class;
40+
die("failure class: {$className} i: {$i}");
41+
}
42+
}
43+
}
44+
45+
die('success');
46+
?>
47+
--EXPECT--
48+
success

0 commit comments

Comments
 (0)