Skip to content

Commit 8e59bf0

Browse files
author
Zoe Slattery
committed
Test cases for sin, cos, tan, asin, acos, atan, sinh, cosh, tanh, asinh, acosh, atanh.
1 parent 81313ae commit 8e59bf0

37 files changed

+2039
-0
lines changed
+69
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
--TEST--
2+
Test return type and value for expected input acos()
3+
--INI--
4+
precision = 14
5+
--FILE--
6+
<?php
7+
/*
8+
* proto float acos(float number)
9+
* Function is implemented in ext/standard/math.c
10+
*/
11+
12+
$file_path = dirname(__FILE__);
13+
require($file_path."/allowed_rounding_error.inc");
14+
15+
16+
//output is in degrees
17+
18+
echo "acos .5 = ";
19+
$acosv1 = 360.0 * acos(0.5) / (2.0 * M_PI );
20+
var_dump($acosv1);
21+
if (allowed_rounding_error($acosv1 ,60 )) {
22+
echo "Pass\n";
23+
}
24+
else {
25+
echo "Fail\n";
26+
}
27+
28+
echo "acos 0.86602540378444 = ";
29+
$acosv2 = 360.0 * acos(0.86602540378444) / (2.0 * M_PI );
30+
var_dump($acosv2);
31+
if (allowed_rounding_error($acosv2 ,30 )) {
32+
echo "Pass\n";
33+
}
34+
else {
35+
echo "Fail\n";
36+
}
37+
38+
39+
echo "acos 1.0 = ";
40+
$acosv3 = 360.0 * acos(1.0) / (2.0 * M_PI);
41+
var_dump($acosv3);
42+
if (allowed_rounding_error($acosv3 ,0 )) {
43+
echo "Pass\n";
44+
}
45+
else {
46+
echo "Fail\n";
47+
}
48+
49+
50+
echo "acos 0.0 = ";
51+
$acosv4 = 360.0 * acos(0.0) / (2.0 * M_PI );
52+
var_dump($acosv4);
53+
if (allowed_rounding_error($acosv3 ,0 )) {
54+
echo "Pass\n";
55+
}
56+
else {
57+
echo "Fail\n";
58+
}
59+
60+
?>
61+
--EXPECTF--
62+
acos .5 = float(%f)
63+
Pass
64+
acos 0.86602540378444 = float(%f)
65+
Pass
66+
acos 1.0 = float(%f)
67+
Pass
68+
acos 0.0 = float(%f)
69+
Pass
+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
--TEST--
2+
Test wrong number of arguments for acos()
3+
--INI--
4+
--FILE--
5+
<?php
6+
/*
7+
* proto float acos(float number)
8+
* Function is implemented in ext/standard/math.c
9+
*/
10+
11+
$arg_0 = 1.0;
12+
$extra_arg = 1;
13+
14+
echo "\nToo many arguments\n";
15+
var_dump(acos($arg_0, $extra_arg));
16+
17+
echo "\nToo few arguments\n";
18+
var_dump(acos());
19+
20+
?>
21+
--EXPECTF--
22+
Too many arguments
23+
24+
Warning: acos() expects exactly 1 parameter, 2 given in %s on line 11
25+
NULL
26+
27+
Too few arguments
28+
29+
Warning: acos() expects exactly 1 parameter, 0 given in %s on line 14
30+
NULL
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
--TEST--
2+
Test variations in usage of acos()
3+
--INI--
4+
precision=10
5+
--FILE--
6+
<?php
7+
/*
8+
* proto float acos(float number)
9+
* Function is implemented in ext/standard/math.c
10+
*/
11+
12+
13+
//Test acos with a different input values
14+
15+
$values = array(23,
16+
-23,
17+
2.345e1,
18+
-2.345e1,
19+
0x17,
20+
027,
21+
"23",
22+
"23.45",
23+
"2.345e1",
24+
"nonsense",
25+
"1000",
26+
"1000ABC",
27+
null,
28+
true,
29+
false);
30+
31+
for ($i = 0; $i < count($values); $i++) {
32+
$res = acos($values[$i]);
33+
var_dump($res);
34+
}
35+
36+
?>
37+
--EXPECTF--
38+
float(NAN)
39+
float(NAN)
40+
float(NAN)
41+
float(NAN)
42+
float(NAN)
43+
float(NAN)
44+
float(NAN)
45+
float(NAN)
46+
float(NAN)
47+
48+
Warning: acos() expects parameter 1 to be double, string given in %s on line 27
49+
NULL
50+
float(NAN)
51+
52+
Notice: A non well formed numeric value encountered in %s on line 27
53+
float(NAN)
54+
float(1.570796327)
55+
float(0)
56+
float(1.570796327)
57+
--UEXPECTF--
58+
float(NAN)
59+
float(NAN)
60+
float(NAN)
61+
float(NAN)
62+
float(NAN)
63+
float(NAN)
64+
float(NAN)
65+
float(NAN)
66+
float(NAN)
67+
68+
Warning: acos() expects parameter 1 to be double, Unicode string given in %s on line 27
69+
NULL
70+
float(NAN)
71+
72+
Notice: A non well formed numeric value encountered in %s on line 27
73+
float(NAN)
74+
float(1.570796327)
75+
float(0)
76+
float(1.570796327)
+46
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
--TEST--
2+
Test return type and value for expected input acosh()
3+
--SKIPIF--
4+
<?php
5+
if(substr(PHP_OS, 0, 3) == "WIN")
6+
die ("skip - function not supported on Windows");
7+
?>
8+
--INI--
9+
precision = 14
10+
--FILE--
11+
<?php
12+
/*
13+
* proto float acosh(float number)
14+
* Function is implemented in ext/standard/math.c
15+
*/
16+
17+
$file_path = dirname(__FILE__);
18+
require($file_path."/allowed_rounding_error.inc");
19+
20+
echo "acosh 1.1276259652064= ";
21+
var_dump(acosh(1.1276259652064));
22+
if (allowed_rounding_error(acosh(1.1276259652064), 0.5))
23+
{
24+
echo "Pass\n";
25+
}
26+
else {
27+
echo "Fail\n";
28+
}
29+
30+
echo "acosh 10.067661995778= ";
31+
var_dump(acosh(10.067661995778));
32+
if (allowed_rounding_error(acosh(10.067661995778), 3.0))
33+
{
34+
echo "Pass\n";
35+
}
36+
else {
37+
echo "Fail\n";
38+
}
39+
40+
41+
?>
42+
--EXPECTF--
43+
acosh 1.1276259652064= float(%f)
44+
Pass
45+
acosh 10.067661995778= float(%f)
46+
Pass
+35
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
--TEST--
2+
Test wrong number of arguments for acosh()
3+
--SKIPIF--
4+
<?php
5+
if(substr(PHP_OS, 0, 3) == "WIN" )
6+
die ("skip - function not supported on Windows");
7+
?>
8+
--INI--
9+
--FILE--
10+
<?php
11+
/*
12+
* proto float acosh(float number)
13+
* Function is implemented in ext/standard/math.c
14+
*/
15+
16+
$arg_0 = 1.0;
17+
$extra_arg = 1;
18+
19+
echo "\nToo many arguments\n";
20+
var_dump(acosh($arg_0, $extra_arg));
21+
22+
echo "\nToo few arguments\n";
23+
var_dump(acosh());
24+
25+
?>
26+
--EXPECTF--
27+
Too many arguments
28+
29+
Warning: acosh() expects exactly 1 parameter, 2 given in %s on line 11
30+
NULL
31+
32+
Too few arguments
33+
34+
Warning: acosh() expects exactly 1 parameter, 0 given in %s on line 14
35+
NULL
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
--TEST--
2+
Test variations in usage of acosh()
3+
--SKIPIF--
4+
<?php
5+
if(substr(PHP_OS, 0, 3) == "WIN" )
6+
die ("skip - function not supported on Windows");
7+
?>
8+
--INI--
9+
precision = 10
10+
--FILE--
11+
<?php
12+
/*
13+
* proto float acosh(float number)
14+
* Function is implemented in ext/standard/math.c
15+
*/
16+
17+
18+
//Test acosh with a different input values
19+
20+
$values = array(23,
21+
-23,
22+
2.345e1,
23+
-2.345e1,
24+
0x17,
25+
027,
26+
"23",
27+
"23.45",
28+
"2.345e1",
29+
"nonsense",
30+
"1000",
31+
"1000ABC",
32+
null,
33+
true,
34+
false);
35+
36+
for ($i = 0; $i < count($values); $i++) {
37+
$res = acosh($values[$i]);
38+
var_dump($res);
39+
}
40+
41+
?>
42+
--EXPECTF--
43+
float(3.828168471)
44+
float(NAN)
45+
float(3.847562739)
46+
float(NAN)
47+
float(3.828168471)
48+
float(3.828168471)
49+
float(3.828168471)
50+
float(3.847562739)
51+
float(3.847562739)
52+
53+
Warning: acosh() expects parameter 1 to be double, string given in %s on line 27
54+
NULL
55+
float(7.60090221)
56+
57+
Notice: A non well formed numeric value encountered in %s on line 27
58+
float(7.60090221)
59+
float(NAN)
60+
float(0)
61+
float(NAN)
62+
--UEXPECTF--
63+
float(3.828168471)
64+
float(NAN)
65+
float(3.847562739)
66+
float(NAN)
67+
float(3.828168471)
68+
float(3.828168471)
69+
float(3.828168471)
70+
float(3.847562739)
71+
float(3.847562739)
72+
73+
Warning: acosh() expects parameter 1 to be double, Unicode string given in %s on line 27
74+
NULL
75+
float(7.60090221)
76+
77+
Notice: A non well formed numeric value encountered in %s on line 27
78+
float(7.60090221)
79+
float(NAN)
80+
float(0)
81+
float(NAN)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<?php
2+
function allowed_rounding_error ($number, $expected) {
3+
4+
//different machines may give slightly different floating point numbers
5+
//This assumes that the results will be the same to + or - 1.0E-10.
6+
7+
$small_number = 1.0e-10;
8+
$min = $expected - $small_number;
9+
$max = $expected + $small_number;
10+
11+
if ($number < $max && $number > $min ) {
12+
return true;
13+
}
14+
else {
15+
return false;
16+
}
17+
}
18+
?>

0 commit comments

Comments
 (0)