xref: /webtrees/tests/app/SurnameTradition/MatrilinealSurnameTraditionTest.php (revision 1677a03a992c68f92014c7e3eeed2954454e3874)
1<?php
2
3/**
4 * webtrees: online genealogy
5 * Copyright (C) 2015 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 */
17use Fisharebest\Webtrees\SurnameTradition\MatrilinealSurnameTradition;
18use Fisharebest\Webtrees\SurnameTradition\SurnameTraditionInterface;
19
20/**
21 * Test harness for the class PatrilinenalSurnameTradition
22 */
23class MatrilinealSurnameTraditionTest extends \PHPUnit_Framework_TestCase {
24	/** @var SurnameTraditionInterface */
25	private $surname_tradition;
26
27	/**
28	 * Prepare the environment for these tests
29	 */
30	public function setUp() {
31		$this->surname_tradition = new MatrilinealSurnameTradition;
32	}
33
34	/**
35	 * Test whether married surnames are used
36	 */
37	public function testMarriedSurnames() {
38		$this->assertSame(false, $this->surname_tradition->hasMarriedNames());
39	}
40
41	/**
42	 * Test whether surnames are used
43	 */
44	public function testSurnames() {
45		$this->assertSame(true, $this->surname_tradition->hasSurnames());
46	}
47
48	/**
49	 * Test new son names
50	 */
51	public function testNewSonNames() {
52		$this->assertSame(
53			array('NAME' => '/Black/', 'SURN' => 'Black'),
54			$this->surname_tradition->newChildNames('John /White/', 'Mary /Black/', 'M')
55		);
56	}
57
58	/**
59	 * Test new daughter names
60	 */
61	public function testNewDaughterNames() {
62		$this->assertSame(
63			array('NAME' => '/Black/', 'SURN' => 'Black'),
64			$this->surname_tradition->newChildNames('John /White/', 'Mary /Black/', 'F')
65		);
66	}
67
68	/**
69	 * Test new child names
70	 */
71	public function testNewChildNames() {
72		$this->assertSame(
73			array('NAME' => '/Black/', 'SURN' => 'Black'),
74			$this->surname_tradition->newChildNames('John /White/', 'Mary /Black/', 'U')
75		);
76	}
77
78	/**
79	 * Test new child names
80	 */
81	public function testNewChildNamesWithSpfx() {
82		$this->assertSame(
83			array('NAME' => '/van Black/', 'SPFX' => 'van', 'SURN' => 'Black'),
84			$this->surname_tradition->newChildNames('John /de White/', 'Mary /van Black/', 'U')
85		);
86	}
87
88	/**
89	 * Test new child names
90	 */
91	public function testNewChildNamesWithNoParentsNames() {
92		$this->assertSame(
93			array('NAME' => '//'),
94			$this->surname_tradition->newChildNames('', '', 'U')
95		);
96	}
97
98	/**
99	 * Test new father names
100	 */
101	public function testNewFatherNames() {
102		$this->assertSame(
103			array('NAME' => '//'),
104			$this->surname_tradition->newParentNames('John /White/', 'M')
105		);
106	}
107
108	/**
109	 * Test new mother names
110	 */
111	public function testNewMotherNames() {
112		$this->assertSame(
113			array('NAME' => '/White/', 'SURN' => 'White'),
114			$this->surname_tradition->newParentNames('John /White/', 'F')
115		);
116	}
117
118	/**
119	 * Test new parent names
120	 */
121	public function testNewParentNames() {
122		$this->assertSame(
123			array('NAME' => '//'),
124			$this->surname_tradition->newParentNames('John /White/', 'U')
125		);
126	}
127
128	/**
129	 * Test new husband names
130	 */
131	public function testNewHusbandNames() {
132		$this->assertSame(
133			array('NAME' => '//'),
134			$this->surname_tradition->newSpouseNames('Mary /Black/', 'M')
135		);
136	}
137
138	/**
139	 * Test new wife names
140	 */
141	public function testNewWifeNames() {
142		$this->assertSame(
143			array('NAME' => '//'),
144			$this->surname_tradition->newSpouseNames('John /White/', 'F')
145		);
146	}
147
148	/**
149	 * Test new spouse names
150	 */
151	public function testNewSpouseNames() {
152		$this->assertSame(
153			array('NAME' => '//'),
154			$this->surname_tradition->newSpouseNames('Chris /Green/', 'U')
155		);
156	}
157}
158