Selaa lähdekoodia

Fixes #536 - Zend_Measure_Number convert some decimal numbers to roman with space char

Frank Brückner 10 vuotta sitten
vanhempi
commit
aa106408a0
2 muutettua tiedostoa jossa 46 lisäystä ja 0 poistoa
  1. 6 0
      library/Zend/Measure/Number.php
  2. 40 0
      tests/Zend/Measure/NumberTest.php

+ 6 - 0
library/Zend/Measure/Number.php

@@ -415,6 +415,12 @@ class Zend_Measure_Number extends Zend_Measure_Abstract
     public function convertTo($type, $round = 0, $locale = null)
     {
         $this->setType($type);
+
+        // Roman numerals do not need a formatting
+        if ($this->getType() === self::ROMAN) {
+            return $this->_value;
+        }
+
         return $this->toString($round, $locale);
     }
 }

+ 40 - 0
tests/Zend/Measure/NumberTest.php

@@ -254,4 +254,44 @@ class Zend_Measure_NumberTest extends PHPUnit_Framework_TestCase
         $value = new Zend_Measure_Number('_X',Zend_Measure_Number::ROMAN, 'en');
         $this->assertEquals('10,000 ⑽', $value->convertTo(Zend_Measure_Number::DECIMAL));
     }
+
+    /**
+     * @dataProvider providerConvertingDecimalToRoman
+     * @group GH-536
+     */
+    public function testConvertingDecimalToRoman($decimal, $roman)
+    {
+        $number = new Zend_Measure_Number(
+            $decimal,
+            Zend_Measure_Number::DECIMAL,
+            null
+        );
+
+        $this->assertEquals(
+            $roman,
+            $number->convertTo(Zend_Measure_Number::ROMAN)
+        );
+    }
+
+    /**
+     * Data provider for testConvertingDecimalToRoman
+     * @group GH-536
+     * @return array
+     */
+    public function providerConvertingDecimalToRoman()
+    {
+        return array(
+            array(10, 'X'),
+            array(11, 'XI'),
+            array(12, 'XII'),
+            array(13, 'XIII'),
+            array(14, 'XIV'),
+            array(15, 'XV'),
+            array(16, 'XVI'),
+            array(17, 'XVII'),
+            array(18, 'XVIII'),
+            array(19, 'XIX'),
+            array(20, 'XX'),
+        );
+    }
 }