xref: /webtrees/tests/app/AgeTest.php (revision 76937c180deb84856ce02e1dd263df1d97c8c03a)
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     *
43     * @param $ageTest
44     * @param $ageAsText
45     *
46     * @return void
47     */
48    public function testConstructor($ageTest, $ageAsText): void
49    {
50        $age = new Age($ageTest);
51        $this->assertSame($ageAsText, $age->asText());
52    }
53
54    public function ageProvider()
55    {
56        return [
57          ['stillborn','(stillborn)'],
58          ['infant','(in infancy)'],
59          ['child','(in childhood)'],
60          ['6y 3m','(aged 6 years, 3 months)'],
61          ['> 6y 3m 2d','(aged more than 6 years, 3 months, 2 days)'],
62          ['< 6y 3m 2d','(aged less than 6 years, 3 months, 2 days)'],
63          ['3w','(aged 3 weeks)'],
64          ['6y','(aged 6)']
65        ];
66    }
67}
68