Skip to content

Zend/tests/offsets: add tests for taking references #13496

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Feb 25, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 15 additions & 4 deletions Zend/tests/offsets/ArrayAccess_container_offset_behaviour.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -40,26 +40,37 @@ VAR_DUMP_OF_OFFSET
string(12) "CLASS_NAME::offsetGet"
VAR_DUMP_OF_OFFSET
int(5)
Reference to dimension:
string(12) "CLASS_NAME::offsetGet"
VAR_DUMP_OF_OFFSET

Notice: Indirect modification of overloaded element of CLASS_NAME has no effect in %s on line 55
Value of reference:
int(5)
Value of container dimension after write to reference (should be int(100) if successful):
string(12) "CLASS_NAME::offsetGet"
VAR_DUMP_OF_OFFSET
int(5)
unset():
string(14) "CLASS_NAME::offsetUnset"
VAR_DUMP_OF_OFFSET
Nested read:
string(12) "CLASS_NAME::offsetGet"
VAR_DUMP_OF_OFFSET

Warning: Trying to access array offset on int in %s on line 62
Warning: Trying to access array offset on int in %s on line 74
NULL
Nested write:
string(12) "CLASS_NAME::offsetGet"
VAR_DUMP_OF_OFFSET

Notice: Indirect modification of overloaded element of CLASS_NAME has no effect in %s on line 69
Notice: Indirect modification of overloaded element of CLASS_NAME has no effect in %s on line 81
Cannot use a scalar value as an array
Nested Read-Write:
string(12) "CLASS_NAME::offsetGet"
VAR_DUMP_OF_OFFSET

Notice: Indirect modification of overloaded element of CLASS_NAME has no effect in %s on line 76
Notice: Indirect modification of overloaded element of CLASS_NAME has no effect in %s on line 88
Cannot use a scalar value as an array
Nested isset():
string(15) "CLASS_NAME::offsetExists"
Expand All @@ -83,7 +94,7 @@ Nested unset():
string(12) "CLASS_NAME::offsetGet"
VAR_DUMP_OF_OFFSET

Notice: Indirect modification of overloaded element of CLASS_NAME has no effect in %s on line 102
Notice: Indirect modification of overloaded element of CLASS_NAME has no effect in %s on line 114
Cannot unset offset in a non-array variable

OUTPUT;
Expand Down
122 changes: 76 additions & 46 deletions Zend/tests/offsets/ArrayObject_container_offset_behaviour.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ require_once __DIR__ . DIRECTORY_SEPARATOR . 'test_offset_helpers.inc';
const EXPECTED_OUTPUT_VALID_OFFSETS = <<<OUTPUT
Read before write:

Warning: Undefined array key %s in %s on line 8
Warning: Undefined array key %s in %s on line %d
NULL
Write:
Read:
Expand All @@ -20,12 +20,17 @@ empty():
bool(false)
null coalesce:
int(25)
Reference to dimension:
Value of reference:
int(25)
Value of container dimension after write to reference (should be int(100) if successful):
int(100)
unset():
Nested read:

Warning: Undefined array key %s in %s on line 62
Warning: Undefined array key %s in %s on line %d

Warning: Trying to access array offset on null in %s on line 62
Warning: Trying to access array offset on null in %s on line %d
NULL
Nested write:
Nested Read-Write:
Expand All @@ -43,76 +48,85 @@ $EXPECTED_OUTPUT_VALID_OFFSETS_REGEX = '/^' . expectf_to_regex(EXPECTED_OUTPUT_V
const EXPECTF_OUTPUT_FLOAT_OFFSETS = <<<OUTPUT
Read before write:

Deprecated: Implicit conversion from float %F to int loses precision in %s on line 8
Deprecated: Implicit conversion from float %F to int loses precision in %s on line %d

Warning: Undefined array key %s in %s on line 8
Warning: Undefined array key %s in %s on line %d
NULL
Write:

Deprecated: Implicit conversion from float %F to int loses precision in %s on line 15
Deprecated: Implicit conversion from float %F to int loses precision in %s on line %d
Read:

Deprecated: Implicit conversion from float %F to int loses precision in %s on line 22
Deprecated: Implicit conversion from float %F to int loses precision in %s on line %d
int(15)
Read-Write:

Deprecated: Implicit conversion from float %F to int loses precision in %s on line 29
Deprecated: Implicit conversion from float %F to int loses precision in %s on line %d
isset():

Deprecated: Implicit conversion from float %F to int loses precision in %s on line 36
Deprecated: Implicit conversion from float %F to int loses precision in %s on line %d
bool(true)
empty():

Deprecated: Implicit conversion from float %F to int loses precision in %s on line 42
Deprecated: Implicit conversion from float %F to int loses precision in %s on line %d
bool(false)
null coalesce:

Deprecated: Implicit conversion from float %F to int loses precision in %s on line 48
Deprecated: Implicit conversion from float %F to int loses precision in %s on line %d
int(35)
Reference to dimension:

Deprecated: Implicit conversion from float %F to int loses precision in %s on line %d
Value of reference:
int(35)
Value of container dimension after write to reference (should be int(100) if successful):

Deprecated: Implicit conversion from float %F to int loses precision in %s on line %d
int(100)
unset():

Deprecated: Implicit conversion from float %F to int loses precision in %s on line 55
Deprecated: Implicit conversion from float %F to int loses precision in %s on line %d
Nested read:

Deprecated: Implicit conversion from float %F to int loses precision in %s on line 62
Deprecated: Implicit conversion from float %F to int loses precision in %s on line %d

Warning: Undefined array key 0 in %s on line 62
Warning: Undefined array key 0 in %s on line %d

Warning: Trying to access array offset on null in %s on line 62
Warning: Trying to access array offset on null in %s on line %d
NULL
Nested write:

Deprecated: Implicit conversion from float %F to int loses precision in %s on line 69
Deprecated: Implicit conversion from float %F to int loses precision in %s on line %d

Deprecated: Implicit conversion from float %F to int loses precision in %s on line 69
Deprecated: Implicit conversion from float %F to int loses precision in %s on line %d
Nested Read-Write:

Deprecated: Implicit conversion from float %F to int loses precision in %s on line 76
Deprecated: Implicit conversion from float %F to int loses precision in %s on line %d

Deprecated: Implicit conversion from float %F to int loses precision in %s on line 76
Deprecated: Implicit conversion from float %F to int loses precision in %s on line %d
Nested isset():

Deprecated: Implicit conversion from float %F to int loses precision in %s on line 83
Deprecated: Implicit conversion from float %F to int loses precision in %s on line %d

Deprecated: Implicit conversion from float %F to int loses precision in %s on line 83
Deprecated: Implicit conversion from float %F to int loses precision in %s on line %d
bool(true)
Nested empty():

Deprecated: Implicit conversion from float %F to int loses precision in %s on line 89
Deprecated: Implicit conversion from float %F to int loses precision in %s on line %d

Deprecated: Implicit conversion from float %F to int loses precision in %s on line 89
Deprecated: Implicit conversion from float %F to int loses precision in %s on line %d
bool(false)
Nested null coalesce:

Deprecated: Implicit conversion from float %F to int loses precision in %s on line 95
Deprecated: Implicit conversion from float %F to int loses precision in %s on line %d

Deprecated: Implicit conversion from float %F to int loses precision in %s on line 95
Deprecated: Implicit conversion from float %F to int loses precision in %s on line %d
int(25)
Nested unset():

Deprecated: Implicit conversion from float %F to int loses precision in %s on line 102
Deprecated: Implicit conversion from float %F to int loses precision in %s on line %d

Deprecated: Implicit conversion from float %F to int loses precision in %s on line 102
Deprecated: Implicit conversion from float %F to int loses precision in %s on line %d

OUTPUT;

Expand All @@ -133,6 +147,8 @@ empty():
Cannot access offset of type %s in isset or empty
null coalesce:
Cannot access offset of type %s in isset or empty
Reference to dimension:
Cannot access offset of type %s on ArrayObject
unset():
Cannot unset offset of type %s on ArrayObject
Nested read:
Expand All @@ -149,7 +165,7 @@ Nested null coalesce:
Cannot access offset of type %s in isset or empty
Nested unset():

Notice: Indirect modification of overloaded element of ArrayObject has no effect in %s on line 102
Notice: Indirect modification of overloaded element of ArrayObject has no effect in %s on line %d
Cannot unset offset of type %s on ArrayObject

OUTPUT;
Expand All @@ -175,12 +191,17 @@ empty():
bool(true)
null coalesce:
string(7) "default"
Reference to dimension:
Value of reference:
NULL
Value of container dimension after write to reference (should be int(100) if successful):
int(100)
unset():
Nested read:

Warning: Undefined array key "" in %s on line 62
Warning: Undefined array key "" in %s on line 74

Warning: Trying to access array offset on null in %s on line 62
Warning: Trying to access array offset on null in %s on line 74
NULL
Nested write:
Nested Read-Write:
Expand Down Expand Up @@ -225,50 +246,59 @@ null coalesce:

Warning: Resource ID#3 used as offset, casting to integer (3) in %s on line 48
int(25)
unset():
Reference to dimension:

Warning: Resource ID#3 used as offset, casting to integer (3) in %s on line 55
Value of reference:
int(25)
Value of container dimension after write to reference (should be int(100) if successful):

Warning: Resource ID#3 used as offset, casting to integer (3) in %s on line 60
int(100)
unset():

Warning: Resource ID#3 used as offset, casting to integer (3) in %s on line 67
Nested read:

Warning: Resource ID#3 used as offset, casting to integer (3) in %s on line 62
Warning: Resource ID#3 used as offset, casting to integer (3) in %s on line 74

Warning: Undefined array key 3 in %s on line 62
Warning: Undefined array key 3 in %s on line 74

Warning: Trying to access array offset on null in %s on line 62
Warning: Trying to access array offset on null in %s on line 74
NULL
Nested write:

Warning: Resource ID#3 used as offset, casting to integer (3) in %s on line 69
Warning: Resource ID#3 used as offset, casting to integer (3) in %s on line 81

Warning: Resource ID#3 used as offset, casting to integer (3) in %s on line 69
Warning: Resource ID#3 used as offset, casting to integer (3) in %s on line 81
Nested Read-Write:

Warning: Resource ID#3 used as offset, casting to integer (3) in %s on line 76
Warning: Resource ID#3 used as offset, casting to integer (3) in %s on line 88

Warning: Resource ID#3 used as offset, casting to integer (3) in %s on line 76
Warning: Resource ID#3 used as offset, casting to integer (3) in %s on line 88
Nested isset():

Warning: Resource ID#3 used as offset, casting to integer (3) in %s on line 83
Warning: Resource ID#3 used as offset, casting to integer (3) in %s on line 95

Warning: Resource ID#3 used as offset, casting to integer (3) in %s on line 83
Warning: Resource ID#3 used as offset, casting to integer (3) in %s on line 95
bool(true)
Nested empty():

Warning: Resource ID#3 used as offset, casting to integer (3) in %s on line 89
Warning: Resource ID#3 used as offset, casting to integer (3) in %s on line 101

Warning: Resource ID#3 used as offset, casting to integer (3) in %s on line 89
Warning: Resource ID#3 used as offset, casting to integer (3) in %s on line 101
bool(false)
Nested null coalesce:

Warning: Resource ID#3 used as offset, casting to integer (3) in %s on line 95
Warning: Resource ID#3 used as offset, casting to integer (3) in %s on line 107

Warning: Resource ID#3 used as offset, casting to integer (3) in %s on line 95
Warning: Resource ID#3 used as offset, casting to integer (3) in %s on line 107
int(30)
Nested unset():

Warning: Resource ID#3 used as offset, casting to integer (3) in %s on line 102
Warning: Resource ID#3 used as offset, casting to integer (3) in %s on line 114

Warning: Resource ID#3 used as offset, casting to integer (3) in %s on line 102
Warning: Resource ID#3 used as offset, casting to integer (3) in %s on line 114

OUTPUT;

Expand Down
Loading