xref: /webtrees/tests/app/SurnameTradition/MatrilinealSurnameTraditionTest.php (revision 67994fb087e1b24564a780e4ae8aeff801733e35)
1<?php
2/**
3 * webtrees: online genealogy
4 * Copyright (C) 2018 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\SurnameTradition;
19
20use Fisharebest\Webtrees\SurnameTradition\MatrilinealSurnameTradition;
21use Fisharebest\Webtrees\SurnameTradition\SurnameTraditionInterface;
22
23/**
24 * Test harness for the class PatrilinenalSurnameTradition
25 */
26class MatrilinealSurnameTraditionTest extends \Fisharebest\Webtrees\TestCase
27{
28    /** @var SurnameTraditionInterface */
29    private $surname_tradition;
30
31    /**
32     * Prepare the environment for these tests
33     *
34     * @return void
35     */
36    public function setUp()
37    {
38        $this->surname_tradition = new MatrilinealSurnameTradition;
39    }
40
41    /**
42     * Test whether married surnames are used
43     *
44     * @covers \Fisharebest\Webtrees\SurnameTradition\MatrilinealSurnameTradition
45     *
46     * @return void
47     */
48    public function testMarriedSurnames()
49    {
50        $this->assertSame(false, $this->surname_tradition->hasMarriedNames());
51    }
52
53    /**
54     * Test whether surnames are used
55     *
56     * @covers \Fisharebest\Webtrees\SurnameTradition\MatrilinealSurnameTradition
57     *
58     * @return void
59     */
60    public function testSurnames()
61    {
62        $this->assertSame(true, $this->surname_tradition->hasSurnames());
63    }
64
65    /**
66     * Test new son names
67     *
68     * @covers \Fisharebest\Webtrees\SurnameTradition\MatrilinealSurnameTradition
69     *
70     * @return void
71     */
72    public function testNewSonNames()
73    {
74        $this->assertSame(
75            [
76                'NAME' => '/Black/',
77                'SURN' => 'Black',
78            ],
79            $this->surname_tradition->newChildNames('John /White/', 'Mary /Black/', 'M')
80        );
81    }
82
83    /**
84     * Test new daughter names
85     *
86     * @covers \Fisharebest\Webtrees\SurnameTradition\MatrilinealSurnameTradition
87     *
88     * @return void
89     */
90    public function testNewDaughterNames()
91    {
92        $this->assertSame(
93            [
94                'NAME' => '/Black/',
95                'SURN' => 'Black',
96            ],
97            $this->surname_tradition->newChildNames('John /White/', 'Mary /Black/', 'F')
98        );
99    }
100
101    /**
102     * Test new child names
103     *
104     * @covers \Fisharebest\Webtrees\SurnameTradition\MatrilinealSurnameTradition
105     *
106     * @return void
107     */
108    public function testNewChildNames()
109    {
110        $this->assertSame(
111            [
112                'NAME' => '/Black/',
113                'SURN' => 'Black',
114            ],
115            $this->surname_tradition->newChildNames('John /White/', 'Mary /Black/', 'U')
116        );
117    }
118
119    /**
120     * Test new child names
121     *
122     * @covers \Fisharebest\Webtrees\SurnameTradition\MatrilinealSurnameTradition
123     *
124     * @return void
125     */
126    public function testNewChildNamesWithSpfx()
127    {
128        $this->assertSame(
129            [
130                'NAME' => '/van Black/',
131                'SPFX' => 'van',
132                'SURN' => 'Black',
133            ],
134            $this->surname_tradition->newChildNames('John /de White/', 'Mary /van Black/', 'U')
135        );
136    }
137
138    /**
139     * Test new child names
140     *
141     * @covers \Fisharebest\Webtrees\SurnameTradition\MatrilinealSurnameTradition
142     *
143     * @return void
144     */
145    public function testNewChildNamesWithNoParentsNames()
146    {
147        $this->assertSame(
148            ['NAME' => '//'],
149            $this->surname_tradition->newChildNames('', '', 'U')
150        );
151    }
152
153    /**
154     * Test new father names
155     *
156     * @covers \Fisharebest\Webtrees\SurnameTradition\MatrilinealSurnameTradition
157     *
158     * @return void
159     */
160    public function testNewFatherNames()
161    {
162        $this->assertSame(
163            ['NAME' => '//'],
164            $this->surname_tradition->newParentNames('John /White/', 'M')
165        );
166    }
167
168    /**
169     * Test new mother names
170     *
171     * @covers \Fisharebest\Webtrees\SurnameTradition\MatrilinealSurnameTradition
172     *
173     * @return void
174     */
175    public function testNewMotherNames()
176    {
177        $this->assertSame(
178            [
179                'NAME' => '/White/',
180                'SURN' => 'White',
181            ],
182            $this->surname_tradition->newParentNames('John /White/', 'F')
183        );
184    }
185
186    /**
187     * Test new parent names
188     *
189     * @covers \Fisharebest\Webtrees\SurnameTradition\MatrilinealSurnameTradition
190     *
191     * @return void
192     */
193    public function testNewParentNames()
194    {
195        $this->assertSame(
196            ['NAME' => '//'],
197            $this->surname_tradition->newParentNames('John /White/', 'U')
198        );
199    }
200
201    /**
202     * Test new husband names
203     *
204     * @covers \Fisharebest\Webtrees\SurnameTradition\MatrilinealSurnameTradition
205     *
206     * @return void
207     */
208    public function testNewHusbandNames()
209    {
210        $this->assertSame(
211            ['NAME' => '//'],
212            $this->surname_tradition->newSpouseNames('Mary /Black/', 'M')
213        );
214    }
215
216    /**
217     * Test new wife names
218     *
219     * @covers \Fisharebest\Webtrees\SurnameTradition\MatrilinealSurnameTradition
220     *
221     * @return void
222     */
223    public function testNewWifeNames()
224    {
225        $this->assertSame(
226            ['NAME' => '//'],
227            $this->surname_tradition->newSpouseNames('John /White/', 'F')
228        );
229    }
230
231    /**
232     * Test new spouse names
233     *
234     * @covers \Fisharebest\Webtrees\SurnameTradition\MatrilinealSurnameTradition
235     *
236     * @return void
237     */
238    public function testNewSpouseNames()
239    {
240        $this->assertSame(
241            ['NAME' => '//'],
242            $this->surname_tradition->newSpouseNames('Chris /Green/', 'U')
243        );
244    }
245}
246