Skip to content

Commit

Permalink
#1259 - Add more test cases for unset from property
Browse files Browse the repository at this point in the history
  • Loading branch information
Jeckerson committed Apr 24, 2021
1 parent be2aa17 commit fa2d22e
Show file tree
Hide file tree
Showing 2 changed files with 106 additions and 3 deletions.
61 changes: 59 additions & 2 deletions stub/arrayaccesstest.zep
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,14 @@ namespace Stub;
class ArrayAccessTest
{
protected data;
protected unsetData = ["key_a": "marcin", "key_b": "paula"];
protected unsetData = [
"key_a": "marcin",
"key_b": "paula",
3: "long value"
//3.14: "double value", // Syntax error
//false: "bool value", // Syntax error
//null: "null value" // Syntax error
];

public static function exits()
{
Expand Down Expand Up @@ -137,7 +144,7 @@ class ArrayAccessTest
/**
* @issue https://github.com/zephir-lang/zephir/issues/1259
*/
public function issue1259UnsetKeyFromArrayProperty() -> array
public function issue1259UnsetStringKeyFromArrayProperty() -> array
{
array ret = [];

Expand All @@ -147,4 +154,54 @@ class ArrayAccessTest

return ret;
}

public function issue1259UnsetLongKeyFromArrayProperty() -> array
{
array ret = [];

let ret[] = this->unsetData;
unset(this->unsetData[3]);
let ret[] = this->unsetData;

return ret;
}

/*
public function issue1259UnsetDoubleKeyFromArrayProperty() -> array
{
array ret = [];
let ret[] = this->unsetData;
unset(this->unsetData[3.14]);
let ret[] = this->unsetData;
return ret;
}
*/

/*
public function issue1259UnsetBoolKeyFromArrayProperty() -> array
{
array ret = [];
let ret[] = this->unsetData;
unset(this->unsetData[false]);
let ret[] = this->unsetData;
return ret;
}
*/

/*
public function issue1259UnsetNullKeyFromArrayProperty() -> array
{
array ret = [];
let ret[] = this->unsetData;
unset(this->unsetData[null]);
let ret[] = this->unsetData;
return ret;
}
*/
}
48 changes: 47 additions & 1 deletion tests/Extension/ArrayAccessTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,15 @@

final class ArrayAccessTest extends TestCase
{
private array $defaultUnsetData = [
'key_a' => 'marcin',
'key_b' => 'paula',
3 => 'long value',
//3.14 => 'double value', // Not supported yet
//false => 'bool value', // Not supported yet
//null => 'null value', // Not supported yet
];

public function testTest(): void
{
$class = new \Stub\ArrayAccessTest();
Expand Down Expand Up @@ -89,6 +98,43 @@ public function testIssue1259CheckUnsetKeyFromArray(): void
];

$this->assertSame($expected, $class->issue1259UnsetKeyFromArrayInternalVariable());
$this->assertSame($expected, $class->issue1259UnsetKeyFromArrayProperty());
}

/**
* @issue https://github.com/zephir-lang/zephir/issues/1259
*/
public function testIssue1259CheckUnsetStringKeyFromArrayProperty(): void
{
$class = new \Stub\ArrayAccessTest();

$this->assertSame(
[
$this->defaultUnsetData,
[
'key_b' => 'paula',
3 => 'long value',
],
],
$class->issue1259UnsetStringKeyFromArrayProperty()
);
}

/**
* @issue https://github.com/zephir-lang/zephir/issues/1259
*/
public function testIssue1259CheckUnsetLongKeyFromArrayProperty(): void
{
$class = new \Stub\ArrayAccessTest();

$this->assertSame(
[
$this->defaultUnsetData,
[
'key_a' => 'marcin',
'key_b' => 'paula',
],
],
$class->issue1259UnsetLongKeyFromArrayProperty()
);
}
}

0 comments on commit fa2d22e

Please sign in to comment.