From 8551f29ae2f8a75d52bed5ec8ede0ca3d392a0cf Mon Sep 17 00:00:00 2001 From: Yuri Astrakhan Date: Mon, 7 Jan 2013 04:59:16 -0500 Subject: [PATCH] Language::listToText cleanup with unit test Change-Id: If88ab7da07e336fc5f6264c7d6b4f6ce542f99c9 --- languages/Language.php | 33 ++++++++++++------------ tests/phpunit/languages/LanguageTest.php | 13 ++++++++++ 2 files changed, 30 insertions(+), 16 deletions(-) diff --git a/languages/Language.php b/languages/Language.php index 24dc9480bc..eb3a37e452 100644 --- a/languages/Language.php +++ b/languages/Language.php @@ -3012,25 +3012,26 @@ class Language { * @return string */ function listToText( array $l ) { - $s = ''; $m = count( $l ) - 1; - - if ( $m === 0 ) { - return $l[0]; - } elseif ( $m === 1 ) { - return $l[0] . $this->getMessageFromDB( 'and' ) . $this->getMessageFromDB( 'word-separator' ) . $l[1]; - } else { - for ( $i = $m; $i >= 0; $i-- ) { - if ( $i == $m ) { - $s = $l[$i]; - } elseif ( $i == $m - 1 ) { - $s = $l[$i] . $this->getMessageFromDB( 'and' ) . $this->getMessageFromDB( 'word-separator' ) . $s; - } else { - $s = $l[$i] . $this->getMessageFromDB( 'comma-separator' ) . $s; - } + if ( $m < 0 ) { + return ''; + } + if ( $m > 0 ) { + $and = $this->getMessageFromDB( 'and' ); + $space = $this->getMessageFromDB( 'word-separator' ); + if ( $m > 1 ) { + $comma = $this->getMessageFromDB( 'comma-separator' ); + } + } + $s = $l[$m]; + for ( $i = $m - 1; $i >= 0; $i-- ) { + if ( $i == $m - 1 ) { + $s = $l[$i] . $and . $space . $s; + } else { + $s = $l[$i] . $comma . $s; } - return $s; } + return $s; } /** diff --git a/tests/phpunit/languages/LanguageTest.php b/tests/phpunit/languages/LanguageTest.php index fa66055766..785c21c91e 100644 --- a/tests/phpunit/languages/LanguageTest.php +++ b/tests/phpunit/languages/LanguageTest.php @@ -1142,5 +1142,18 @@ class LanguageTest extends LanguageClassesTestCase { array( 1000000.0001, '1,000,000.0001' ), ); } + + function testListToText() { + $lang = $this->getLang(); + $and = $lang->getMessageFromDB( 'and' ); + $s = $lang->getMessageFromDB( 'word-separator' ); + $c = $lang->getMessageFromDB( 'comma-separator' ); + + $this->assertEquals( '', $lang->listToText( array( ) ) ); + $this->assertEquals( 'a', $lang->listToText( array( 'a' ) ) ); + $this->assertEquals( "a{$and}{$s}b", $lang->listToText( array( 'a', 'b' ) ) ); + $this->assertEquals( "a{$c}b{$and}{$s}c", $lang->listToText( array( 'a', 'b', 'c' ) ) ); + $this->assertEquals( "a{$c}b{$c}c{$and}{$s}d", $lang->listToText( array( 'a', 'b', 'c', 'd' ) ) ); + } } -- 2.20.1