xref: /php-src/ext/spl/tests/pqueue_002.phpt (revision 6d805ed2)
1--TEST--
2SPL: SplPriorityQueue: exceptions
3--FILE--
4<?php
5class myPQueue extends SplPriorityQueue {
6    public function compare($a, $b): int {
7        throw new exception("foo");
8    }
9}
10
11$h = new myPQueue;
12
13try {
14    $h->insert(1, 1);
15    echo "inserted 1\n";
16    $h->insert(2, 1);
17    echo "inserted 2\n";
18    $h->insert(3, 1);
19    echo "inserted 3\n";
20} catch(Exception $e) {
21    echo "Exception: ".$e->getMessage()."\n";
22}
23
24try {
25    $h->insert(4, 1);
26    echo "inserted 4\n";
27} catch(Exception $e) {
28    echo "Exception: ".$e->getMessage()."\n";
29}
30
31try {
32    var_dump($h->extract());
33} catch(Exception $e) {
34    echo "Exception: ".$e->getMessage()."\n";
35}
36try {
37    var_dump($h->extract());
38} catch(Exception $e) {
39    echo "Exception: ".$e->getMessage()."\n";
40}
41
42echo "Recovering..\n";
43$h->recoverFromCorruption();
44
45try {
46    var_dump($h->extract());
47} catch(Exception $e) {
48    echo "Exception: ".$e->getMessage()."\n";
49}
50try {
51    var_dump($h->extract());
52} catch(Exception $e) {
53    echo "Exception: ".$e->getMessage()."\n";
54}
55?>
56--EXPECT--
57inserted 1
58Exception: foo
59Exception: Heap is corrupted, heap properties are no longer ensured.
60Exception: Heap is corrupted, heap properties are no longer ensured.
61Exception: Heap is corrupted, heap properties are no longer ensured.
62Recovering..
63int(1)
64int(2)
65