Skip to content

Commit fbb909b

Browse files
committed
Merge pull request #644 from wmde/langAssertions
Remove type checks from AliasGroup/TermList getters
2 parents a5910f7 + 6808290 commit fbb909b

4 files changed

Lines changed: 22 additions & 39 deletions

File tree

src/Term/AliasGroupList.php

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -73,12 +73,9 @@ public function toArray() {
7373
* @param string $languageCode
7474
*
7575
* @return AliasGroup
76-
* @throws InvalidArgumentException
7776
* @throws OutOfBoundsException
7877
*/
7978
public function getByLanguage( $languageCode ) {
80-
$this->assertIsLanguageCode( $languageCode );
81-
8279
if ( !array_key_exists( $languageCode, $this->groups ) ) {
8380
throw new OutOfBoundsException( 'AliasGroup with languageCode "' . $languageCode . '" not found' );
8481
}
@@ -99,19 +96,11 @@ public function getWithLanguages( array $languageCodes ) {
9996

10097
/**
10198
* @param string $languageCode
102-
* @throws InvalidArgumentException
10399
*/
104100
public function removeByLanguage( $languageCode ) {
105-
$this->assertIsLanguageCode( $languageCode );
106101
unset( $this->groups[$languageCode] );
107102
}
108103

109-
private function assertIsLanguageCode( $languageCode ) {
110-
if ( !is_string( $languageCode ) || $languageCode === '' ) {
111-
throw new InvalidArgumentException( '$languageCode must be a non-empty string' );
112-
}
113-
}
114-
115104
/**
116105
* If the group is empty, it will not be stored.
117106
* In case the language of that group had an associated group, that group will be removed.
@@ -185,7 +174,6 @@ public function hasAliasGroup( AliasGroup $group ) {
185174
* @return boolean
186175
*/
187176
public function hasGroupForLanguage( $languageCode ) {
188-
$this->assertIsLanguageCode( $languageCode );
189177
return array_key_exists( $languageCode, $this->groups );
190178
}
191179

src/Term/TermList.php

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -76,12 +76,9 @@ public function getIterator() {
7676
* @param string $languageCode
7777
*
7878
* @return Term
79-
* @throws InvalidArgumentException
8079
* @throws OutOfBoundsException
8180
*/
8281
public function getByLanguage( $languageCode ) {
83-
$this->assertIsLanguageCode( $languageCode );
84-
8582
if ( !array_key_exists( $languageCode, $this->terms ) ) {
8683
throw new OutOfBoundsException( 'Term with languageCode "' . $languageCode . '" not found' );
8784
}
@@ -100,22 +97,22 @@ public function getWithLanguages( array $languageCodes ) {
10097
return new self( array_intersect_key( $this->terms, array_flip( $languageCodes ) ) );
10198
}
10299

100+
/**
101+
* @param string $languageCode
102+
*/
103103
public function removeByLanguage( $languageCode ) {
104-
$this->assertIsLanguageCode( $languageCode );
105104
unset( $this->terms[$languageCode] );
106105
}
107106

107+
/**
108+
* @param string $languageCode
109+
*
110+
* @return bool
111+
*/
108112
public function hasTermForLanguage( $languageCode ) {
109-
$this->assertIsLanguageCode( $languageCode );
110113
return array_key_exists( $languageCode, $this->terms );
111114
}
112115

113-
private function assertIsLanguageCode( $languageCode ) {
114-
if ( !is_string( $languageCode ) || $languageCode === '' ) {
115-
throw new InvalidArgumentException( '$languageCode must be a non-empty string' );
116-
}
117-
}
118-
119116
/**
120117
* Replaces non-empty or removes empty terms.
121118
*

tests/unit/Term/AliasGroupListTest.php

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
namespace Wikibase\DataModel\Tests\Term;
44

5-
use InvalidArgumentException;
5+
use PHPUnit_Framework_TestCase;
66
use Wikibase\DataModel\Term\AliasGroup;
77
use Wikibase\DataModel\Term\AliasGroupList;
88

@@ -13,7 +13,7 @@
1313
* @licence GNU GPL v2+
1414
* @author Jeroen De Dauw < jeroendedauw@gmail.com >
1515
*/
16-
class AliasGroupListTest extends \PHPUnit_Framework_TestCase {
16+
class AliasGroupListTest extends PHPUnit_Framework_TestCase {
1717

1818
public function testIsEmpty() {
1919
$list = new AliasGroupList();
@@ -106,10 +106,10 @@ public function testGivenSetLanguageCode_getByLanguageReturnsGroup() {
106106

107107
/**
108108
* @dataProvider invalidLanguageCodeProvider
109-
* @expectedException InvalidArgumentException
110109
*/
111110
public function testGivenInvalidLanguageCode_getByLanguageThrowsException( $languageCode ) {
112111
$list = new AliasGroupList();
112+
$this->setExpectedException( 'OutOfBoundsException' );
113113
$list->getByLanguage( $languageCode );
114114
}
115115

@@ -162,11 +162,11 @@ public function testGivenSetLanguage_removeByLanguageRemovesIt() {
162162

163163
/**
164164
* @dataProvider invalidLanguageCodeProvider
165-
* @expectedException InvalidArgumentException
166165
*/
167-
public function testGivenInvalidLanguageCode_removeByLanguageThrowsException( $languageCode ) {
168-
$list = new AliasGroupList();
166+
public function testGivenInvalidLanguageCode_removeByLanguageIsNoOp( $languageCode ) {
167+
$list = new AliasGroupList( array( new AliasGroup( 'en', array( 'foo' ) ) ) );
169168
$list->removeByLanguage( $languageCode );
169+
$this->assertFalse( $list->isEmpty() );
170170
}
171171

172172
public function testGivenEmptyGroups_constructorRemovesThem() {
@@ -273,11 +273,10 @@ public function testGivenNonSetLanguageGroup_hasGroupForLanguageReturnsFalse() {
273273

274274
/**
275275
* @dataProvider invalidLanguageCodeProvider
276-
* @expectedException InvalidArgumentException
277276
*/
278-
public function testGivenInvalidLanguageCode_hasGroupForLanguageThrowsException( $languageCode ) {
277+
public function testGivenInvalidLanguageCode_hasGroupForLanguageReturnsFalse( $languageCode ) {
279278
$list = new AliasGroupList();
280-
$list->hasGroupForLanguage( $languageCode );
279+
$this->assertFalse( $list->hasGroupForLanguage( $languageCode ) );
281280
}
282281

283282
public function invalidLanguageCodeProvider() {

tests/unit/Term/TermListTest.php

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -118,10 +118,10 @@ public function testGivenSetLanguageCode_getByLanguageReturnsGroup() {
118118

119119
/**
120120
* @dataProvider invalidLanguageCodeProvider
121-
* @expectedException InvalidArgumentException
122121
*/
123122
public function testGivenInvalidLanguageCode_getByLanguageThrowsException( $languageCode ) {
124123
$list = new TermList();
124+
$this->setExpectedException( 'OutOfBoundsException' );
125125
$list->getByLanguage( $languageCode );
126126
}
127127

@@ -150,11 +150,10 @@ public function testHasTermForLanguage() {
150150

151151
/**
152152
* @dataProvider invalidLanguageCodeProvider
153-
* @expectedException InvalidArgumentException
154153
*/
155-
public function testGivenInvalidLanguageCode_hasTermForLanguageThrowsException( $languageCode ) {
154+
public function testGivenInvalidLanguageCode_hasTermForLanguageReturnsFalse( $languageCode ) {
156155
$list = new TermList();
157-
$list->hasTermForLanguage( $languageCode );
156+
$this->assertFalse( $list->hasTermForLanguage( $languageCode ) );
158157
}
159158

160159
public function invalidLanguageCodeProvider() {
@@ -194,11 +193,11 @@ public function testGivenSetLanguageCode_removeByLanguageRemovesIt() {
194193

195194
/**
196195
* @dataProvider invalidLanguageCodeProvider
197-
* @expectedException InvalidArgumentException
198196
*/
199-
public function testGivenInvalidLanguageCode_removeByLanguageThrowsException( $languageCode ) {
200-
$list = new TermList();
197+
public function testGivenInvalidLanguageCode_removeByLanguageDoesNoOp( $languageCode ) {
198+
$list = new TermList( array( new Term( 'en', 'foo' ) ) );
201199
$list->removeByLanguage( $languageCode );
200+
$this->assertFalse( $list->isEmpty() );
202201
}
203202

204203
public function testGivenTermForNewLanguage_setTermAddsTerm() {

0 commit comments

Comments
 (0)