xref: /webtrees/tests/app/AgeTest.php (revision 9b152ff9230017d2c03aa1bf603a98b18250446d)
1<?php
2
3/**
4 * webtrees: online genealogy
5 * Copyright (C) 2019 webtrees development team
6 * This program is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
9 * (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17
18declare(strict_types=1);
19
20namespace Fisharebest\Webtrees;
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