Completed
Push — master ( 7b4ba9...836792 )
by Mark
37s queued 33s
created

DGetTest::testDGetAsWorksheetFormula()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 3
c 0
b 0
f 0
dl 0
loc 6
rs 10
cc 1
nc 1
nop 4
1
<?php
2
3
namespace PhpOffice\PhpSpreadsheetTests\Calculation\Functions\Database;
4
5
use PhpOffice\PhpSpreadsheet\Calculation\Database\DGet;
6
use PhpOffice\PhpSpreadsheet\Calculation\Information\ExcelError;
7
8
class DGetTest extends AllSetupTeardown
9
{
10
    /**
11
     * @dataProvider providerDGet
12
     *
13
     * @param mixed $expectedResult
14
     * @param mixed $database
15
     * @param mixed $field
16
     * @param mixed $criteria
17
     */
18
    public function testDirectCallToDGet($expectedResult, $database, $field, $criteria): void
19
    {
20
        $result = DGet::evaluate($database, $field, $criteria);
21
        self::assertEqualsWithDelta($expectedResult, $result, 1.0e-12);
22
    }
23
24
    /**
25
     * @dataProvider providerDGet
26
     *
27
     * @param mixed $expectedResult
28
     * @param mixed $database
29
     * @param mixed $field
30
     * @param mixed $criteria
31
     */
32
    public function testDGetAsWorksheetFormula($expectedResult, $database, $field, $criteria): void
33
    {
34
        $this->prepareWorksheetWithFormula('DGET', $database, $field, $criteria);
35
36
        $result = $this->getSheet()->getCell(self::RESULT_CELL)->getCalculatedValue();
37
        self::assertEqualsWithDelta($expectedResult, $result, 1.0e-12);
38
    }
39
40
    public function providerDGet(): array
41
    {
42
        return [
43
            [
44
                ExcelError::NAN(),
45
                $this->database1(),
46
                'Yield',
47
                [
48
                    ['Tree'],
49
                    ['=Apple'],
50
                    ['=Pear'],
51
                ],
52
            ],
53
            [
54
                10,
55
                $this->database1(),
56
                'Yield',
57
                [
58
                    ['Tree', 'Height', 'Height'],
59
                    ['=Apple', '>10', '<16'],
60
                    ['=Pear', '>12', null],
61
                ],
62
            ],
63
            [
64
                188000,
65
                $this->database2(),
66
                'Sales',
67
                [
68
                    ['Sales Rep.', 'Quarter'],
69
                    ['Tina', 4],
70
                ],
71
            ],
72
            [
73
                ExcelError::NAN(),
74
                $this->database2(),
75
                'Sales',
76
                [
77
                    ['Area', 'Quarter'],
78
                    ['South', 4],
79
                ],
80
            ],
81
            'omitted field name' => [
82
                ExcelError::VALUE(),
83
                $this->database1(),
84
                null,
85
                $this->database1(),
86
            ],
87
        ];
88
    }
89
}
90