@@ -408,4 +408,53 @@ public function testClear() {
408408 $ this ->assertEquals ( new TermList (), $ list );
409409 }
410410
411+ public function testWhenAddingTermsToAListThatDoesNotContainThem_theyGetAdded () {
412+ $ enTerm = new Term ( 'en ' , 'foo ' );
413+ $ deTerm = new Term ( 'de ' , 'bar ' );
414+
415+ $ terms = new TermList ();
416+ $ terms ->add ( [ $ enTerm , $ deTerm ] );
417+
418+ $ this ->assertEquals ( $ enTerm , $ terms ->getByLanguage ( 'en ' ) );
419+ $ this ->assertEquals ( $ deTerm , $ terms ->getByLanguage ( 'de ' ) );
420+ }
421+
422+ public function testWhenAddingTermsToAListThatDoesContainThem_theyOverrideTheExistingOnes () {
423+ $ enTerm = new Term ( 'en ' , 'foo ' );
424+
425+ $ newEnTerm = new Term ( 'en ' , 'NEW ' );
426+
427+ $ terms = new TermList ( [ $ enTerm ] );
428+ $ terms ->add ( [ $ newEnTerm ] );
429+
430+ $ this ->assertEquals ( $ newEnTerm , $ terms ->getByLanguage ( 'en ' ) );
431+ }
432+
433+ public function testWhenAddingTerms_existingOnesAreNotLost () {
434+ $ enTerm = new Term ( 'en ' , 'foo ' );
435+ $ deTerm = new Term ( 'de ' , 'bar ' );
436+
437+ $ terms = new TermList ( [ $ enTerm ] );
438+ $ terms ->add ( [ $ deTerm ] );
439+
440+ $ this ->assertEquals ( $ enTerm , $ terms ->getByLanguage ( 'en ' ) );
441+ }
442+
443+ public function testCanAddTermIterables () {
444+ $ enTerm = new Term ( 'en ' , 'foo ' );
445+
446+ $ terms = new TermList ();
447+ $ terms ->add ( new TermList ( [ $ enTerm ] ) );
448+
449+ $ this ->assertEquals ( $ enTerm , $ terms ->getByLanguage ( 'en ' ) );
450+ }
451+
452+ public function testWhenAddingEmptyTerms_theyRemoveExistingOnes () {
453+ $ terms = new TermList ( [ new Term ( 'en ' , 'not-empty ' ) ] );
454+
455+ $ terms ->add ( [ new Term ( 'en ' , '' ) ] );
456+
457+ $ this ->assertEquals ( new TermList (), $ terms );
458+ }
459+
411460}
0 commit comments