summaryrefslogtreecommitdiff
path: root/www/wiki/extensions/Translate/tests/phpunit/insertables/CombinedInsertablesSuggesterTest.php
diff options
context:
space:
mode:
Diffstat (limited to 'www/wiki/extensions/Translate/tests/phpunit/insertables/CombinedInsertablesSuggesterTest.php')
-rw-r--r--www/wiki/extensions/Translate/tests/phpunit/insertables/CombinedInsertablesSuggesterTest.php88
1 files changed, 88 insertions, 0 deletions
diff --git a/www/wiki/extensions/Translate/tests/phpunit/insertables/CombinedInsertablesSuggesterTest.php b/www/wiki/extensions/Translate/tests/phpunit/insertables/CombinedInsertablesSuggesterTest.php
new file mode 100644
index 00000000..3a6ec8b6
--- /dev/null
+++ b/www/wiki/extensions/Translate/tests/phpunit/insertables/CombinedInsertablesSuggesterTest.php
@@ -0,0 +1,88 @@
+<?php
+
+/**
+ * @file
+ * @author Geoffrey Mon
+ * @license GPL-2.0-or-later
+ */
+class CombinedInsertablesSuggesterTest extends MediaWikiTestCase {
+
+ /**
+ * @dataProvider getInsertablesProvider
+ */
+ public function testGetInsertables( $suggesters, $input, $expected ) {
+ $suggester = new CombinedInsertablesSuggester( $suggesters );
+ $this->assertArrayEquals( $expected, $suggester->getInsertables( $input ) );
+ }
+
+ public function getInsertablesProvider() {
+ return [
+ // Test basic combination of multiple InsertablesSuggesters
+ [
+ [
+ new TestingInsertablesSuggester(),
+ new NumericalParameterInsertablesSuggester(),
+ ],
+ 'test $1 foo $2 bar $3spam eggs',
+ [
+ new Insertable( 'Test', 'Test', '' ),
+ new Insertable( '$1', '$1', '' ),
+ new Insertable( '$2', '$2', '' ),
+ new Insertable( '$3', '$3', '' ),
+ ]
+ ],
+ // Test removal of duplicate suggestions
+ [
+ [
+ new NumericalParameterInsertablesSuggester(),
+ new NumericalParameterInsertablesSuggester(),
+ ],
+ 'test $1 duplicates $2 $3',
+ [
+ new Insertable( '$1', '$1', '' ),
+ new Insertable( '$2', '$2', '' ),
+ new Insertable( '$3', '$3', '' ),
+ ]
+ ],
+ // Test removal of duplicate suggestions
+ [
+ [
+ new TestingDuplicateInsertablesSuggester(),
+ new NumericalParameterInsertablesSuggester(),
+ ],
+ 'test $1 duplicates $2 $3',
+ [
+ new Insertable( '$1', '$1', '' ),
+ new Insertable( '$2', '$2', '' ),
+ new Insertable( '$3', '$3', '' ),
+ new Insertable( 'Test', 'Test', '' ),
+ new Insertable( '', 'Test', 'Test' ),
+ ]
+ ],
+ // Test no InsertablesSuggesters
+ [
+ [],
+ 'test $1 duplicates $2 $3',
+ []
+ ],
+ ];
+ }
+}
+
+class TestingInsertablesSuggester implements InsertablesSuggester {
+ public function getInsertables( $text ) {
+ return [ new Insertable( 'Test', 'Test', '' ) ];
+ }
+}
+
+class TestingDuplicateInsertablesSuggester implements InsertablesSuggester {
+ public function getInsertables( $text ) {
+ return [
+ new Insertable( '$1', '$1', '' ),
+ new Insertable( '$1', '$1', '' ),
+ new Insertable( 'Test', 'Test', '' ),
+ new Insertable( 'Test', 'Test', '' ),
+ new Insertable( '', 'Test', 'Test' ),
+ ];
+ }
+}