Soeren.oldag has uploaded a new change for review.
https://gerrit.wikimedia.org/r/205261
Change subject: DataValueComparer now return CompareResults instead of booleans.
......................................................................
DataValueComparer now return CompareResults instead of booleans.
Change-Id: I23fa8eeb59a02188933e07b2aae721dc44fdaeb5
---
M includes/CrossCheck/Comparer/DataValueComparer.php
M includes/CrossCheck/Comparer/EntityIdValueComparer.php
M includes/CrossCheck/Comparer/GlobeCoordinateValueComparer.php
M includes/CrossCheck/Comparer/MonolingualTextValueComparer.php
M includes/CrossCheck/Comparer/MultilingualTextValueComparer.php
M includes/CrossCheck/Comparer/QuantityValueComparer.php
M includes/CrossCheck/Comparer/StringValueComparer.php
M includes/CrossCheck/Comparer/TimeValueComparer.php
M includes/CrossCheck/CrossChecker.php
M tests/phpunit/CrossCheck/Comparer/DataValueComparerTest.php
M tests/phpunit/CrossCheck/Comparer/DataValueComparerTestBase.php
M tests/phpunit/CrossCheck/Comparer/EntityIdValueComparerTest.php
M tests/phpunit/CrossCheck/Comparer/GlobeCoordinateValueComparerTest.php
M tests/phpunit/CrossCheck/Comparer/MonolingualTextValueComparerTest.php
M tests/phpunit/CrossCheck/Comparer/MultilingualTextValueComparerTest.php
M tests/phpunit/CrossCheck/Comparer/QuantityValueComparerTest.php
M tests/phpunit/CrossCheck/Comparer/StringValueComparerTest.php
M tests/phpunit/CrossCheck/Comparer/TimeValueComparerTest.php
18 files changed, 483 insertions(+), 484 deletions(-)
git pull
ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/WikidataQualityExternalValidation
refs/changes/61/205261/1
diff --git a/includes/CrossCheck/Comparer/DataValueComparer.php
b/includes/CrossCheck/Comparer/DataValueComparer.php
index 39aad33..bee1543 100644
--- a/includes/CrossCheck/Comparer/DataValueComparer.php
+++ b/includes/CrossCheck/Comparer/DataValueComparer.php
@@ -8,6 +8,7 @@
use ValueParsers\ParserOptions;
use ValueParsers\ValueParser;
use Wikibase\Parsers\MonolingualTextParser;
+use WikidataQuality\ExternalValidation\CrossCheck\Result\CompareResult;
use WikidataQuality\ExternalValidation\DumpMetaInformation;
@@ -20,132 +21,147 @@
*/
abstract class DataValueComparer {
- /**
- * Array of registered comparers
- *
- * @var array
- */
- private static $comparers = array (
-
'WikidataQuality\ExternalValidation\CrossCheck\Comparer\EntityIdValueComparer',
-
'WikidataQuality\ExternalValidation\CrossCheck\Comparer\MonolingualTextValueComparer',
-
'WikidataQuality\ExternalValidation\CrossCheck\Comparer\MultilingualTextValueComparer',
-
'WikidataQuality\ExternalValidation\CrossCheck\Comparer\StringValueComparer',
-
'WikidataQuality\ExternalValidation\CrossCheck\Comparer\TimeValueComparer',
-
'WikidataQuality\ExternalValidation\CrossCheck\Comparer\QuantityValueComparer',
-
'WikidataQuality\ExternalValidation\CrossCheck\Comparer\GlobeCoordinateValueComparer'
- );
+ /**
+ * Array of registered comparers
+ *
+ * @var array
+ */
+ private static $comparers = array(
+
'WikidataQuality\ExternalValidation\CrossCheck\Comparer\EntityIdValueComparer',
+
'WikidataQuality\ExternalValidation\CrossCheck\Comparer\MonolingualTextValueComparer',
+
'WikidataQuality\ExternalValidation\CrossCheck\Comparer\MultilingualTextValueComparer',
+
'WikidataQuality\ExternalValidation\CrossCheck\Comparer\StringValueComparer',
+
'WikidataQuality\ExternalValidation\CrossCheck\Comparer\TimeValueComparer',
+
'WikidataQuality\ExternalValidation\CrossCheck\Comparer\QuantityValueComparer',
+
'WikidataQuality\ExternalValidation\CrossCheck\Comparer\GlobeCoordinateValueComparer'
+ );
- /**
- * Meta information of the current dump.
- *
- * @var DumpMetaInformation
- */
- protected $dumpMetaInformation;
+ /**
+ * Meta information of the current dump.
+ *
+ * @var DumpMetaInformation
+ */
+ protected $dumpMetaInformation;
- /**
- * Wikibase data value for comparison.
- *
- * @var array
- */
- protected $localValue;
+ /**
+ * Wikibase data value for comparison.
+ *
+ * @var array
+ */
+ protected $localValue;
- /**
- * Data values from external database for comparison.
- *
- * @var array
- */
- protected $externalValues;
+ /**
+ * Data values from external database for comparison.
+ *
+ * @var array
+ */
+ protected $externalValues;
- /**
- * @param DumpMetaInformation $dumpMetaInformation
- * @param DataValue $localValue - Wikibase data value
- * @param array $externalValues - external database data values
- */
- public function __construct( DumpMetaInformation $dumpMetaInformation,
DataValue $localValue, $externalValues ) {
- if ( $externalValues && !is_array( $externalValues ) ) {
- throw new InvalidArgumentException( '$externalValues
must be null or array.' );
- }
- $this->dumpMetaInformation = $dumpMetaInformation;
- $this->localValue = $localValue;
- $this->externalValues = $externalValues;
- }
+ /**
+ * @param DumpMetaInformation $dumpMetaInformation
+ * @param DataValue $localValue - Wikibase data value
+ * @param array $externalValues - external database data values
+ */
+ public function __construct( DumpMetaInformation $dumpMetaInformation,
DataValue $localValue, $externalValues ) {
+ if ( $externalValues && !is_array( $externalValues ) ) {
+ throw new InvalidArgumentException( '$externalValues must be null
or array.' );
+ }
+ $this->dumpMetaInformation = $dumpMetaInformation;
+ $this->localValue = $localValue;
+ $this->externalValues = $externalValues;
+ }
- /**
- * Starts the comparison of given DataValue and values of external
database
- *
- * @return bool - result of the comparison.
- */
- public abstract function execute();
+ /**
+ * Starts the comparison of given DataValue and values of external database
+ *
+ * @return CompareResult
+ */
+ public abstract function execute();
- /**
- * Returns parser that is used to parse strings of external values to
Wikibase DataValues
- *
- * @return ValueParser
- */
- protected function getExternalValueParser() {
- $options = new ParserOptions();
- $options->setOption( 'valuelang',
$this->dumpMetaInformation->getLanguage() );
- return new MonolingualTextParser( $options );
- }
+ /**
+ * Builds CompareResult instance for current comparison with given value
+ *
+ * @param $dataMismatch
+ * @return CompareResult
+ */
+ protected function buildCompareResult( $dataMismatch ) {
+ return new CompareResult(
+ $this->localValue,
+ $this->externalValues,
+ $dataMismatch
+ );
+ }
- /**
- * Parses each string in externalValues array to Wikibase DataValue
- */
- protected function parseExternalValues() {
- if ( $this->externalValues ) {
- foreach ( $this->externalValues as $index =>
$externalValue ) {
- if ( is_string( $externalValue ) ) {
- $parsedValue =
$this->getExternalValueParser()->parse( $externalValue );
- $this->externalValues[ $index ] =
$parsedValue;
- }
- }
- }
- }
+ /**
+ * Returns parser that is used to parse strings of external values to
Wikibase DataValues
+ *
+ * @return ValueParser
+ */
+ protected function getExternalValueParser() {
+ $options = new ParserOptions();
+ $options->setOption( 'valuelang',
$this->dumpMetaInformation->getLanguage() );
+ return new MonolingualTextParser( $options );
+ }
- /**
- * Meta information of the current dump.
- *
- * @return DumpMetaInformation
- */
- public function getDumpMetaInformation() {
- return $this->dumpMetaInformation;
- }
+ /**
+ * Parses each string in externalValues array to Wikibase DataValue.
+ * Must be called in DataValueComparer::execute() once.
+ */
+ protected function parseExternalValues() {
+ if ( $this->externalValues ) {
+ foreach ( $this->externalValues as $index => $externalValue ) {
+ if ( is_string( $externalValue ) ) {
+ $parsedValue = $this->getExternalValueParser()->parse(
$externalValue );
+ $this->externalValues[ $index ] = $parsedValue;
+ }
+ }
+ }
+ }
- /**
- * Returns Wikibase data value.
- *
- * @return array
- */
- public function getLocalValue() {
- return $this->localValue;
- }
+ /**
+ * Meta information of the current dump.
+ *
+ * @return DumpMetaInformation
+ */
+ public function getDumpMetaInformation() {
+ return $this->dumpMetaInformation;
+ }
- /**
- * Returns external database data values.
- *
- * @return array
- */
- public function getExternalValues() {
- return $this->externalValues;
- }
+ /**
+ * Returns Wikibase data value.
+ *
+ * @return array
+ */
+ public function getLocalValue() {
+ return $this->localValue;
+ }
- /**
- * Returns an instance of a comparer suitable to the given DataValue
- *
- * @param DumpMetaInformation $dumpMetaInformation
- * @param DataValue $localValue - Wikibase data value
- * @param array $externalValues - external database data values
- *
- * @return DataValueComparer|null
- */
- public static function getComparer( DumpMetaInformation
$dumpMetaInformation, DataValue $localValue, array $externalValues ) {
- foreach ( self::$comparers as $comparer ) {
- $reflector = new ReflectionClass( $comparer );
- $acceptedDataValues =
$reflector->getStaticPropertyValue( 'acceptedDataValues' );
- $dataValueClass = get_class( $localValue );
- if ( in_array( $dataValueClass, $acceptedDataValues ) )
{
- return new $comparer( $dumpMetaInformation,
$localValue, $externalValues );
- }
- }
- }
+ /**
+ * Returns external database data values.
+ *
+ * @return array
+ */
+ public function getExternalValues() {
+ return $this->externalValues;
+ }
+
+ /**
+ * Returns an instance of a comparer suitable to the given DataValue
+ *
+ * @param DumpMetaInformation $dumpMetaInformation
+ * @param DataValue $localValue - Wikibase data value
+ * @param array $externalValues - external database data values
+ *
+ * @return DataValueComparer|null
+ */
+ public static function getComparer( DumpMetaInformation
$dumpMetaInformation, DataValue $localValue, array $externalValues ) {
+ foreach ( self::$comparers as $comparer ) {
+ $reflector = new ReflectionClass( $comparer );
+ $acceptedDataValues = $reflector->getStaticPropertyValue(
'acceptedDataValues' );
+ $dataValueClass = get_class( $localValue );
+ if ( in_array( $dataValueClass, $acceptedDataValues ) ) {
+ return new $comparer( $dumpMetaInformation, $localValue,
$externalValues );
+ }
+ }
+ }
}
\ No newline at end of file
diff --git a/includes/CrossCheck/Comparer/EntityIdValueComparer.php
b/includes/CrossCheck/Comparer/EntityIdValueComparer.php
index b11bf8d..91627f7 100644
--- a/includes/CrossCheck/Comparer/EntityIdValueComparer.php
+++ b/includes/CrossCheck/Comparer/EntityIdValueComparer.php
@@ -4,6 +4,7 @@
use Wikibase\DataModel\Entity\EntityId;
use Wikibase\Repo\WikibaseRepo;
+use WikidataQuality\ExternalValidation\CrossCheck\Result\CompareResult;
/**
@@ -15,60 +16,60 @@
*/
class EntityIdValueComparer extends DataValueComparer {
- /**
- * Array of DataValue classes that are supported by the current comparer
- *
- * @var array
- */
- public static $acceptedDataValues = array (
'Wikibase\DataModel\Entity\EntityIdValue' );
+ /**
+ * Array of DataValue classes that are supported by the current comparer
+ *
+ * @var array
+ */
+ public static $acceptedDataValues = array(
'Wikibase\DataModel\Entity\EntityIdValue' );
- /**
- * Starts the comparison of given EntityIdValue and values of external
database
- *
- * @return bool - result of the comparison.
- */
- public function execute() {
- $entityId = $this->localValue->getEntityId();
- $terms = $this->getTerms( $entityId,
$this->dumpMetaInformation->getLanguage() );
+ /**
+ * Starts the comparison of given EntityIdValue and values of external
database
+ *
+ * @return CompareResult
+ */
+ public function execute() {
+ $entityId = $this->localValue->getEntityId();
+ $terms = $this->getTerms( $entityId,
$this->dumpMetaInformation->getLanguage() );
- $result = false;
- if ( $this->externalValues && $terms && count( array_intersect(
$terms, $this->externalValues ) ) > 0 ) {
- $result = true;
- }
+ $dataMismatch = true;
+ if ( $this->externalValues && $terms && count( array_intersect(
$terms, $this->externalValues ) ) > 0 ) {
+ $dataMismatch = false;
+ }
- $this->parseExternalValues();
+ $this->parseExternalValues();
- return $result;
- }
+ return $this->buildCompareResult( $dataMismatch );
+ }
- /**
- * Retrieves terms (label and aliases) of a given entity in the given
language
- *
- * @param EntityId $entityId
- * @param string $language
- *
- * @return array
- */
- private function getTerms( EntityId $entityId, $language ) {
- $entity = $this->getEntityLookup()->getEntity( $entityId );
- if ( $entity ) {
- $aliases = $entity->getAliases( $language );
- $label = $entity->getLabel( $language );
+ /**
+ * Retrieves terms (label and aliases) of a given entity in the given
language
+ *
+ * @param EntityId $entityId
+ * @param string $language
+ *
+ * @return array
+ */
+ private function getTerms( EntityId $entityId, $language ) {
+ $entity = $this->getEntityLookup()->getEntity( $entityId );
+ if ( $entity ) {
+ $aliases = $entity->getAliases( $language );
+ $label = $entity->getLabel( $language );
- $terms = $aliases;
- if ( $label != false ) {
- $terms[ ] = $label;
- }
+ $terms = $aliases;
+ if ( $label != false ) {
+ $terms[ ] = $label;
+ }
- return $terms;
- }
- }
+ return $terms;
+ }
+ }
- /**
- * @return \Wikibase\Lib\Store\EntityLookup
- * @codeCoverageIgnore
- */
- protected function getEntityLookup() {
- return WikibaseRepo::getDefaultInstance()->getEntityLookup();
- }
+ /**
+ * @return \Wikibase\Lib\Store\EntityLookup
+ * @codeCoverageIgnore
+ */
+ protected function getEntityLookup() {
+ return WikibaseRepo::getDefaultInstance()->getEntityLookup();
+ }
}
\ No newline at end of file
diff --git a/includes/CrossCheck/Comparer/GlobeCoordinateValueComparer.php
b/includes/CrossCheck/Comparer/GlobeCoordinateValueComparer.php
index c1c7cdb..abe47b3 100644
--- a/includes/CrossCheck/Comparer/GlobeCoordinateValueComparer.php
+++ b/includes/CrossCheck/Comparer/GlobeCoordinateValueComparer.php
@@ -4,6 +4,7 @@
use DataValues\Geo\Formatters\GlobeCoordinateFormatter;
use DataValues\Geo\Parsers\GlobeCoordinateParser;
+use WikidataQuality\ExternalValidation\CrossCheck\Result\CompareResult;
/**
@@ -15,42 +16,44 @@
*/
class GlobeCoordinateValueComparer extends DataValueComparer {
- /**
- * Array of DataValue classes that are supported by the current comparer
- *
- * @var array
- */
- public static $acceptedDataValues = array (
'DataValues\Geo\Values\GlobeCoordinateValue' );
+ /**
+ * Array of DataValue classes that are supported by the current comparer
+ *
+ * @var array
+ */
+ public static $acceptedDataValues = array(
'DataValues\Geo\Values\GlobeCoordinateValue' );
- /**
- * Starts the comparison of given GlobeCoordinateValue and values of
external database
- *
- * @return bool - result of the comparison.
- */
- public function execute() {
- $globeFormatter = new GlobeCoordinateFormatter();
- $formattedDataValue = $globeFormatter->format(
$this->localValue );
+ /**
+ * Starts the comparison of given GlobeCoordinateValue and values of
external database
+ *
+ * @return CompareResult
+ */
+ public function execute() {
+ $globeFormatter = new GlobeCoordinateFormatter();
+ $formattedDataValue = $globeFormatter->format( $this->localValue );
- $this->parseExternalValues();
+ $this->parseExternalValues();
- if ( $this->externalValues ) {
- foreach ( $this->externalValues as $externalValue ) {
- $formattedExternalValue =
$globeFormatter->format( $externalValue );
- if ( $formattedDataValue ===
$formattedExternalValue ) {
- return true;
- }
- }
- }
+ $dataMismatch = true;
+ if ( $this->externalValues ) {
+ foreach ( $this->externalValues as $externalValue ) {
+ $formattedExternalValue = $globeFormatter->format(
$externalValue );
+ if ( $formattedDataValue === $formattedExternalValue ) {
+ $dataMismatch = false;
+ break;
+ }
+ }
+ }
- return false;
- }
+ return $this->buildCompareResult( $dataMismatch );
+ }
- /**
- * Returns parser that is used to parse strings of external values to
Wikibase DataValues
- *
- * @return GlobeCoordinateParser
- */
- protected function getExternalValueParser() {
- return new GlobeCoordinateParser();
- }
+ /**
+ * Returns parser that is used to parse strings of external values to
Wikibase DataValues
+ *
+ * @return GlobeCoordinateParser
+ */
+ protected function getExternalValueParser() {
+ return new GlobeCoordinateParser();
+ }
}
\ No newline at end of file
diff --git a/includes/CrossCheck/Comparer/MonolingualTextValueComparer.php
b/includes/CrossCheck/Comparer/MonolingualTextValueComparer.php
index f7b27d2..fbed35c 100644
--- a/includes/CrossCheck/Comparer/MonolingualTextValueComparer.php
+++ b/includes/CrossCheck/Comparer/MonolingualTextValueComparer.php
@@ -2,6 +2,8 @@
namespace WikidataQuality\ExternalValidation\CrossCheck\Comparer;
+use WikidataQuality\ExternalValidation\CrossCheck\Result\CompareResult;
+
/**
* Class MonolingualTextValueComparer
*
@@ -11,26 +13,26 @@
*/
class MonolingualTextValueComparer extends DataValueComparer {
- /**
- * Array of DataValue classes that are supported by the current comparer
- *
- * @var array
- */
- public static $acceptedDataValues = array (
'DataValues\MonolingualTextValue' );
+ /**
+ * Array of DataValue classes that are supported by the current comparer
+ *
+ * @var array
+ */
+ public static $acceptedDataValues = array(
'DataValues\MonolingualTextValue' );
- /**
- * Starts the comparison of given MonolingualTextValue and values of
external database
- *
- * @return bool - result of the comparison.
- */
- public function execute() {
- $result = false;
- if ( $this->externalValues && in_array(
$this->localValue->getText(), $this->externalValues ) ) {
- $result = true;
- }
+ /**
+ * Starts the comparison of given MonolingualTextValue and values of
external database
+ *
+ * @return CompareResult
+ */
+ public function execute() {
+ $dataMismatch = true;
+ if ( $this->externalValues && in_array( $this->localValue->getText(),
$this->externalValues ) ) {
+ $dataMismatch = false;
+ }
- $this->parseExternalValues();
+ $this->parseExternalValues();
- return $result;
- }
+ return $this->buildCompareResult( $dataMismatch );
+ }
}
\ No newline at end of file
diff --git a/includes/CrossCheck/Comparer/MultilingualTextValueComparer.php
b/includes/CrossCheck/Comparer/MultilingualTextValueComparer.php
index 434ff7f..c525a13 100644
--- a/includes/CrossCheck/Comparer/MultilingualTextValueComparer.php
+++ b/includes/CrossCheck/Comparer/MultilingualTextValueComparer.php
@@ -3,6 +3,7 @@
namespace WikidataQuality\ExternalValidation\CrossCheck\Comparer;
use DataValues\MultilingualTextValue;
+use WikidataQuality\ExternalValidation\CrossCheck\Result\CompareResult;
use WikidataQuality\ExternalValidation\DumpMetaInformation;
@@ -15,47 +16,46 @@
*/
class MultilingualTextValueComparer extends MonolingualTextValueComparer {
- /**
- * Array of DataValue classes that are supported by the current comparer
- *
- * @var array
- */
- public static $acceptedDataValues = array (
'DataValues\MultilingualTextValue' );
+ /**
+ * Array of DataValue classes that are supported by the current comparer
+ *
+ * @var array
+ */
+ public static $acceptedDataValues = array(
'DataValues\MultilingualTextValue' );
- /**
- * @var MonolingualTextValueComparer
- */
- private $monolingualTextValueComparer;
+ /**
+ * @var MonolingualTextValueComparer
+ */
+ private $monolingualTextValueComparer;
- /**
- * @param DumpMetaInformation $dumpMetaInformation
- * @param MultilingualTextValue $localValue
- * @param array $externalValues
- */
- public function __construct( DumpMetaInformation $dumpMetaInformation,
MultilingualTextValue $localValue, array $externalValues ) {
- parent::__construct( $dumpMetaInformation, $localValue,
$externalValues );
+ /**
+ * @param DumpMetaInformation $dumpMetaInformation
+ * @param MultilingualTextValue $localValue
+ * @param array $externalValues
+ */
+ public function __construct( DumpMetaInformation $dumpMetaInformation,
MultilingualTextValue $localValue, array $externalValues ) {
+ parent::__construct( $dumpMetaInformation, $localValue,
$externalValues );
- foreach ( $localValue->getTexts() as $textValue ) {
- if ( $textValue->getLanguageCode() ===
$dumpMetaInformation->getLanguage() ) {
- $this->monolingualTextValueComparer = new
MonolingualTextValueComparer( $dumpMetaInformation, $textValue, $externalValues
);
- return;
- }
- }
- }
+ foreach ( $localValue->getTexts() as $textValue ) {
+ if ( $textValue->getLanguageCode() ===
$dumpMetaInformation->getLanguage() ) {
+ $this->monolingualTextValueComparer = new
MonolingualTextValueComparer( $dumpMetaInformation, $textValue, $externalValues
);
+ break;
+ }
+ }
+ }
- /**
- * Starts the comparison of given DataValue and values of external
database
- *
- * @return bool - result of the comparison.
- */
- public function execute() {
- $this->parseExternalValues();
+ /**
+ * Starts the comparison of given DataValue and values of external database
+ *
+ * @return CompareResult
+ */
+ public function execute() {
+ $this->parseExternalValues();
- $result = false;
- if ( $this->monolingualTextValueComparer ) {
- $result =
$this->monolingualTextValueComparer->execute();
- }
-
- return $result;
- }
+ if ( $this->monolingualTextValueComparer ) {
+ return $this->buildCompareResult(
+
$this->monolingualTextValueComparer->execute()->hasDataMismatchOccurred()
+ );
+ }
+ }
}
\ No newline at end of file
diff --git a/includes/CrossCheck/Comparer/QuantityValueComparer.php
b/includes/CrossCheck/Comparer/QuantityValueComparer.php
index 83d5f0f..2fbcf44 100644
--- a/includes/CrossCheck/Comparer/QuantityValueComparer.php
+++ b/includes/CrossCheck/Comparer/QuantityValueComparer.php
@@ -5,6 +5,7 @@
use ValueParsers\ParserOptions;
use ValueParsers\QuantityParser;
use ValueParsers\ValueParser;
+use WikidataQuality\ExternalValidation\CrossCheck\Result\CompareResult;
/**
@@ -16,43 +17,45 @@
*/
class QuantityValueComparer extends DataValueComparer {
- /**
- * Array of DataValue classes that are supported by the current comparer
- *
- * @var array
- */
- public static $acceptedDataValues = array ( 'DataValues\QuantityValue'
);
+ /**
+ * Array of DataValue classes that are supported by the current comparer
+ *
+ * @var array
+ */
+ public static $acceptedDataValues = array( 'DataValues\QuantityValue' );
- /**
- * Starts the comparison of given QuantityValue and values of external
database
- *
- * @return bool - result of the comparison.
- */
- public function execute() {
- $this->parseExternalValues();
+ /**
+ * Starts the comparison of given QuantityValue and values of external
database
+ *
+ * @return CompareResult
+ */
+ public function execute() {
+ $this->parseExternalValues();
- if ( $this->externalValues ) {
- foreach ( $this->externalValues as $externalValue ) {
- if ( $externalValue->getLowerBound() <=
$this->localValue->getUpperBound() &&
- $externalValue->getUpperBound() >=
$this->localValue->getLowerBound()
- ) {
- return true;
- }
- }
- }
+ $dataMismatch = true;
+ if ( $this->externalValues ) {
+ foreach ( $this->externalValues as $externalValue ) {
+ if ( $externalValue->getLowerBound() <=
$this->localValue->getUpperBound() &&
+ $externalValue->getUpperBound() >=
$this->localValue->getLowerBound()
+ ) {
+ $dataMismatch = false;
+ break;
+ }
+ }
+ }
- return false;
- }
+ return $this->buildCompareResult( $dataMismatch );
+ }
- /**
- * Returns parser that is used to parse strings of external values to
Wikibase DataValues
- *
- * @return GlobeCoordinateParser
- */
- protected function getExternalValueParser() {
- $parserOptions = new ParserOptions();
- $parserOptions->setOption( ValueParser::OPT_LANG,
$this->dumpMetaInformation->getLanguage() );
+ /**
+ * Returns parser that is used to parse strings of external values to
Wikibase DataValues
+ *
+ * @return GlobeCoordinateParser
+ */
+ protected function getExternalValueParser() {
+ $parserOptions = new ParserOptions();
+ $parserOptions->setOption( ValueParser::OPT_LANG,
$this->dumpMetaInformation->getLanguage() );
- return new QuantityParser( $parserOptions );
- }
+ return new QuantityParser( $parserOptions );
+ }
}
\ No newline at end of file
diff --git a/includes/CrossCheck/Comparer/StringValueComparer.php
b/includes/CrossCheck/Comparer/StringValueComparer.php
index 2d6fbcc..cbfd91c 100644
--- a/includes/CrossCheck/Comparer/StringValueComparer.php
+++ b/includes/CrossCheck/Comparer/StringValueComparer.php
@@ -2,6 +2,9 @@
namespace WikidataQuality\ExternalValidation\CrossCheck\Comparer;
+use WikidataQuality\ExternalValidation\CrossCheck\Result\CompareResult;
+
+
/**
* Class StringValueComparer
*
@@ -11,26 +14,26 @@
*/
class StringValueComparer extends DataValueComparer {
- /**
- * Array of DataValue classes that are supported by the current comparer
- *
- * @var array
- */
- public static $acceptedDataValues = array ( 'DataValues\StringValue' );
+ /**
+ * Array of DataValue classes that are supported by the current comparer
+ *
+ * @var array
+ */
+ public static $acceptedDataValues = array( 'DataValues\StringValue' );
- /**
- * Starts the comparison of given StringValue and values of external
database
- *
- * @return bool - result of the comparison
- */
- public function execute() {
- $result = false;
- if ( $this->externalValues && in_array(
$this->localValue->getValue(), $this->externalValues ) ) {
- $result = true;
- }
+ /**
+ * Starts the comparison of given StringValue and values of external
database
+ *
+ * @return CompareResult
+ */
+ public function execute() {
+ $dataMismatch = true;
+ if ( $this->externalValues && in_array( $this->localValue->getValue(),
$this->externalValues ) ) {
+ $dataMismatch = false;
+ }
- $this->parseExternalValues();
+ $this->parseExternalValues();
- return $result;
- }
+ return $this->buildCompareResult( $dataMismatch );
+ }
}
\ No newline at end of file
diff --git a/includes/CrossCheck/Comparer/TimeValueComparer.php
b/includes/CrossCheck/Comparer/TimeValueComparer.php
index 29ab8fc..e69fd35 100644
--- a/includes/CrossCheck/Comparer/TimeValueComparer.php
+++ b/includes/CrossCheck/Comparer/TimeValueComparer.php
@@ -4,12 +4,12 @@
use ValueFormatters\FormatterOptions;
use ValueFormatters\ValueFormatter;
-use ValueParsers\CalendarModelParser;
-use ValueParsers\TimeParser;
use ValueParsers\ParserOptions;
+use ValueParsers\TimeParser;
use ValueParsers\ValueParser;
use Wikibase\Lib\MwTimeIsoFormatter;
use Wikibase\Lib\Parsers\TimeParserFactory;
+use WikidataQuality\ExternalValidation\CrossCheck\Result\CompareResult;
/**
@@ -21,49 +21,51 @@
*/
class TimeValueComparer extends DataValueComparer {
- /**
- * Array of DataValue classes that are supported by the current comparer
- *
- * @var array
- */
- public static $acceptedDataValues = array ( 'DataValues\TimeValue' );
+ /**
+ * Array of DataValue classes that are supported by the current comparer
+ *
+ * @var array
+ */
+ public static $acceptedDataValues = array( 'DataValues\TimeValue' );
- /**
- * Starts the comparison of given TimeValue and values of external
database
- *
- * @return bool - result of the comparison.
- */
- public function execute() {
- $formatterOptions = new FormatterOptions();
- $formatterOptions->setOption( ValueFormatter::OPT_LANG,
$this->dumpMetaInformation->getLanguage() );
- $timeFormatter = new MwTimeIsoFormatter( $formatterOptions );
+ /**
+ * Starts the comparison of given TimeValue and values of external database
+ *
+ * @return CompareResult
+ */
+ public function execute() {
+ $formatterOptions = new FormatterOptions();
+ $formatterOptions->setOption( ValueFormatter::OPT_LANG,
$this->dumpMetaInformation->getLanguage() );
+ $timeFormatter = new MwTimeIsoFormatter( $formatterOptions );
- $formattedDataValue = $timeFormatter->format( $this->localValue
);
+ $formattedDataValue = $timeFormatter->format( $this->localValue );
- $this->parseExternalValues();
+ $this->parseExternalValues();
- if ( $this->externalValues ) {
- foreach ( $this->externalValues as $externalValue ) {
- $formattedExternalValue =
$timeFormatter->format( $externalValue );
- if ( $formattedDataValue ===
$formattedExternalValue ) {
- return true;
- }
- }
- }
+ $dataMismatch = true;
+ if ( $this->externalValues ) {
+ foreach ( $this->externalValues as $externalValue ) {
+ $formattedExternalValue = $timeFormatter->format(
$externalValue );
+ if ( $formattedDataValue === $formattedExternalValue ) {
+ $dataMismatch = false;
+ break;
+ }
+ }
+ }
- return false;
- }
+ return $this->buildCompareResult( $dataMismatch );
+ }
- /**
- * Returns parser that is used to parse strings of external values to
Wikibase DataValues
- *
- * @return TimeParser
- */
- protected function getExternalValueParser() {
- $parserOptions = new ParserOptions();
- $parserOptions->setOption( ValueParser::OPT_LANG,
$this->dumpMetaInformation->getLanguage() );
- $timeParserFactory = new TimeParserFactory( $parserOptions );
+ /**
+ * Returns parser that is used to parse strings of external values to
Wikibase DataValues
+ *
+ * @return TimeParser
+ */
+ protected function getExternalValueParser() {
+ $parserOptions = new ParserOptions();
+ $parserOptions->setOption( ValueParser::OPT_LANG,
$this->dumpMetaInformation->getLanguage() );
+ $timeParserFactory = new TimeParserFactory( $parserOptions );
- return $timeParserFactory->getTimeParser();
- }
+ return $timeParserFactory->getTimeParser();
+ }
}
\ No newline at end of file
diff --git a/includes/CrossCheck/CrossChecker.php
b/includes/CrossCheck/CrossChecker.php
index cd748ba..33063db 100644
--- a/includes/CrossCheck/CrossChecker.php
+++ b/includes/CrossCheck/CrossChecker.php
@@ -191,9 +191,7 @@
$comparer = DataValueComparer::getComparer(
$dumpMetaInformation, $dataValue, $externalValues );
if ( $comparer ) {
- $result = $comparer->execute();
-
- return new CompareResult(
$comparer->getLocalValue(), $comparer->getExternalValues(), !$result );
+ return $comparer->execute();
}
}
}
diff --git a/tests/phpunit/CrossCheck/Comparer/DataValueComparerTest.php
b/tests/phpunit/CrossCheck/Comparer/DataValueComparerTest.php
index a79466f..962f3fb 100644
--- a/tests/phpunit/CrossCheck/Comparer/DataValueComparerTest.php
+++ b/tests/phpunit/CrossCheck/Comparer/DataValueComparerTest.php
@@ -26,13 +26,11 @@
* @author BP2014N1
* @license GNU GPL v2+
*/
-class DataValueComparerTest extends \MediaWikiTestCase
-{
+class DataValueComparerTest extends \MediaWikiTestCase {
/**
* @dataProvider constructValidArgumentsDataProvider
*/
- public function testConstructValidArguments( $dumpMetaInformation,
$localValue, $externalValues )
- {
+ public function testConstructValidArguments( $dumpMetaInformation,
$localValue, $externalValues ) {
$comparerMock = $this->getDataValueComparerMock( $dumpMetaInformation,
$localValue, $externalValues );
$this->assertEquals( $dumpMetaInformation,
$comparerMock->getDumpMetaInformation() );
@@ -44,8 +42,7 @@
* Test cases for testConstructValidArguments
* @return array
*/
- public function constructValidArgumentsDataProvider()
- {
+ public function constructValidArgumentsDataProvider() {
return array(
array(
$this->getDumpMetaInformationMock(),
@@ -59,8 +56,7 @@
/**
* @dataProvider constructInvalidArgumentsDataProvider
*/
- public function testConstructInvalidArguments( $dumpMetaInformation,
$localValue, $externalValues )
- {
+ public function testConstructInvalidArguments( $dumpMetaInformation,
$localValue, $externalValues ) {
$this->setExpectedException( 'InvalidArgumentException' );
$this->getDataValueComparerMock( $dumpMetaInformation, $localValue,
$externalValues );
@@ -70,8 +66,7 @@
* Test cases for testConstructInvalidArguments
* @return array
*/
- public function constructInvalidArgumentsDataProvider()
- {
+ public function constructInvalidArgumentsDataProvider() {
$dumpMetaInformation = $this->getDumpMetaInformationMock();
$localValue = new StringValue( 'foo' );
@@ -93,8 +88,7 @@
/**
* @dataProvider getComparerDataProvider
*/
- public function testGetComparer( $dumpMetaInformation, $localValue,
$externalValues, $comparerClass )
- {
+ public function testGetComparer( $dumpMetaInformation, $localValue,
$externalValues, $comparerClass ) {
$comparer = DataValueComparer::getComparer( $dumpMetaInformation,
$localValue, $externalValues );
if ( $comparerClass ) {
$this->assertInstanceOf( $comparerClass, $comparer );
@@ -107,8 +101,7 @@
* Test cases for testGetComparer
* @return array
*/
- public function getComparerDataProvider()
- {
+ public function getComparerDataProvider() {
$dumpMetaInformation = $this->getDumpMetaInformationMock();
return array(
@@ -171,8 +164,7 @@
* @param array $externalValues
* @return \PHPUnit_Framework_MockObject_MockObject
*/
- private function getDataValueComparerMock( $dumpMetaInformation,
$localValue, $externalValues )
- {
+ private function getDataValueComparerMock( $dumpMetaInformation,
$localValue, $externalValues ) {
return $this->getMockForAbstractClass(
'WikidataQuality\ExternalValidation\CrossCheck\Comparer\DataValueComparer',
array( $dumpMetaInformation, $localValue, $externalValues )
@@ -183,8 +175,7 @@
* Returns DumpMetaInformation mock.
* @return \PHPUnit_Framework_MockObject_MockObject
*/
- public function getDumpMetaInformationMock()
- {
+ public function getDumpMetaInformationMock() {
$mock = $this->getMockBuilder(
'WikidataQuality\ExternalValidation\DumpMetaInformation' )
->disableOriginalConstructor()
->getMock();
diff --git a/tests/phpunit/CrossCheck/Comparer/DataValueComparerTestBase.php
b/tests/phpunit/CrossCheck/Comparer/DataValueComparerTestBase.php
index 72098d8..a7380ae 100644
--- a/tests/phpunit/CrossCheck/Comparer/DataValueComparerTestBase.php
+++ b/tests/phpunit/CrossCheck/Comparer/DataValueComparerTestBase.php
@@ -7,22 +7,28 @@
* @group WikidataQuality
* @group WikidataQuality\ExternalValidation
*
+ * @uses WikidataQuality\ExternalValidation\CrossCheck\Result\CompareResult
+ * @uses
WikidataQuality\ExternalValidation\CrossCheck\Comparer\DataValueComparer
+ *
* @author BP2014N1
* @license GNU GPL v2+
*/
-abstract class DataValueComparerTestBase extends \MediaWikiTestCase
-{
+abstract class DataValueComparerTestBase extends \MediaWikiTestCase {
/**
- * @covers
WikidataQuality\ExternalValidation\CrossCheck\Comparer\DataValueComparer::getExternalValueParser
- * @covers
WikidataQuality\ExternalValidation\CrossCheck\Comparer\DataValueComparer::parseExternalValues
* @dataProvider executeDataProvider
*/
- public function testExecute( $dumpMetaInformation, $localValue,
$externalValues, $expectedResult, $expectedExternalValues )
- {
+ public function testExecute( $dumpMetaInformation, $localValue,
$externalValues, $expectedDataMismatch, $expectedExternalValues ) {
$comparer = $this->createComparer( $dumpMetaInformation, $localValue,
$externalValues );
+ $result = $comparer->execute();
- $this->assertEquals( $expectedResult, $comparer->execute() );
- $this->assertEquals( $expectedExternalValues,
$comparer->getExternalValues() );
+ if ( $result ) {
+ $this->assertEquals( $localValue, $result->getLocalValue() );
+ $this->assertEquals( $expectedExternalValues,
$result->getExternalValues() );
+ $this->assertEquals( $expectedDataMismatch,
$result->hasDataMismatchOccurred() );
+ } else {
+ $this->assertNull( $expectedDataMismatch );
+ $this->assertNull( $expectedExternalValues );
+ }
}
/*
@@ -45,8 +51,7 @@
* @param $language
* @return \PHPUnit_Framework_MockObject_MockObject
*/
- protected function getDumpMetaInformationMock( $language )
- {
+ protected function getDumpMetaInformationMock( $language ) {
$mock = $this->getMockBuilder(
'WikidataQuality\ExternalValidation\DumpMetaInformation' )
->setMethods( array( 'getLanguage' ) )
->disableOriginalConstructor()
diff --git a/tests/phpunit/CrossCheck/Comparer/EntityIdValueComparerTest.php
b/tests/phpunit/CrossCheck/Comparer/EntityIdValueComparerTest.php
index 099c29f..5920b45 100644
--- a/tests/phpunit/CrossCheck/Comparer/EntityIdValueComparerTest.php
+++ b/tests/phpunit/CrossCheck/Comparer/EntityIdValueComparerTest.php
@@ -10,22 +10,21 @@
/**
+ * @covers
WikidataQuality\ExternalValidation\CrossCheck\Comparer\DataValueComparer
* @covers
WikidataQuality\ExternalValidation\CrossCheck\Comparer\EntityIdValueComparer
*
- * @uses WikidataQuality\ExternalValidation\DumpMetaInformation
+ * @uses WikidataQuality\ExternalValidation\CrossCheck\Result\CompareResult
* @uses
WikidataQuality\ExternalValidation\CrossCheck\Comparer\DataValueComparer
*
* @author BP2014N1
* @license GNU GPL v2+
*/
-class EntityIdValueComparerTest extends DataValueComparerTestBase
-{
+class EntityIdValueComparerTest extends DataValueComparerTestBase {
/**
* Test cases for testExecute
* @return array
*/
- public function executeDataProvider()
- {
+ public function executeDataProvider() {
$dumpMetaInformationEn = $this->getDumpMetaInformationMock( 'en' );
$dumpMetaInformationDe = $this->getDumpMetaInformationMock( 'de' );
$dumpMetaInformationEs = $this->getDumpMetaInformationMock( 'es' );
@@ -37,8 +36,8 @@
$dumpMetaInformationEn,
$localValueQ1,
array( 'foo' ),
- true,
- array (
+ false,
+ array(
new MonolingualTextValue( 'en', 'foo' )
)
),
@@ -46,7 +45,7 @@
$dumpMetaInformationEn,
$localValueQ1,
array( 'baz' ),
- false,
+ true,
array(
new MonolingualTextValue( 'en', 'baz' )
)
@@ -55,7 +54,7 @@
$dumpMetaInformationDe,
$localValueQ1,
array( 'Fubar' ),
- true,
+ false,
array(
new MonolingualTextValue( 'de', 'Fubar' )
)
@@ -64,7 +63,7 @@
$dumpMetaInformationEs,
$localValueQ1,
array( 'foo' ),
- false,
+ true,
array(
new MonolingualTextValue( 'es', 'foo' )
)
@@ -73,7 +72,7 @@
$dumpMetaInformationEn,
$localValueQ2,
array( 'foo' ),
- false,
+ true,
array(
new MonolingualTextValue( 'en', 'foo' )
)
@@ -82,8 +81,7 @@
}
- protected function createComparer( $dumpMetaInformation, $localValue,
$externalValues )
- {
+ protected function createComparer( $dumpMetaInformation, $localValue,
$externalValues ) {
$mock = $this->getMockBuilder(
'WikidataQuality\ExternalValidation\CrossCheck\Comparer\EntityIdValueComparer' )
->setMethods( array( 'getEntityLookup' ) )
->setConstructorArgs( array( $dumpMetaInformation, $localValue,
$externalValues ) )
diff --git
a/tests/phpunit/CrossCheck/Comparer/GlobeCoordinateValueComparerTest.php
b/tests/phpunit/CrossCheck/Comparer/GlobeCoordinateValueComparerTest.php
index 5c5ebd6..8a8814f 100644
--- a/tests/phpunit/CrossCheck/Comparer/GlobeCoordinateValueComparerTest.php
+++ b/tests/phpunit/CrossCheck/Comparer/GlobeCoordinateValueComparerTest.php
@@ -6,26 +6,24 @@
use DataValues\Geo\Values\GlobeCoordinateValue;
use DataValues\Geo\Values\LatLongValue;
use
WikidataQuality\ExternalValidation\CrossCheck\Comparer\GlobeCoordinateValueComparer;
-use WikidataQuality\ExternalValidation\DumpMetaInformation;
/**
+ * @covers
WikidataQuality\ExternalValidation\CrossCheck\Comparer\DataValueComparer
* @covers
WikidataQuality\ExternalValidation\CrossCheck\Comparer\GlobeCoordinateValueComparer
*
- * @uses WikidataQuality\ExternalValidation\DumpMetaInformation
+ * @uses WikidataQuality\ExternalValidation\CrossCheck\Result\CompareResult
* @uses
WikidataQuality\ExternalValidation\CrossCheck\Comparer\DataValueComparer
*
* @author BP2014N1
* @license GNU GPL v2+
*/
-class GlobeCoordinateValueComparerTest extends DataValueComparerTestBase
-{
+class GlobeCoordinateValueComparerTest extends DataValueComparerTestBase {
/**
* Test cases for testExecute
* @return array
*/
- public function executeDataProvider()
- {
+ public function executeDataProvider() {
$dumpMetaInformation = $this->getDumpMetaInformationMock( 'en' );
$localValue = new GlobeCoordinateValue( new LatLongValue( 64, 26 ), 1
);
@@ -34,7 +32,7 @@
$dumpMetaInformation,
$localValue,
array( '64.000000 N, 26.000000 E' ),
- true,
+ false,
array(
new GlobeCoordinateValue( new LatLongValue( 64, 26 ), 1 )
)
@@ -43,7 +41,7 @@
$dumpMetaInformation,
$localValue,
array( '64 N, 26 E' ),
- true,
+ false,
array(
new GlobeCoordinateValue( new LatLongValue( 64, 26 ), 1 )
)
@@ -52,7 +50,7 @@
$dumpMetaInformation,
$localValue,
array( '42.000000 N, 32.000000 E' ),
- false,
+ true,
array(
new GlobeCoordinateValue( new LatLongValue( 42, 32 ), 1 )
)
@@ -60,8 +58,7 @@
);
}
- protected function createComparer( $dumpMetaInformation, $localValue,
$externalValues )
- {
+ protected function createComparer( $dumpMetaInformation, $localValue,
$externalValues ) {
return new GlobeCoordinateValueComparer( $dumpMetaInformation,
$localValue, $externalValues );
}
}
\ No newline at end of file
diff --git
a/tests/phpunit/CrossCheck/Comparer/MonolingualTextValueComparerTest.php
b/tests/phpunit/CrossCheck/Comparer/MonolingualTextValueComparerTest.php
index e5d7a91..e8535e8 100644
--- a/tests/phpunit/CrossCheck/Comparer/MonolingualTextValueComparerTest.php
+++ b/tests/phpunit/CrossCheck/Comparer/MonolingualTextValueComparerTest.php
@@ -5,26 +5,24 @@
use DataValues\MonolingualTextValue;
use
WikidataQuality\ExternalValidation\CrossCheck\Comparer\MonolingualTextValueComparer;
-use WikidataQuality\ExternalValidation\DumpMetaInformation;
/**
+ * @covers
WikidataQuality\ExternalValidation\CrossCheck\Comparer\DataValueComparer
* @covers
WikidataQuality\ExternalValidation\CrossCheck\Comparer\MonolingualTextValueComparer
*
- * @uses WikidataQuality\ExternalValidation\DumpMetaInformation
+ * @uses WikidataQuality\ExternalValidation\CrossCheck\Result\CompareResult
* @uses
WikidataQuality\ExternalValidation\CrossCheck\Comparer\DataValueComparer
*
* @author BP2014N1
* @license GNU GPL v2+
*/
-class MonolingualTextValueComparerTest extends DataValueComparerTestBase
-{
+class MonolingualTextValueComparerTest extends DataValueComparerTestBase {
/**
* Test cases for testExecute
* @return array
*/
- public function executeDataProvider()
- {
+ public function executeDataProvider() {
$dumpMetaInformationEn = $this->getDumpMetaInformationMock( 'en' );
$dumpMetaInformationDe = $this->getDumpMetaInformationMock( 'de' );
$localValue = new MonolingualTextValue( 'en', 'foo' );
@@ -34,7 +32,7 @@
$dumpMetaInformationEn,
$localValue,
array( 'foo', 'bar' ),
- true,
+ false,
array(
new MonolingualTextValue( 'en', 'foo' ),
new MonolingualTextValue( 'en', 'bar' )
@@ -44,7 +42,7 @@
$dumpMetaInformationEn,
$localValue,
array( 'foobar', 'bar' ),
- false,
+ true,
array(
new MonolingualTextValue( 'en', 'foobar' ),
new MonolingualTextValue( 'en', 'bar' )
@@ -54,7 +52,7 @@
$dumpMetaInformationDe,
$localValue,
array( 'foo', 'bar' ),
- true,
+ false,
array(
new MonolingualTextValue( 'de', 'foo' ),
new MonolingualTextValue( 'de', 'bar' )
@@ -63,8 +61,7 @@
);
}
- protected function createComparer( $dumpMetaInformation, $localValue,
$externalValues )
- {
+ protected function createComparer( $dumpMetaInformation, $localValue,
$externalValues ) {
return new MonolingualTextValueComparer( $dumpMetaInformation,
$localValue, $externalValues );
}
}
\ No newline at end of file
diff --git
a/tests/phpunit/CrossCheck/Comparer/MultilingualTextValueComparerTest.php
b/tests/phpunit/CrossCheck/Comparer/MultilingualTextValueComparerTest.php
index 97c2b16..567ce28 100644
--- a/tests/phpunit/CrossCheck/Comparer/MultilingualTextValueComparerTest.php
+++ b/tests/phpunit/CrossCheck/Comparer/MultilingualTextValueComparerTest.php
@@ -6,26 +6,24 @@
use DataValues\MonolingualTextValue;
use DataValues\MultilingualTextValue;
use
WikidataQuality\ExternalValidation\CrossCheck\Comparer\MultilingualTextValueComparer;
-use WikidataQuality\ExternalValidation\DumpMetaInformation;
/**
+ * @covers
WikidataQuality\ExternalValidation\CrossCheck\Comparer\DataValueComparer
* @covers
WikidataQuality\ExternalValidation\CrossCheck\Comparer\MultilingualTextValueComparer
*
- * @uses WikidataQuality\ExternalValidation\DumpMetaInformation
+ * @uses WikidataQuality\ExternalValidation\CrossCheck\Result\CompareResult
* @uses
WikidataQuality\ExternalValidation\CrossCheck\Comparer\DataValueComparer
* @uses
WikidataQuality\ExternalValidation\CrossCheck\Comparer\MonolingualTextValueComparer
*
* @author BP2014N1
* @license GNU GPL v2+
*/
-class MultilingualTextValueComparerTest extends DataValueComparerTestBase
-{
+class MultilingualTextValueComparerTest extends DataValueComparerTestBase {
/**
* @dataProvider constructDataProvider
*/
- public function testConstruct( $dumpMetaInformation, $localValue,
$externalValues )
- {
+ public function testConstruct( $dumpMetaInformation, $localValue,
$externalValues ) {
$comparer = $this->createComparer( $dumpMetaInformation, $localValue,
$externalValues );
$this->assertEquals( $dumpMetaInformation,
$comparer->getDumpMetaInformation() );
@@ -33,8 +31,7 @@
$this->assertEquals( $externalValues, $comparer->getExternalValues() );
}
- public function constructDataProvider()
- {
+ public function constructDataProvider() {
$monolingualTextValue = new MonolingualTextValue( 'en', 'foo' );
return array(
@@ -56,59 +53,54 @@
* Test cases for testExecute
* @return array
*/
- public function executeDataProvider()
- {
+ public function executeDataProvider() {
$dumpMetaInformationEn = $this->getDumpMetaInformationMock( 'en' );
$dumpMetaInformationDe = $this->getDumpMetaInformationMock( 'de' );
$localValueEn = new MultilingualTextValue( array( new
MonolingualTextValue( 'en', 'foo' ) ) );
$localValueDe = new MultilingualTextValue( array( new
MonolingualTextValue( 'de', 'foo' ) ) );
return array(
- array(
- $dumpMetaInformationEn,
- $localValueEn,
- array( 'foo', 'bar' ),
- true,
- array(
- new MonolingualTextValue( 'en', 'foo' ),
- new MonolingualTextValue( 'en', 'bar' )
- )
- ),
+ // Data mismatch
array(
$dumpMetaInformationEn,
$localValueEn,
array( 'foobar', 'bar' ),
- false,
+ true,
array(
new MonolingualTextValue( 'en', 'foobar' ),
new MonolingualTextValue( 'en', 'bar' )
)
),
- array(
- $dumpMetaInformationDe,
- $localValueEn,
- array( 'foo', 'bar' ),
- false,
- array(
- new MonolingualTextValue( 'de', 'foo' ),
- new MonolingualTextValue( 'de', 'bar' )
- )
- ),
+ // No data mismatch
array(
$dumpMetaInformationEn,
- $localValueDe,
+ $localValueEn,
array( 'foo', 'bar' ),
false,
array(
new MonolingualTextValue( 'en', 'foo' ),
new MonolingualTextValue( 'en', 'bar' )
)
+ ),
+ // DataValue contains no text in language of data source
+ array(
+ $dumpMetaInformationDe,
+ $localValueEn,
+ array( 'foo', 'bar' ),
+ null,
+ null
+ ),
+ array(
+ $dumpMetaInformationEn,
+ $localValueDe,
+ array( 'foo', 'bar' ),
+ null,
+ null
)
);
}
- protected function createComparer( $dumpMetaInformation, $localValue,
$externalValues )
- {
+ protected function createComparer( $dumpMetaInformation, $localValue,
$externalValues ) {
return new MultilingualTextValueComparer( $dumpMetaInformation,
$localValue, $externalValues );
}
}
\ No newline at end of file
diff --git a/tests/phpunit/CrossCheck/Comparer/QuantityValueComparerTest.php
b/tests/phpunit/CrossCheck/Comparer/QuantityValueComparerTest.php
index 31cd825..eb0346c 100644
--- a/tests/phpunit/CrossCheck/Comparer/QuantityValueComparerTest.php
+++ b/tests/phpunit/CrossCheck/Comparer/QuantityValueComparerTest.php
@@ -5,26 +5,24 @@
use DataValues\QuantityValue;
use
WikidataQuality\ExternalValidation\CrossCheck\Comparer\QuantityValueComparer;
-use WikidataQuality\ExternalValidation\DumpMetaInformation;
/**
+ * @covers
WikidataQuality\ExternalValidation\CrossCheck\Comparer\DataValueComparer
* @covers
WikidataQuality\ExternalValidation\CrossCheck\Comparer\QuantityValueComparer
*
- * @uses WikidataQuality\ExternalValidation\DumpMetaInformation
+ * @uses WikidataQuality\ExternalValidation\CrossCheck\Result\CompareResult
* @uses
WikidataQuality\ExternalValidation\CrossCheck\Comparer\DataValueComparer
*
* @author BP2014N1
* @license GNU GPL v2+
*/
-class QuantityValueComparerTest extends DataValueComparerTestBase
-{
+class QuantityValueComparerTest extends DataValueComparerTestBase {
/**
* Test cases for testExecute
* @return array
*/
- public function executeDataProvider()
- {
+ public function executeDataProvider() {
$dumpMetaInformation = $this->getDumpMetaInformationMock( 'en' );
return array(
@@ -32,7 +30,7 @@
$dumpMetaInformation,
QuantityValue::newFromNumber( 42, '1', 44, 40 ),
array( '42' ),
- true,
+ false,
array(
QuantityValue::newFromNumber( 42, '1', 43, 41 )
)
@@ -41,7 +39,7 @@
$dumpMetaInformation,
QuantityValue::newFromNumber( 42, '1', 44, 40 ),
array( '41' ),
- true,
+ false,
array(
QuantityValue::newFromNumber( 41, '1', 42, 40 )
)
@@ -50,7 +48,7 @@
$dumpMetaInformation,
QuantityValue::newFromNumber( 42, '1' ),
array( '23' ),
- false,
+ true,
array(
QuantityValue::newFromNumber( 23, '1', 24, 22 )
)
@@ -59,7 +57,7 @@
$dumpMetaInformation,
QuantityValue::newFromNumber( 42, '1' ),
array( '42' ),
- true,
+ false,
array(
QuantityValue::newFromNumber( 42, '1', 43, 41 )
)
@@ -68,7 +66,7 @@
$dumpMetaInformation,
QuantityValue::newFromNumber( 42, '1' ),
array( '44' ),
- false,
+ true,
array(
QuantityValue::newFromNumber( 44, '1', 45, 43 )
)
@@ -76,8 +74,7 @@
);
}
- protected function createComparer( $dumpMetaInformation, $localValue,
$externalValues )
- {
+ protected function createComparer( $dumpMetaInformation, $localValue,
$externalValues ) {
return new QuantityValueComparer( $dumpMetaInformation, $localValue,
$externalValues );
}
}
\ No newline at end of file
diff --git a/tests/phpunit/CrossCheck/Comparer/StringValueComparerTest.php
b/tests/phpunit/CrossCheck/Comparer/StringValueComparerTest.php
index f86e896..117e62c 100644
--- a/tests/phpunit/CrossCheck/Comparer/StringValueComparerTest.php
+++ b/tests/phpunit/CrossCheck/Comparer/StringValueComparerTest.php
@@ -6,26 +6,24 @@
use DataValues\MonolingualTextValue;
use DataValues\StringValue;
use WikidataQuality\ExternalValidation\CrossCheck\Comparer\StringValueComparer;
-use WikidataQuality\ExternalValidation\DumpMetaInformation;
/**
+ * @covers
WikidataQuality\ExternalValidation\CrossCheck\Comparer\DataValueComparer
* @covers
WikidataQuality\ExternalValidation\CrossCheck\Comparer\StringValueComparer
*
- * @uses WikidataQuality\ExternalValidation\DumpMetaInformation
+ * @uses WikidataQuality\ExternalValidation\CrossCheck\Result\CompareResult
* @uses
WikidataQuality\ExternalValidation\CrossCheck\Comparer\DataValueComparer
*
* @author BP2014N1
* @license GNU GPL v2+
*/
-class StringValueComparerTest extends DataValueComparerTestBase
-{
+class StringValueComparerTest extends DataValueComparerTestBase {
/**
* Test cases for testExecute
* @return array
*/
- public function executeDataProvider()
- {
+ public function executeDataProvider() {
$dumpMetaInformationEn = $this->getDumpMetaInformationMock( 'en' );
$dumpMetaInformationDe = $this->getDumpMetaInformationMock( 'de' );
@@ -34,7 +32,7 @@
$dumpMetaInformationEn,
new StringValue( 'foo' ),
array( 'foo', 'bar' ),
- true,
+ false,
array(
new MonolingualTextValue( 'en', 'foo' ),
new MonolingualTextValue( 'en', 'bar' )
@@ -44,7 +42,7 @@
$dumpMetaInformationEn,
new StringValue( 'foo' ),
array( 'foobar', 'bar' ),
- false,
+ true,
array(
new MonolingualTextValue( 'en', 'foobar' ),
new MonolingualTextValue( 'en', 'bar' )
@@ -54,7 +52,7 @@
$dumpMetaInformationDe,
new StringValue( 'foobar' ),
array( 'foobar', 'bar' ),
- true,
+ false,
array(
new MonolingualTextValue( 'de', 'foobar' ),
new MonolingualTextValue( 'de', 'bar' )
@@ -63,8 +61,7 @@
);
}
- protected function createComparer( $dumpMetaInformation, $localValue,
$externalValues )
- {
+ protected function createComparer( $dumpMetaInformation, $localValue,
$externalValues ) {
return new StringValueComparer( $dumpMetaInformation, $localValue,
$externalValues );
}
}
\ No newline at end of file
diff --git a/tests/phpunit/CrossCheck/Comparer/TimeValueComparerTest.php
b/tests/phpunit/CrossCheck/Comparer/TimeValueComparerTest.php
index cf3b08f..3c6223b 100644
--- a/tests/phpunit/CrossCheck/Comparer/TimeValueComparerTest.php
+++ b/tests/phpunit/CrossCheck/Comparer/TimeValueComparerTest.php
@@ -5,26 +5,24 @@
use DataValues\TimeValue;
use WikidataQuality\ExternalValidation\CrossCheck\Comparer\TimeValueComparer;
-use WikidataQuality\ExternalValidation\DumpMetaInformation;
/**
+ * @covers
WikidataQuality\ExternalValidation\CrossCheck\Comparer\DataValueComparer
* @covers
WikidataQuality\ExternalValidation\CrossCheck\Comparer\TimeValueComparer
*
- * @uses WikidataQuality\ExternalValidation\DumpMetaInformation
+ * @uses WikidataQuality\ExternalValidation\CrossCheck\Result\CompareResult
* @uses
WikidataQuality\ExternalValidation\CrossCheck\Comparer\DataValueComparer
*
* @author BP2014N1
* @license GNU GPL v2+
*/
-class TimeValueComparerTest extends DataValueComparerTestBase
-{
+class TimeValueComparerTest extends DataValueComparerTestBase {
/**
* Test cases for testExecute
* @return array
*/
- public function executeDataProvider()
- {
+ public function executeDataProvider() {
$dumpMetaInformation = $this->getDumpMetaInformationMock( 'en' );
$localValue1955 = new TimeValue( '+0000000000001955-03-11T00:00:00Z',
0, 0, 0, 11, 'http://www.wikidata.org/entity/Q1985727' );
$localValue2015 = new TimeValue( '+0000000000002015-00-00T00:00:00Z',
0, 0, 0, 9, 'http://www.wikidata.org/entity/Q1985727' );
@@ -34,7 +32,7 @@
$dumpMetaInformation,
$localValue1955,
array( '11.03.1955' ),
- true,
+ false,
array(
new TimeValue( '+0000000000001955-03-11T00:00:00Z', 0, 0,
0, 11, 'http://www.wikidata.org/entity/Q1985727' )
)
@@ -43,7 +41,7 @@
$dumpMetaInformation,
$localValue1955,
array( '1955-03-11' ),
- true,
+ false,
array(
new TimeValue( '+0000000000001955-03-11T00:00:00Z', 0, 0,
0, 11, 'http://www.wikidata.org/entity/Q1985727' )
)
@@ -52,7 +50,7 @@
$dumpMetaInformation,
$localValue1955,
array( '1991-05-23' ),
- false,
+ true,
array(
new TimeValue( '+0000000000001991-05-23T00:00:00Z', 0, 0,
0, 11, 'http://www.wikidata.org/entity/Q1985727' )
)
@@ -61,7 +59,7 @@
$dumpMetaInformation,
$localValue2015,
array( '2015' ),
- true,
+ false,
array(
new TimeValue( '+0000000000002015-00-00T00:00:00Z', 0, 0,
0, 9, 'http://www.wikidata.org/entity/Q1985727' )
)
@@ -69,8 +67,7 @@
);
}
- protected function createComparer( $dumpMetaInformation, $localValue,
$externalValues )
- {
+ protected function createComparer( $dumpMetaInformation, $localValue,
$externalValues ) {
return new TimeValueComparer( $dumpMetaInformation, $localValue,
$externalValues );
}
}
\ No newline at end of file
--
To view, visit https://gerrit.wikimedia.org/r/205261
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I23fa8eeb59a02188933e07b2aae721dc44fdaeb5
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/WikidataQualityExternalValidation
Gerrit-Branch: master
Gerrit-Owner: Soeren.oldag <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits