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 */ 17declare(strict_types=1); 18 19namespace Fisharebest\Webtrees\SurnameTradition; 20 21/** 22 * Test harness for the class PaternalSurnameTradition 23 */ 24class PaternalSurnameTraditionTest extends \Fisharebest\Webtrees\TestCase 25{ 26 /** @var SurnameTraditionInterface */ 27 private $surname_tradition; 28 29 /** 30 * Prepare the environment for these tests 31 * 32 * @return void 33 */ 34 protected function setUp(): void 35 { 36 parent::setUp(); 37 38 $this->surname_tradition = new PaternalSurnameTradition(); 39 } 40 41 /** 42 * Test whether married surnames are used 43 * 44 * @covers \Fisharebest\Webtrees\SurnameTradition\PaternalSurnameTradition 45 * 46 * @return void 47 */ 48 public function testMarriedSurnames(): void 49 { 50 $this->assertTrue($this->surname_tradition->hasMarriedNames()); 51 } 52 53 /** 54 * Test whether surnames are used 55 * 56 * @covers \Fisharebest\Webtrees\SurnameTradition\PaternalSurnameTradition 57 * 58 * @return void 59 */ 60 public function testSurnames(): void 61 { 62 $this->assertTrue($this->surname_tradition->hasSurnames()); 63 } 64 65 /** 66 * Test new son names 67 * 68 * @covers \Fisharebest\Webtrees\SurnameTradition\PaternalSurnameTradition 69 * 70 * @return void 71 */ 72 public function testNewSonNames(): void 73 { 74 $this->assertSame( 75 [ 76 'NAME' => '/White/', 77 'SURN' => 'White', 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\PaternalSurnameTradition 87 * 88 * @return void 89 */ 90 public function testNewDaughterNames(): void 91 { 92 $this->assertSame( 93 [ 94 'NAME' => '/White/', 95 'SURN' => 'White', 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\PaternalSurnameTradition 105 * 106 * @return void 107 */ 108 public function testNewChildNames(): void 109 { 110 $this->assertSame( 111 [ 112 'NAME' => '/White/', 113 'SURN' => 'White', 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\PaternalSurnameTradition 123 * 124 * @return void 125 */ 126 public function testNewChildNamesWithSpfx(): void 127 { 128 $this->assertSame( 129 [ 130 'NAME' => '/de White/', 131 'SPFX' => 'de', 132 'SURN' => 'White', 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\PaternalSurnameTradition 142 * 143 * @return void 144 */ 145 public function testNewChildNamesWithMultipleSpfx(): void 146 { 147 $this->assertSame( 148 [ 149 'NAME' => '/van der White/', 150 'SPFX' => 'van der', 151 'SURN' => 'White', 152 ], 153 $this->surname_tradition->newChildNames('John /van der White/', 'Mary /van Black/', 'U') 154 ); 155 } 156 157 /** 158 * Test new child names 159 * 160 * @covers \Fisharebest\Webtrees\SurnameTradition\PaternalSurnameTradition 161 * 162 * @return void 163 */ 164 public function testNewChildNamesWithDutchSpfx(): void 165 { 166 $this->assertSame( 167 [ 168 'NAME' => '/\'t White/', 169 'SPFX' => '\'t', 170 'SURN' => 'White', 171 ], 172 $this->surname_tradition->newChildNames('John /\'t White/', 'Mary /van Black/', 'U') 173 ); 174 $this->assertSame( 175 [ 176 'NAME' => '/’t White/', 177 'SPFX' => '’t', 178 'SURN' => 'White', 179 ], 180 $this->surname_tradition->newChildNames('John /’t White/', 'Mary /van Black/', 'U') 181 ); 182 } 183 184 /** 185 * Test new child names 186 * 187 * @covers \Fisharebest\Webtrees\SurnameTradition\PaternalSurnameTradition 188 * 189 * @return void 190 */ 191 public function testNewChildNamesWithMultipleDutchSpfx(): void 192 { 193 $this->assertSame( 194 [ 195 'NAME' => '/van \'t White/', 196 'SPFX' => 'van \'t', 197 'SURN' => 'White', 198 ], 199 $this->surname_tradition->newChildNames('John /van \'t White/', 'Mary /van Black/', 'U') 200 ); 201 $this->assertSame( 202 [ 203 'NAME' => '/van ’t White/', 204 'SPFX' => 'van ’t', 205 'SURN' => 'White', 206 ], 207 $this->surname_tradition->newChildNames('John /van ’t White/', 'Mary /van Black/', 'U') 208 ); 209 } 210 211 /** 212 * Test new father names 213 * 214 * @covers \Fisharebest\Webtrees\SurnameTradition\PaternalSurnameTradition 215 * 216 * @return void 217 */ 218 public function testNewFatherNames(): void 219 { 220 $this->assertSame( 221 [ 222 'NAME' => '/White/', 223 'SURN' => 'White', 224 ], 225 $this->surname_tradition->newParentNames('John /White/', 'M') 226 ); 227 } 228 229 /** 230 * Test new mother names 231 * 232 * @covers \Fisharebest\Webtrees\SurnameTradition\PaternalSurnameTradition 233 * 234 * @return void 235 */ 236 public function testNewMotherNames(): void 237 { 238 $this->assertSame( 239 [ 240 'NAME' => '//', 241 '_MARNM' => '/White/', 242 ], 243 $this->surname_tradition->newParentNames('John /White/', 'F') 244 ); 245 } 246 247 /** 248 * Test new parent names 249 * 250 * @covers \Fisharebest\Webtrees\SurnameTradition\PaternalSurnameTradition 251 * 252 * @return void 253 */ 254 public function testNewParentNames(): void 255 { 256 $this->assertSame( 257 ['NAME' => '//'], 258 $this->surname_tradition->newParentNames('John /White/', 'U') 259 ); 260 } 261 262 /** 263 * Test new husband names 264 * 265 * @covers \Fisharebest\Webtrees\SurnameTradition\PaternalSurnameTradition 266 * 267 * @return void 268 */ 269 public function testNewHusbandNames(): void 270 { 271 $this->assertSame( 272 ['NAME' => '//'], 273 $this->surname_tradition->newSpouseNames('Mary /Black/', 'M') 274 ); 275 } 276 277 /** 278 * Test new wife names 279 * 280 * @covers \Fisharebest\Webtrees\SurnameTradition\PaternalSurnameTradition 281 * 282 * @return void 283 */ 284 public function testNewWifeNames(): void 285 { 286 $this->assertSame( 287 [ 288 'NAME' => '//', 289 '_MARNM' => '/White/', 290 ], 291 $this->surname_tradition->newSpouseNames('John /White/', 'F') 292 ); 293 } 294 295 /** 296 * Test new wife names 297 * 298 * @covers \Fisharebest\Webtrees\SurnameTradition\PaternalSurnameTradition 299 * 300 * @return void 301 */ 302 public function testNewWifeNamesWithSpfx(): void 303 { 304 $this->assertSame( 305 [ 306 'NAME' => '//', 307 '_MARNM' => '/van der White/', 308 ], 309 $this->surname_tradition->newSpouseNames('John /van der White/', 'F') 310 ); 311 } 312 313 /** 314 * Test new spouse names 315 * 316 * @covers \Fisharebest\Webtrees\SurnameTradition\PaternalSurnameTradition 317 * 318 * @return void 319 */ 320 public function testNewSpouseNames(): void 321 { 322 $this->assertSame( 323 ['NAME' => '//'], 324 $this->surname_tradition->newSpouseNames('Chris /Green/', 'U') 325 ); 326 } 327} 328