diff options
Diffstat (limited to 'ext/spl/tests/fixedarray_002.phpt')
-rw-r--r-- | ext/spl/tests/fixedarray_002.phpt | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/ext/spl/tests/fixedarray_002.phpt b/ext/spl/tests/fixedarray_002.phpt new file mode 100644 index 0000000..534d41f --- /dev/null +++ b/ext/spl/tests/fixedarray_002.phpt @@ -0,0 +1,100 @@ +--TEST-- +SPL: FixedArray: overloading +--FILE-- +<?php +class A extends SplFixedArray { + public function count() { + return 2; + } + + public function offsetGet($n) { + echo "A::offsetGet\n"; + return parent::offsetGet($n); + } + public function offsetSet($n, $v) { + echo "A::offsetSet\n"; + return parent::offsetSet($n, $v); + } + public function offsetUnset($n) { + echo "A::offsetUnset\n"; + return parent::offsetUnset($n); + } + public function offsetExists($n) { + echo "A::offsetExists\n"; + return parent::offsetExists($n); + } +} + +$a = new A; + +// errors +try { + $a[0] = "value1"; +} catch (RuntimeException $e) { + echo "Exception: ".$e->getMessage()."\n"; +} +try { + var_dump($a["asdf"]); +} catch (RuntimeException $e) { + echo "Exception: ".$e->getMessage()."\n"; +} +try { + unset($a[-1]); +} catch (RuntimeException $e) { + echo "Exception: ".$e->getMessage()."\n"; +} +$a->setSize(10); + + +$a[0] = "value0"; +$a[1] = "value1"; +$a[2] = "value2"; +$a[3] = "value3"; +$ref = "value4"; +$ref2 =&$ref; +$a[4] = $ref; +$ref = "value5"; + +unset($a[1]); +var_dump(isset($a[1]), isset($a[2]), empty($a[1]), empty($a[2])); + +var_dump($a[0], $a[2], $a[3], $a[4]); + +// countable + +var_dump(count($a), $a->getSize(), count($a) == $a->getSize()); +?> +===DONE=== +--EXPECTF-- +A::offsetSet +Exception: Index invalid or out of range +A::offsetGet +Exception: Index invalid or out of range +A::offsetUnset +Exception: Index invalid or out of range +A::offsetSet +A::offsetSet +A::offsetSet +A::offsetSet +A::offsetSet +A::offsetUnset +A::offsetExists +A::offsetExists +A::offsetExists +A::offsetExists +bool(false) +bool(true) +bool(true) +bool(false) +A::offsetGet +A::offsetGet +A::offsetGet +A::offsetGet +string(6) "value0" +string(6) "value2" +string(6) "value3" +string(6) "value4" +int(2) +int(10) +bool(false) +===DONE=== |