[MediaWiki-commits] [Gerrit] mediawiki...WikibaseLexeme[master]: Take Lexeme's `nextFormId` into account when compare for equ...

2017-09-13 Thread jenkins-bot (Code Review)
jenkins-bot has submitted this change and it was merged. ( 
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(-)

Approvals:
  WMDE-leszek: Looks good to me, approved
  jenkins-bot: Verified



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 8f81c1c..d7e5fee 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 );
}
@@ -293,6 +295,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 7724fbf..16d2957 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,
]
];
}
@@ -456,4 +466,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: merged
Gerrit-Change-Id: I3b3e01b98dd96fa0282e6ed1d901ec65a76909cc
Gerrit-PatchSet: 3
Gerrit-Project: mediawiki/extensions/WikibaseLexeme
Gerrit-Branch: master
Gerrit-Owner: Aleksey Bekh-Ivanov (WMDE) 
Gerrit-Reviewer: 

[MediaWiki-commits] [Gerrit] mediawiki...WikibaseLexeme[master]: Take Lexeme's `nextFormId` into account when compare for equ...

2017-09-08 Thread Aleksey Bekh-Ivanov (WMDE) (Code Review)
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)