1323788f4SGreg Roach<?php 2323788f4SGreg Roach/** 3323788f4SGreg Roach * webtrees: online genealogy 48fcd0d32SGreg Roach * Copyright (C) 2019 webtrees development team 5323788f4SGreg Roach * This program is free software: you can redistribute it and/or modify 6323788f4SGreg Roach * it under the terms of the GNU General Public License as published by 7323788f4SGreg Roach * the Free Software Foundation, either version 3 of the License, or 8323788f4SGreg Roach * (at your option) any later version. 9323788f4SGreg Roach * This program is distributed in the hope that it will be useful, 10323788f4SGreg Roach * but WITHOUT ANY WARRANTY; without even the implied warranty of 11323788f4SGreg Roach * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12323788f4SGreg Roach * GNU General Public License for more details. 13323788f4SGreg Roach * You should have received a copy of the GNU General Public License 14323788f4SGreg Roach * along with this program. If not, see <http://www.gnu.org/licenses/>. 15323788f4SGreg Roach */ 16e7f56f2aSGreg Roachdeclare(strict_types=1); 17e7f56f2aSGreg Roach 1884e2cf4eSGreg Roachnamespace Fisharebest\Webtrees\SurnameTradition; 19c1010edaSGreg Roach 20323788f4SGreg Roach/** 21323788f4SGreg Roach * Test harness for the class PatrilinenalSurnameTradition 22323788f4SGreg Roach */ 2384e2cf4eSGreg Roachclass MatrilinealSurnameTraditionTest extends \Fisharebest\Webtrees\TestCase 24c1010edaSGreg Roach{ 25323788f4SGreg Roach /** @var SurnameTraditionInterface */ 26323788f4SGreg Roach private $surname_tradition; 27323788f4SGreg Roach 28323788f4SGreg Roach /** 29323788f4SGreg Roach * Prepare the environment for these tests 3052348eb8SGreg Roach * 3152348eb8SGreg Roach * @return void 32323788f4SGreg Roach */ 335c48bcd6SGreg Roach protected function setUp(): void 34c1010edaSGreg Roach { 350115bc16SGreg Roach parent::setUp(); 360115bc16SGreg Roach 3774d6dc0eSGreg Roach $this->surname_tradition = new MatrilinealSurnameTradition(); 38323788f4SGreg Roach } 39323788f4SGreg Roach 40323788f4SGreg Roach /** 41323788f4SGreg Roach * Test whether married surnames are used 4217d74f3aSGreg Roach * 4315d603e7SGreg Roach * @covers \Fisharebest\Webtrees\SurnameTradition\MatrilinealSurnameTradition 4452348eb8SGreg Roach * 4552348eb8SGreg Roach * @return void 46323788f4SGreg Roach */ 479b802b22SGreg Roach public function testMarriedSurnames(): void 48c1010edaSGreg Roach { 49*a32e6421SGreg Roach $this->assertFalse($this->surname_tradition->hasMarriedNames()); 50323788f4SGreg Roach } 51323788f4SGreg Roach 52323788f4SGreg Roach /** 53c1ec7145SGreg Roach * Test whether surnames are used 5417d74f3aSGreg Roach * 5515d603e7SGreg Roach * @covers \Fisharebest\Webtrees\SurnameTradition\MatrilinealSurnameTradition 5652348eb8SGreg Roach * 5752348eb8SGreg Roach * @return void 58c1ec7145SGreg Roach */ 599b802b22SGreg Roach public function testSurnames(): void 60c1010edaSGreg Roach { 61*a32e6421SGreg Roach $this->assertTrue($this->surname_tradition->hasSurnames()); 62c1ec7145SGreg Roach } 63c1ec7145SGreg Roach 64c1ec7145SGreg Roach /** 65323788f4SGreg Roach * Test new son names 6617d74f3aSGreg Roach * 6715d603e7SGreg Roach * @covers \Fisharebest\Webtrees\SurnameTradition\MatrilinealSurnameTradition 6852348eb8SGreg Roach * 6952348eb8SGreg Roach * @return void 70323788f4SGreg Roach */ 719b802b22SGreg Roach public function testNewSonNames(): void 72c1010edaSGreg Roach { 73323788f4SGreg Roach $this->assertSame( 74c1010edaSGreg Roach [ 75c1010edaSGreg Roach 'NAME' => '/Black/', 76c1010edaSGreg Roach 'SURN' => 'Black', 77c1010edaSGreg Roach ], 78323788f4SGreg Roach $this->surname_tradition->newChildNames('John /White/', 'Mary /Black/', 'M') 79323788f4SGreg Roach ); 80323788f4SGreg Roach } 81323788f4SGreg Roach 82323788f4SGreg Roach /** 83323788f4SGreg Roach * Test new daughter names 8417d74f3aSGreg Roach * 8515d603e7SGreg Roach * @covers \Fisharebest\Webtrees\SurnameTradition\MatrilinealSurnameTradition 8652348eb8SGreg Roach * 8752348eb8SGreg Roach * @return void 88323788f4SGreg Roach */ 899b802b22SGreg Roach public function testNewDaughterNames(): void 90c1010edaSGreg Roach { 91323788f4SGreg Roach $this->assertSame( 92c1010edaSGreg Roach [ 93c1010edaSGreg Roach 'NAME' => '/Black/', 94c1010edaSGreg Roach 'SURN' => 'Black', 95c1010edaSGreg Roach ], 96323788f4SGreg Roach $this->surname_tradition->newChildNames('John /White/', 'Mary /Black/', 'F') 97323788f4SGreg Roach ); 98323788f4SGreg Roach } 99323788f4SGreg Roach 100323788f4SGreg Roach /** 101323788f4SGreg Roach * Test new child names 10217d74f3aSGreg Roach * 10315d603e7SGreg Roach * @covers \Fisharebest\Webtrees\SurnameTradition\MatrilinealSurnameTradition 10452348eb8SGreg Roach * 10552348eb8SGreg Roach * @return void 106323788f4SGreg Roach */ 1079b802b22SGreg Roach public function testNewChildNames(): void 108c1010edaSGreg Roach { 109323788f4SGreg Roach $this->assertSame( 110c1010edaSGreg Roach [ 111c1010edaSGreg Roach 'NAME' => '/Black/', 112c1010edaSGreg Roach 'SURN' => 'Black', 113c1010edaSGreg Roach ], 114323788f4SGreg Roach $this->surname_tradition->newChildNames('John /White/', 'Mary /Black/', 'U') 115323788f4SGreg Roach ); 116323788f4SGreg Roach } 117323788f4SGreg Roach 118323788f4SGreg Roach /** 119323788f4SGreg Roach * Test new child names 12017d74f3aSGreg Roach * 12115d603e7SGreg Roach * @covers \Fisharebest\Webtrees\SurnameTradition\MatrilinealSurnameTradition 12252348eb8SGreg Roach * 12352348eb8SGreg Roach * @return void 124323788f4SGreg Roach */ 1259b802b22SGreg Roach public function testNewChildNamesWithSpfx(): void 126c1010edaSGreg Roach { 127323788f4SGreg Roach $this->assertSame( 128c1010edaSGreg Roach [ 129c1010edaSGreg Roach 'NAME' => '/van Black/', 130c1010edaSGreg Roach 'SPFX' => 'van', 131c1010edaSGreg Roach 'SURN' => 'Black', 132c1010edaSGreg Roach ], 133323788f4SGreg Roach $this->surname_tradition->newChildNames('John /de White/', 'Mary /van Black/', 'U') 134323788f4SGreg Roach ); 135323788f4SGreg Roach } 136323788f4SGreg Roach 137323788f4SGreg Roach /** 1381677a03aSGreg Roach * Test new child names 13917d74f3aSGreg Roach * 14015d603e7SGreg Roach * @covers \Fisharebest\Webtrees\SurnameTradition\MatrilinealSurnameTradition 14152348eb8SGreg Roach * 14252348eb8SGreg Roach * @return void 1431677a03aSGreg Roach */ 1449b802b22SGreg Roach public function testNewChildNamesWithNoParentsNames(): void 145c1010edaSGreg Roach { 1461677a03aSGreg Roach $this->assertSame( 14713abd6f3SGreg Roach ['NAME' => '//'], 1481677a03aSGreg Roach $this->surname_tradition->newChildNames('', '', 'U') 1491677a03aSGreg Roach ); 1501677a03aSGreg Roach } 1511677a03aSGreg Roach 1521677a03aSGreg Roach /** 153323788f4SGreg Roach * Test new father names 15417d74f3aSGreg Roach * 15515d603e7SGreg Roach * @covers \Fisharebest\Webtrees\SurnameTradition\MatrilinealSurnameTradition 15652348eb8SGreg Roach * 15752348eb8SGreg Roach * @return void 158323788f4SGreg Roach */ 1599b802b22SGreg Roach public function testNewFatherNames(): void 160c1010edaSGreg Roach { 161323788f4SGreg Roach $this->assertSame( 16213abd6f3SGreg Roach ['NAME' => '//'], 163323788f4SGreg Roach $this->surname_tradition->newParentNames('John /White/', 'M') 164323788f4SGreg Roach ); 165323788f4SGreg Roach } 166323788f4SGreg Roach 167323788f4SGreg Roach /** 168323788f4SGreg Roach * Test new mother names 16917d74f3aSGreg Roach * 17015d603e7SGreg Roach * @covers \Fisharebest\Webtrees\SurnameTradition\MatrilinealSurnameTradition 17152348eb8SGreg Roach * 17252348eb8SGreg Roach * @return void 173323788f4SGreg Roach */ 1749b802b22SGreg Roach public function testNewMotherNames(): void 175c1010edaSGreg Roach { 176323788f4SGreg Roach $this->assertSame( 177c1010edaSGreg Roach [ 178c1010edaSGreg Roach 'NAME' => '/White/', 179c1010edaSGreg Roach 'SURN' => 'White', 180c1010edaSGreg Roach ], 181323788f4SGreg Roach $this->surname_tradition->newParentNames('John /White/', 'F') 182323788f4SGreg Roach ); 183323788f4SGreg Roach } 184323788f4SGreg Roach 185323788f4SGreg Roach /** 186323788f4SGreg Roach * Test new parent names 18717d74f3aSGreg Roach * 18815d603e7SGreg Roach * @covers \Fisharebest\Webtrees\SurnameTradition\MatrilinealSurnameTradition 18952348eb8SGreg Roach * 19052348eb8SGreg Roach * @return void 191323788f4SGreg Roach */ 1929b802b22SGreg Roach public function testNewParentNames(): void 193c1010edaSGreg Roach { 194323788f4SGreg Roach $this->assertSame( 19513abd6f3SGreg Roach ['NAME' => '//'], 196323788f4SGreg Roach $this->surname_tradition->newParentNames('John /White/', 'U') 197323788f4SGreg Roach ); 198323788f4SGreg Roach } 199323788f4SGreg Roach 200323788f4SGreg Roach /** 201323788f4SGreg Roach * Test new husband names 20217d74f3aSGreg Roach * 20315d603e7SGreg Roach * @covers \Fisharebest\Webtrees\SurnameTradition\MatrilinealSurnameTradition 20452348eb8SGreg Roach * 20552348eb8SGreg Roach * @return void 206323788f4SGreg Roach */ 2079b802b22SGreg Roach public function testNewHusbandNames(): void 208c1010edaSGreg Roach { 209323788f4SGreg Roach $this->assertSame( 21013abd6f3SGreg Roach ['NAME' => '//'], 211323788f4SGreg Roach $this->surname_tradition->newSpouseNames('Mary /Black/', 'M') 212323788f4SGreg Roach ); 213323788f4SGreg Roach } 214323788f4SGreg Roach 215323788f4SGreg Roach /** 216323788f4SGreg Roach * Test new wife names 21717d74f3aSGreg Roach * 21815d603e7SGreg Roach * @covers \Fisharebest\Webtrees\SurnameTradition\MatrilinealSurnameTradition 21952348eb8SGreg Roach * 22052348eb8SGreg Roach * @return void 221323788f4SGreg Roach */ 2229b802b22SGreg Roach public function testNewWifeNames(): void 223c1010edaSGreg Roach { 224323788f4SGreg Roach $this->assertSame( 22513abd6f3SGreg Roach ['NAME' => '//'], 226323788f4SGreg Roach $this->surname_tradition->newSpouseNames('John /White/', 'F') 227323788f4SGreg Roach ); 228323788f4SGreg Roach } 229323788f4SGreg Roach 230323788f4SGreg Roach /** 231323788f4SGreg Roach * Test new spouse names 23217d74f3aSGreg Roach * 23315d603e7SGreg Roach * @covers \Fisharebest\Webtrees\SurnameTradition\MatrilinealSurnameTradition 23452348eb8SGreg Roach * 23552348eb8SGreg Roach * @return void 236323788f4SGreg Roach */ 2379b802b22SGreg Roach public function testNewSpouseNames(): void 238c1010edaSGreg Roach { 239323788f4SGreg Roach $this->assertSame( 24013abd6f3SGreg Roach ['NAME' => '//'], 241323788f4SGreg Roach $this->surname_tradition->newSpouseNames('Chris /Green/', 'U') 242323788f4SGreg Roach ); 243323788f4SGreg Roach } 244323788f4SGreg Roach} 245