Skip to content

Improve pow function tests #13005

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 8 commits into from
Dec 26, 2023
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
171 changes: 45 additions & 126 deletions ext/standard/tests/math/pow_variation1.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -8,164 +8,83 @@ if (PHP_INT_SIZE != 4) die("skip this test is for 32bit platform only");
?>
--FILE--
<?php
echo "*** Testing pow() : usage variations ***\n";

//get an unset variable
$unset_var = 10;
unset ($unset_var);

// heredoc string
$heredoc = <<<EOT
abc
xyz
EOT;

// get a class
class classA
{
}

// get a resource variable
//resource variable
$fp = fopen(__FILE__, "r");

$inputs = array(
// int data
/*1*/ 0,
1,
12345,
-2345,
PHP_INT_MAX,

// float data
/*6*/ 10.5,
-10.5,
12.3456789000e10,
12.3456789000E-10,
.5,

// null data
/*11*/ NULL,
null,

// boolean data
/*13*/ true,
false,
TRUE,
FALSE,

// empty data
/*17*/ "",
'',
array(),

// string data
/*20*/ "abcxyz",
'abcxyz',
$heredoc,

// object data
/*23*/ new classA(),

// undefined data
/*24*/ @$undefined_var,

// unset data
/*25*/ @$unset_var,

// resource variable
/*26*/ $fp
);
$inputs = [
// int data
0,
1,
12345,
-2345,
PHP_INT_MAX,

// float data
10.5,
-10.5,
12.3456789e10,
12.3456789e-10,
0.5,

// null data
null,

// boolean data
true,
false,

// empty data
"",
[],

// string data
"abcxyz",
"5.5",
"2",
"6.3e-2",

// object data
new classA(),

// resource variable
$fp,
];

// loop through each element of $inputs to check the behaviour of pow()
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can't the two variation tets just be combined into 1?

Running a double foreach loop seems more sensible? Also, not sure having the iteration numbers is that useful. Compared to knowing what were the operands.

A bunch of the "data" is also repeated, we don't care about the capitalization of null or the boolean values

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have removed all redundant use cases. I left two separate tests but may combine it later. I just wanted to add missing numerical strings to the tests.

$iterator = 1;
foreach($inputs as $input) {
echo "\n-- Iteration $iterator --\n";
foreach ($inputs as $input) {
try {
var_dump(pow($input, 3));
} catch (Error $e) {
echo $e->getMessage(), "\n";
}
$iterator++;
};
}
fclose($fp);

?>
--EXPECTF--
*** Testing pow() : usage variations ***

-- Iteration 1 --
int(0)

-- Iteration 2 --
int(1)

-- Iteration 3 --
float(1881365963625)

-- Iteration 4 --
float(-12895213625)

-- Iteration 5 --
float(9.903520300448E+27)

-- Iteration 6 --
float(1157.625)

-- Iteration 7 --
float(-1157.625)

-- Iteration 8 --
float(1.881676371789%dE+33)

-- Iteration 9 --
float(1.881676371789%dE-27)

-- Iteration 10 --
float(0.125)

-- Iteration 11 --
int(0)

-- Iteration 12 --
int(0)

-- Iteration 13 --
int(1)

-- Iteration 14 --
int(0)

-- Iteration 15 --
int(1)

-- Iteration 16 --
int(0)

-- Iteration 17 --
Unsupported operand types: string ** int

-- Iteration 18 --
Unsupported operand types: string ** int

-- Iteration 19 --
Unsupported operand types: array ** int

-- Iteration 20 --
Unsupported operand types: string ** int

-- Iteration 21 --
Unsupported operand types: string ** int

-- Iteration 22 --
Unsupported operand types: string ** int

-- Iteration 23 --
float(166.375)
int(8)
float(0.000250047)
Unsupported operand types: classA ** int

-- Iteration 24 --
int(0)

-- Iteration 25 --
int(0)

-- Iteration 26 --
Unsupported operand types: resource ** int
Loading