assertTrue(($expectedMinInclusive <= $decimal) && ($decimal < $expectedMaxExclusive), "Assert $decimal between $expectedMinInclusive and $expectedMaxExclusive"); if (strpos($decimal, '.') === FALSE) { $decimal .= '.'; } list ($before, $after) = explode('.', $decimal); $this->assertTrue(strlen($before) + strlen($after) <= $sigFigs, "Assert $decimal [$before;$after] has <= $sigFigs sigFigs"); $this->assertTrue(strlen($after) <= $decFigs, "Assert $decimal [$before;$after] has <= $decFigs decFigs"); } } /** * @return array */ public function truncDecimalCases() { $cases = array(); // array($value, $precision, $expectedValue) $cases[] = array(523, array(1, 0), 5); $cases[] = array(523, array(5, 2), 523); $cases[] = array(523, array(10, 8), 52.3); $cases[] = array(12345, array(3, 3), 0.123); $cases[] = array(0.12345, array(10, 0), 12345); $cases[] = array(-123.45, array(4, 2), -12.34); return $cases; } /** * @param $value * @param $precision * @param $expectedValue * @dataProvider truncDecimalCases */ public function testCreateTruncatedDecimal($value, $precision, $expectedValue) { list ($sigFigs, $decFigs) = $precision; $this->assertEquals($expectedValue, CRM_Utils_Number::createTruncatedDecimal($value, $precision), "assert createTruncatedValue($value, ($sigFigs,$decFigs)) == $expectedValue" ); } }