test(increment): 添加字符串和类型递增递减操作测试

- 添加字符串递增递减功能测试用例
- 添加各种数据类型递增递减操作测试
- 添加goto跳转语句基础功能测试
- 验证不同字符串值的递增递减行为
- 测试数组对象资源等类型的递增递减错误处理
- 包含空值布尔值数字等基本类型的操作验证
pull/1/head
韩天峰 7 months ago
parent e0a4e2f977
commit 82e13b62f1
  1. 102
      tests/zend/in-de-crement/incdec_strings.phpt
  2. 92
      tests/zend/in-de-crement/incdec_types.phpt
  3. 14
      tests/zend/jump/jump01.phpt

@ -0,0 +1,102 @@
--TEST--
Inc/dec various strings
--FILE--
<?php
echo "Using increment:\n";
$values = [
'',
' ',
// Numeric-ish values
'0',
'15.5',
'1e10',
// Alphanumeric values
'199A',
'A199',
'199Z',
'Z199',
// Strings
'Hello world',
'🐘'
];
foreach ($values as $value) {
echo "Initial value:";
var_dump($value);
$value++;
echo "Result value:";
var_dump($value);
}
echo "Using decrement:\n";
$values = [
'',
' ',
// Numeric-ish values
'0',
'15.5',
'1e10',
// Alphanumeric values
'199A',
'A199',
'199Z',
'Z199',
// Strings
'Hello world',
'🐘'
];
foreach ($values as $value) {
echo "Initial value:";
var_dump($value);
$value--;
echo "Result value:";
var_dump($value);
}
?>
--EXPECTF--
Using increment:
Initial value:string(0) ""
Result value:string(1) "1"
Initial value:string(1) " "
Result value:string(1) " "
Initial value:string(1) "0"
Result value:int(1)
Initial value:string(4) "15.5"
Result value:float(16.5)
Initial value:string(4) "1e10"
Result value:float(10000000001)
Initial value:string(4) "199A"
Result value:string(4) "199B"
Initial value:string(4) "A199"
Result value:string(4) "A200"
Initial value:string(4) "199Z"
Result value:string(4) "200A"
Initial value:string(4) "Z199"
Result value:string(4) "Z200"
Initial value:string(11) "Hello world"
Result value:string(11) "Hello worle"
Initial value:string(4) "🐘"
Result value:string(4) "🐘"
Using decrement:
Initial value:string(0) ""
Result value:int(-1)
Initial value:string(1) " "
Result value:string(1) " "
Initial value:string(1) "0"
Result value:int(-1)
Initial value:string(4) "15.5"
Result value:float(14.5)
Initial value:string(4) "1e10"
Result value:float(9999999999)
Initial value:string(4) "199A"
Result value:string(4) "199A"
Initial value:string(4) "A199"
Result value:string(4) "A199"
Initial value:string(4) "199Z"
Result value:string(4) "199Z"
Initial value:string(4) "Z199"
Result value:string(4) "Z199"
Initial value:string(11) "Hello world"
Result value:string(11) "Hello world"
Initial value:string(4) "🐘"
Result value:string(4) "🐘"

@ -0,0 +1,92 @@
--TEST--
Inc/dec various types
--FILE--
<?php
/* Type errors */
$types = [[], new stdClass(), fopen(__FILE__, 'r')];
foreach ($types as $type) {
try {
$type++;
} catch (\TypeError $e) {
echo $e->getMessage(), PHP_EOL;
}
try {
$type--;
} catch (\TypeError $e) {
echo $e->getMessage(), PHP_EOL;
}
}
echo "Using increment:\n";
$values = [null, false, true, 0, 0.0, '', ' ', '0'];
foreach ($values as $value) {
echo "Initial value:";
var_dump($value);
$value++;
echo "Result value:";
var_dump($value);
}
echo "Using decrement:\n";
$values = [null, false, true, 0, 0.0, '', ' ', '0'];
foreach ($values as $value) {
echo "Initial value:";
var_dump($value);
$value--;
echo "Result value:";
var_dump($value);
}
?>
--EXPECTF--
Cannot increment array
Cannot decrement array
Cannot increment stdClass
Cannot decrement stdClass
Cannot increment resource
Cannot decrement resource
Using increment:
Initial value:NULL
Result value:int(1)
Initial value:bool(false)
Warning: Increment on type bool has no effect, this will change in the next major version of PHP in %s on line %d
Result value:bool(false)
Initial value:bool(true)
Warning: Increment on type bool has no effect, this will change in the next major version of PHP in %s on line %d
Result value:bool(true)
Initial value:int(0)
Result value:int(1)
Initial value:float(0)
Result value:float(1)
Initial value:string(0) ""
Result value:string(1) "1"
Initial value:string(1) " "
Result value:string(1) " "
Initial value:string(1) "0"
Result value:int(1)
Using decrement:
Initial value:NULL
Warning: Decrement on type null has no effect, this will change in the next major version of PHP in %s on line %d
Result value:NULL
Initial value:bool(false)
Warning: Decrement on type bool has no effect, this will change in the next major version of PHP in %s on line %d
Result value:bool(false)
Initial value:bool(true)
Warning: Decrement on type bool has no effect, this will change in the next major version of PHP in %s on line %d
Result value:bool(true)
Initial value:int(0)
Result value:int(-1)
Initial value:float(0)
Result value:float(-1)
Initial value:string(0) ""
Result value:int(-1)
Initial value:string(1) " "
Result value:string(1) " "
Initial value:string(1) "0"
Result value:int(-1)

@ -0,0 +1,14 @@
--TEST--
jump 01: goto backward
--FILE--
<?php
$n = 1;
L1:
echo "$n: ok\n";
$n++;
if ($n <= 3) goto L1;
?>
--EXPECT--
1: ok
2: ok
3: ok
Loading…
Cancel
Save