xref: /webtrees/tests/app/AgeTest.php (revision 22e0f542336fe9b078a0beb1c42023cbe55d22bb)
1<?php
2/**
3 * webtrees: online genealogy
4 * Copyright (C) 2019 webtrees development team
5 * This program is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation, either version 3 of the License, or
8 * (at your option) any later version.
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16declare(strict_types=1);
17
18namespace Fisharebest\Webtrees;
19
20use Fisharebest\Webtrees\Age as WebtreesAge;
21
22/**
23 * Test the Age functions
24 */
25class AgeTest extends TestCase
26{
27    /**
28     * Test that the class exists
29     *
30     * @return void
31     */
32    public function testClassExists(): void
33    {
34        $this->assertTrue(class_exists('\Fisharebest\Webtrees\Age'));
35    }
36
37    /**
38     * @dataProvider ageProvider
39     * @covers \Fisharebest\Webtrees\Age::__construct
40     * @covers \Fisharebest\Webtrees\Age::asText
41     * @covers \Fisharebest\Webtrees\Age::extractNumber
42     * @return void
43     */
44    public function testConstructor($ageTest, $ageAsText):void
45    {
46        $age = new Age($ageTest);
47        $this->assertSame($ageAsText, $age->asText());
48    }
49
50    public function ageProvider()
51    {
52        return [
53          ['stillborn','(stillborn)'],
54          ['infant','(in infancy)'],
55          ['child','(in childhood)'],
56          ['6y 3m','(aged 6 years, 3 months)'],
57          ['> 6y 3m 2d','(aged more than 6 years, 3 months, 2 days)'],
58          ['< 6y 3m 2d','(aged less than 6 years, 3 months, 2 days)'],
59          ['3w','(aged 3 weeks)'],
60          ['6y','(aged 6)']
61        ];
62    }
63}
64