jenkins-bot has submitted this change and it was merged.

Change subject: Implemented indexOf method in ReferenceList
......................................................................


Implemented indexOf method in ReferenceList

Change-Id: I28610f2f052ff1e56630673438913832d8920b9c
---
M DataModel/ReferenceList.php
M DataModel/References.php
M tests/phpunit/ReferenceListTest.php
3 files changed, 70 insertions(+), 6 deletions(-)

Approvals:
  Tobias Gritschacher: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/DataModel/ReferenceList.php b/DataModel/ReferenceList.php
index e8756ae..329dc8d 100644
--- a/DataModel/ReferenceList.php
+++ b/DataModel/ReferenceList.php
@@ -21,6 +21,7 @@
  *
  * @licence GNU GPL v2+
  * @author Jeroen De Dauw < [email protected] >
+ * @author H. Snater < [email protected] >
  */
 class ReferenceList extends HashableObjectStorage implements References {
 
@@ -89,6 +90,28 @@
        }
 
        /**
+        * @see References::indexOf
+        *
+        * @since 0.1
+        *
+        * @param Reference $reference
+        *
+        * @return int|boolean
+        */
+       public function indexOf( Reference $reference ) {
+               $index = 0;
+
+               foreach( $this as $object ) {
+                       if( $object === $reference ) {
+                               return $index;
+                       }
+                       $index++;
+               }
+
+               return false;
+       }
+
+       /**
         * @see References::removeReference
         *
         * @since 0.1
diff --git a/DataModel/References.php b/DataModel/References.php
index 3ca2e67..c7c0ac8 100644
--- a/DataModel/References.php
+++ b/DataModel/References.php
@@ -37,6 +37,17 @@
        public function hasReference( Reference $reference );
 
        /**
+        * Returns the index of a reference or false if the reference could not 
be found.
+        *
+        * @since 0.1
+        *
+        * @param Reference $reference
+        *
+        * @return int|boolean
+        */
+       public function indexOf( Reference $reference );
+
+       /**
         * Removes the reference with the same hash as the provided reference 
if such a reference exists in the list.
         *
         * @since 0.1
diff --git a/tests/phpunit/ReferenceListTest.php 
b/tests/phpunit/ReferenceListTest.php
index a265463..607d2fd 100644
--- a/tests/phpunit/ReferenceListTest.php
+++ b/tests/phpunit/ReferenceListTest.php
@@ -3,8 +3,10 @@
 namespace Wikibase\Test;
 
 use Hashable;
+use Wikibase\PropertyNoValueSnak;
 use Wikibase\Reference;
 use Wikibase\ReferenceList;
+use Wikibase\SnakList;
 
 /**
  * @covers Wikibase\ReferenceList
@@ -41,11 +43,11 @@
        }
 
        public function getElementInstances() {
-               $instances = array();
-
-               $instances[] = new Reference();
-
-               return $instances;
+               return array(
+                       new Reference(),
+                       new Reference( new SnakList( array( new 
PropertyNoValueSnak( 2 ) ) ) ),
+                       new Reference( new SnakList( array( new 
PropertyNoValueSnak( 3 ) ) ) ),
+               );
        }
 
        public function getConstructorArg() {
@@ -53,6 +55,14 @@
                        null,
                        array(),
                        $this->getElementInstances(),
+               );
+       }
+
+       public function referenceListProvider() {
+               $class = $this->getInstanceClass();
+
+               return array(
+                       array( new $class( $this->getElementInstances() ) )
                );
        }
 
@@ -155,6 +165,20 @@
        }
 
        /**
+        * @dataProvider referenceListProvider
+        *
+        * @param ReferenceList $array
+        */
+       public function testIndexOf( ReferenceList $array ) {
+               $this->assertFalse( $array->indexOf( new Reference() ) );
+
+               $i = 0;
+               foreach( $array as $reference ) {
+                       $this->assertEquals( $i++, $array->indexOf( $reference 
) );
+               }
+       }
+
+       /**
         * @dataProvider instanceProvider
         * @param ReferenceList $references
         */
@@ -232,11 +256,17 @@
        public function testRemoveReferenceHash( ReferenceList $references ) {
                $references->removeReferenceHash( '~=[,,_,,]:3' );
 
+               $hashes = array();
+
                /**
                 * @var Reference $reference
                 */
                foreach ( $references as $reference ) {
-                       $references->removeReferenceHash( $reference->getHash() 
);
+                       $hashes[] = $reference->getHash();
+               }
+
+               foreach( $hashes as $hash ) {
+                       $references->removeReferenceHash( $hash );
                }
 
                $this->assertEquals( 0, count( $references ) );

-- 
To view, visit https://gerrit.wikimedia.org/r/89010
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I28610f2f052ff1e56630673438913832d8920b9c
Gerrit-PatchSet: 3
Gerrit-Project: mediawiki/extensions/WikibaseDataModel
Gerrit-Branch: master
Gerrit-Owner: Henning Snater <[email protected]>
Gerrit-Reviewer: Tobias Gritschacher <[email protected]>
Gerrit-Reviewer: jenkins-bot

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to