Aleksey Bekh-Ivanov (WMDE) has uploaded a new change for review. ( https://gerrit.wikimedia.org/r/376758 )
Change subject: Take Lexeme's `nextFormId` into account when compare for equality ...................................................................... Take Lexeme's `nextFormId` into account when compare for equality Change-Id: I3b3e01b98dd96fa0282e6ed1d901ec65a76909cc --- M src/DataModel/FormSet.php M src/DataModel/Lexeme.php M tests/phpunit/composer/DataModel/FormSetTest.php M tests/phpunit/composer/DataModel/LexemeTest.php 4 files changed, 37 insertions(+), 0 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/WikibaseLexeme refs/changes/58/376758/1 diff --git a/src/DataModel/FormSet.php b/src/DataModel/FormSet.php index 93018d4..6933dbc 100644 --- a/src/DataModel/FormSet.php +++ b/src/DataModel/FormSet.php @@ -64,4 +64,8 @@ $this->forms[$formId] = $form; } + public function remove( FormId $formId ) { + unset( $this->forms[$formId->getSerialization()] ); + } + } diff --git a/src/DataModel/Lexeme.php b/src/DataModel/Lexeme.php index 7f8a4ab..81aa582 100644 --- a/src/DataModel/Lexeme.php +++ b/src/DataModel/Lexeme.php @@ -167,11 +167,13 @@ || ( $this->language !== null && $this->language->equals( $target->language ) ); + $sameFormIdCounter = $this->nextFormId === $target->nextFormId; $sameForms = $this->forms == $target->forms; return $this->lemmas->equals( $target->lemmas ) && $sameLexicalCategory && $sameLanguage + && $sameFormIdCounter && $sameForms && $this->statements->equals( $target->statements ); } @@ -307,6 +309,10 @@ return $form; } + public function removeForm( FormId $formId ) { + $this->forms->remove( $formId ); + } + /** * @param mixed $nextFormId * @param Form[] $forms diff --git a/tests/phpunit/composer/DataModel/FormSetTest.php b/tests/phpunit/composer/DataModel/FormSetTest.php index b542844..d6e0134 100644 --- a/tests/phpunit/composer/DataModel/FormSetTest.php +++ b/tests/phpunit/composer/DataModel/FormSetTest.php @@ -2,6 +2,7 @@ namespace Wikibase\Lexeme\Tests\DataModel; +use Wikibase\Lexeme\DataModel\FormId; use Wikibase\Lexeme\DataModel\FormSet; class FormSetTest extends \PHPUnit_Framework_TestCase { @@ -72,4 +73,12 @@ $formSet->add( NewForm::havingId( 'F1' )->build() ); } + public function testRemove_CanRemoveAForm() { + $formSet = new FormSet( [ NewForm::havingId( 'F1' )->build() ] ); + + $formSet->remove( new FormId( 'F1' ) ); + + $this->assertCount( 0, $formSet->toArray() ); + } + } diff --git a/tests/phpunit/composer/DataModel/LexemeTest.php b/tests/phpunit/composer/DataModel/LexemeTest.php index e290ce4..711bd19 100644 --- a/tests/phpunit/composer/DataModel/LexemeTest.php +++ b/tests/phpunit/composer/DataModel/LexemeTest.php @@ -275,6 +275,12 @@ $language1 = new ItemId( 'Q3' ); $language2 = new ItemId( 'Q5' ); + + $newLexeme = NewLexeme::create(); + $lexemeWithInitialFormCounter = $newLexeme->build(); + $lexemeWithChangedFormCounter = $newLexeme->withForm( NewForm::havingId( 'F1' ) )->build(); + $lexemeWithChangedFormCounter->removeForm( new FormId( 'F1' ) ); + return [ 'null' => [ new Lexeme(), @@ -307,6 +313,10 @@ new Lexeme( new LexemeId( 'L1' ), null, null, null, null, 2, [ NewForm::havingId( 'F1' )->build() ] ), + ], + 'different internal form index counter state' => [ + $lexemeWithInitialFormCounter, + $lexemeWithChangedFormCounter, ] ]; } @@ -446,4 +456,12 @@ $this->assertEquals( new FormId( 'F2' ), $newForm2->getId() ); } + public function testRemoveAForm() { + $lexeme = NewLexeme::havingForm( NewForm::havingId( 'F1' ) )->build(); + + $lexeme->removeForm( new FormId( 'F1' ) ); + + $this->assertEquals( [], $lexeme->getForms() ); + } + } -- To view, visit https://gerrit.wikimedia.org/r/376758 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I3b3e01b98dd96fa0282e6ed1d901ec65a76909cc Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/WikibaseLexeme Gerrit-Branch: master Gerrit-Owner: Aleksey Bekh-Ivanov (WMDE) <aleksey.bekh-iva...@wikimedia.de> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits