1<?php 2 3/** 4 * webtrees: online genealogy 5 * Copyright (C) 2021 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 <https://www.gnu.org/licenses/>. 16 */ 17 18declare(strict_types=1); 19 20namespace Fisharebest\Webtrees\SurnameTradition; 21 22use Fisharebest\Webtrees\Fact; 23use Fisharebest\Webtrees\Individual; 24use Fisharebest\Webtrees\TestCase; 25use Illuminate\Support\Collection; 26 27/** 28 * Test harness for the class LithuanianSurnameTraditionTest 29 */ 30class LithuanianSurnameTraditionTest extends TestCase 31{ 32 private SurnameTraditionInterface $surname_tradition; 33 34 /** 35 * Prepare the environment for these tests 36 * 37 * @return void 38 */ 39 protected function setUp(): void 40 { 41 parent::setUp(); 42 43 $this->surname_tradition = new LithuanianSurnameTradition(); 44 } 45 46 /** 47 * Test whether married surnames are used 48 * 49 * @covers \Fisharebest\Webtrees\SurnameTradition\LithuanianSurnameTradition 50 * @covers \Fisharebest\Webtrees\SurnameTradition\PatrilinealSurnameTradition 51 * 52 * @return void 53 */ 54 public function testMarriedSurnames(): void 55 { 56 self::assertTrue($this->surname_tradition->hasMarriedNames()); 57 } 58 59 /** 60 * Test whether surnames are used 61 * 62 * @covers \Fisharebest\Webtrees\SurnameTradition\LithuanianSurnameTradition 63 * @covers \Fisharebest\Webtrees\SurnameTradition\PatrilinealSurnameTradition 64 * 65 * @return void 66 */ 67 public function testSurnames(): void 68 { 69 self::assertTrue($this->surname_tradition->hasSurnames()); 70 } 71 72 /** 73 * Test new son names 74 * 75 * @covers \Fisharebest\Webtrees\SurnameTradition\LithuanianSurnameTradition 76 * @covers \Fisharebest\Webtrees\SurnameTradition\PatrilinealSurnameTradition 77 * 78 * @return void 79 */ 80 public function testNewSonNames(): void 81 { 82 $father_fact = $this->createStub(Fact::class); 83 $father_fact->method('value')->willReturn('John /White/'); 84 85 $father = $this->createStub(Individual::class); 86 $father->method('facts')->willReturn(new Collection([$father_fact])); 87 88 $mother_fact = $this->createStub(Fact::class); 89 $mother_fact->method('value')->willReturn('Mary /Black/'); 90 91 $mother = $this->createStub(Individual::class); 92 $mother->method('facts')->willReturn(new Collection([$mother_fact])); 93 94 self::assertSame( 95 ["1 NAME /White/\n2 TYPE birth\n2 SURN White"], 96 $this->surname_tradition->newChildNames($father, $mother, 'M') 97 ); 98 } 99 100 /** 101 * Test new daughter names 102 * 103 * @covers \Fisharebest\Webtrees\SurnameTradition\LithuanianSurnameTradition 104 * @covers \Fisharebest\Webtrees\SurnameTradition\PatrilinealSurnameTradition 105 * 106 * @return void 107 */ 108 public function testNewDaughterNames(): void 109 { 110 $father_fact = $this->createStub(Fact::class); 111 $father_fact->method('value')->willReturn('John /White/'); 112 113 $father = $this->createStub(Individual::class); 114 $father->method('facts')->willReturn(new Collection([$father_fact])); 115 116 $mother_fact = $this->createStub(Fact::class); 117 $mother_fact->method('value')->willReturn('Mary /Black/'); 118 119 $mother = $this->createStub(Individual::class); 120 $mother->method('facts')->willReturn(new Collection([$mother_fact])); 121 122 self::assertSame( 123 ["1 NAME /White/\n2 TYPE birth\n2 SURN White"], 124 $this->surname_tradition->newChildNames($father, $mother, 'F') 125 ); 126 } 127 128 /** 129 * Test new daughter names 130 * 131 * @covers \Fisharebest\Webtrees\SurnameTradition\LithuanianSurnameTradition 132 * @covers \Fisharebest\Webtrees\SurnameTradition\PatrilinealSurnameTradition 133 * 134 * @return void 135 */ 136 public function testNewDaughterNamesInflected(): void 137 { 138 $father_fact = $this->createStub(Fact::class); 139 $father_fact->method('value')->willReturn('John /Whita/'); 140 141 $father = $this->createStub(Individual::class); 142 $father->method('facts')->willReturn(new Collection([$father_fact])); 143 144 $mother_fact = $this->createStub(Fact::class); 145 $mother_fact->method('value')->willReturn('Mary /Black/'); 146 147 $mother = $this->createStub(Individual::class); 148 $mother->method('facts')->willReturn(new Collection([$mother_fact])); 149 150 self::assertSame( 151 ["1 NAME /Whitaitė/\n2 TYPE birth\n2 SURN Whita"], 152 $this->surname_tradition->newChildNames($father, $mother, 'F') 153 ); 154 155 $father_fact = $this->createStub(Fact::class); 156 $father_fact->method('value')->willReturn('John /Whitas/'); 157 158 $father = $this->createStub(Individual::class); 159 $father->method('facts')->willReturn(new Collection([$father_fact])); 160 161 self::assertSame( 162 ["1 NAME /Whitaitė/\n2 TYPE birth\n2 SURN Whitas"], 163 $this->surname_tradition->newChildNames($father, $mother, 'F') 164 ); 165 166 $father_fact = $this->createStub(Fact::class); 167 $father_fact->method('value')->willReturn('John /Whitis/'); 168 169 $father = $this->createStub(Individual::class); 170 $father->method('facts')->willReturn(new Collection([$father_fact])); 171 172 self::assertSame( 173 ["1 NAME /Whitytė/\n2 TYPE birth\n2 SURN Whitis"], 174 $this->surname_tradition->newChildNames($father, $mother, 'F') 175 ); 176 177 $father_fact = $this->createStub(Fact::class); 178 $father_fact->method('value')->willReturn('John /Whitys/'); 179 180 $father = $this->createStub(Individual::class); 181 $father->method('facts')->willReturn(new Collection([$father_fact])); 182 183 self::assertSame( 184 ["1 NAME /Whitytė/\n2 TYPE birth\n2 SURN Whitys"], 185 $this->surname_tradition->newChildNames($father, $mother, 'F') 186 ); 187 188 $father_fact = $this->createStub(Fact::class); 189 $father_fact->method('value')->willReturn('John /Whitius/'); 190 191 $father = $this->createStub(Individual::class); 192 $father->method('facts')->willReturn(new Collection([$father_fact])); 193 194 self::assertSame( 195 ["1 NAME /Whitiūtė/\n2 TYPE birth\n2 SURN Whitius"], 196 $this->surname_tradition->newChildNames($father, $mother, 'F') 197 ); 198 199 $father_fact = $this->createStub(Fact::class); 200 $father_fact->method('value')->willReturn('John /Whitus/'); 201 202 $father = $this->createStub(Individual::class); 203 $father->method('facts')->willReturn(new Collection([$father_fact])); 204 205 self::assertSame( 206 ["1 NAME /Whitutė/\n2 TYPE birth\n2 SURN Whitus"], 207 $this->surname_tradition->newChildNames($father, $mother, 'F') 208 ); 209 } 210 211 /** 212 * Test new child names 213 * 214 * @covers \Fisharebest\Webtrees\SurnameTradition\LithuanianSurnameTradition 215 * @covers \Fisharebest\Webtrees\SurnameTradition\PatrilinealSurnameTradition 216 * 217 * @return void 218 */ 219 public function testNewChildNames(): void 220 { 221 $father_fact = $this->createStub(Fact::class); 222 $father_fact->method('value')->willReturn('John /White/'); 223 224 $father = $this->createStub(Individual::class); 225 $father->method('facts')->willReturn(new Collection([$father_fact])); 226 227 $mother_fact = $this->createStub(Fact::class); 228 $mother_fact->method('value')->willReturn('Mary /Black/'); 229 230 $mother = $this->createStub(Individual::class); 231 $mother->method('facts')->willReturn(new Collection([$mother_fact])); 232 233 self::assertSame( 234 ["1 NAME /White/\n2 TYPE birth\n2 SURN White"], 235 $this->surname_tradition->newChildNames($father, $mother, 'U') 236 ); 237 } 238 239 /** 240 * Test new child names 241 * 242 * @covers \Fisharebest\Webtrees\SurnameTradition\LithuanianSurnameTradition 243 * @covers \Fisharebest\Webtrees\SurnameTradition\PatrilinealSurnameTradition 244 * 245 * @return void 246 */ 247 public function testNewChildNamesWithNoParentsNames(): void 248 { 249 self::assertSame( 250 ["1 NAME //\n2 TYPE birth"], 251 $this->surname_tradition->newChildNames(null, null, 'U') 252 ); 253 } 254 255 /** 256 * Test new father names 257 * 258 * @covers \Fisharebest\Webtrees\SurnameTradition\LithuanianSurnameTradition 259 * @covers \Fisharebest\Webtrees\SurnameTradition\PatrilinealSurnameTradition 260 * 261 * @return void 262 */ 263 public function testNewFatherNames(): void 264 { 265 $fact = $this->createStub(Fact::class); 266 $fact->method('value')->willReturn('John /White/'); 267 268 $individual = $this->createStub(Individual::class); 269 $individual->method('facts')->willReturn(new Collection([$fact])); 270 271 self::assertSame( 272 ["1 NAME /White/\n2 TYPE birth\n2 SURN White"], 273 $this->surname_tradition->newParentNames($individual, 'M') 274 ); 275 } 276 277 /** 278 * Test new father names 279 * 280 * @covers \Fisharebest\Webtrees\SurnameTradition\LithuanianSurnameTradition 281 * @covers \Fisharebest\Webtrees\SurnameTradition\PatrilinealSurnameTradition 282 * 283 * @return void 284 */ 285 public function testNewFatherNamesInflected(): void 286 { 287 $fact = $this->createStub(Fact::class); 288 $fact->method('value')->willReturn('Mary /Whitaitė/'); 289 290 $individual = $this->createStub(Individual::class); 291 $individual->method('facts')->willReturn(new Collection([$fact])); 292 293 self::assertSame( 294 ["1 NAME /Whitas/\n2 TYPE birth\n2 SURN Whitas"], 295 $this->surname_tradition->newParentNames($individual, 'M') 296 ); 297 298 $fact = $this->createStub(Fact::class); 299 $fact->method('value')->willReturn('Mary /Whitytė/'); 300 301 $individual = $this->createStub(Individual::class); 302 $individual->method('facts')->willReturn(new Collection([$fact])); 303 304 self::assertSame( 305 ["1 NAME /Whitis/\n2 TYPE birth\n2 SURN Whitis"], 306 $this->surname_tradition->newParentNames($individual, 'M') 307 ); 308 309 $fact = $this->createStub(Fact::class); 310 $fact->method('value')->willReturn('Mary /Whitiūtė/'); 311 312 $individual = $this->createStub(Individual::class); 313 $individual->method('facts')->willReturn(new Collection([$fact])); 314 315 self::assertSame( 316 ["1 NAME /Whitius/\n2 TYPE birth\n2 SURN Whitius"], 317 $this->surname_tradition->newParentNames($individual, 'M') 318 ); 319 320 $fact = $this->createStub(Fact::class); 321 $fact->method('value')->willReturn('Mary /Whitutė/'); 322 323 $individual = $this->createStub(Individual::class); 324 $individual->method('facts')->willReturn(new Collection([$fact])); 325 326 self::assertSame( 327 ["1 NAME /Whitus/\n2 TYPE birth\n2 SURN Whitus"], 328 $this->surname_tradition->newParentNames($individual, 'M') 329 ); 330 } 331 332 /** 333 * Test new mother names 334 * 335 * @covers \Fisharebest\Webtrees\SurnameTradition\LithuanianSurnameTradition 336 * @covers \Fisharebest\Webtrees\SurnameTradition\PatrilinealSurnameTradition 337 * 338 * @return void 339 */ 340 public function testNewMotherNames(): void 341 { 342 $fact = $this->createStub(Fact::class); 343 $fact->method('value')->willReturn('John /White/'); 344 345 $individual = $this->createStub(Individual::class); 346 $individual->method('facts')->willReturn(new Collection([$fact])); 347 348 self::assertSame( 349 ["1 NAME //\n2 TYPE birth"], 350 $this->surname_tradition->newParentNames($individual, 'F') 351 ); 352 } 353 354 /** 355 * Test new parent names 356 * 357 * @covers \Fisharebest\Webtrees\SurnameTradition\LithuanianSurnameTradition 358 * @covers \Fisharebest\Webtrees\SurnameTradition\PatrilinealSurnameTradition 359 * 360 * @return void 361 */ 362 public function testNewParentNames(): void 363 { 364 $fact = $this->createStub(Fact::class); 365 $fact->method('value')->willReturn('John /White/'); 366 367 $individual = $this->createStub(Individual::class); 368 $individual->method('facts')->willReturn(new Collection([$fact])); 369 370 self::assertSame( 371 ["1 NAME //\n2 TYPE birth"], 372 $this->surname_tradition->newParentNames($individual, 'U') 373 ); 374 } 375 376 /** 377 * Test new husband names 378 * 379 * @covers \Fisharebest\Webtrees\SurnameTradition\LithuanianSurnameTradition 380 * @covers \Fisharebest\Webtrees\SurnameTradition\PatrilinealSurnameTradition 381 * 382 * @return void 383 */ 384 public function testNewHusbandNames(): void 385 { 386 $fact = $this->createStub(Fact::class); 387 $fact->method('value')->willReturn('Mary /Black/'); 388 389 $individual = $this->createStub(Individual::class); 390 $individual->method('facts')->willReturn(new Collection([$fact])); 391 392 self::assertSame( 393 ["1 NAME //\n2 TYPE birth"], 394 $this->surname_tradition->newSpouseNames($individual, 'M') 395 ); 396 } 397 398 /** 399 * Test new wife names 400 * 401 * @covers \Fisharebest\Webtrees\SurnameTradition\LithuanianSurnameTradition 402 * @covers \Fisharebest\Webtrees\SurnameTradition\PatrilinealSurnameTradition 403 * 404 * @return void 405 */ 406 public function testNewWifeNames(): void 407 { 408 $fact = $this->createStub(Fact::class); 409 $fact->method('value')->willReturn('John /White/'); 410 411 $individual = $this->createStub(Individual::class); 412 $individual->method('facts')->willReturn(new Collection([$fact])); 413 414 self::assertSame( 415 ["1 NAME //\n2 TYPE birth", "1 NAME /White/\n2 TYPE married\n2 SURN White"], 416 $this->surname_tradition->newSpouseNames($individual, 'F') 417 ); 418 } 419 420 /** 421 * Test new spouse names 422 * 423 * @covers \Fisharebest\Webtrees\SurnameTradition\LithuanianSurnameTradition 424 * @covers \Fisharebest\Webtrees\SurnameTradition\PatrilinealSurnameTradition 425 * 426 * @return void 427 */ 428 public function testNewSpouseNames(): void 429 { 430 $fact = $this->createStub(Fact::class); 431 $fact->method('value')->willReturn('John /White/'); 432 433 $individual = $this->createStub(Individual::class); 434 $individual->method('facts')->willReturn(new Collection([$fact])); 435 436 self::assertSame( 437 ["1 NAME //\n2 TYPE birth"], 438 $this->surname_tradition->newSpouseNames($individual, 'U') 439 ); 440 } 441} 442