1
0
mirror of https://github.com/dg/dibi.git synced 2025-08-04 21:28:02 +02:00

Result: improved normalization of type INT

This commit is contained in:
David Grudl
2015-10-13 14:13:29 +02:00
parent 407a6f7550
commit c0416bf176
2 changed files with 29 additions and 1 deletions

View File

@@ -494,7 +494,9 @@ class Result implements IDataSource
$row[$key] = (string) $value;
} elseif ($type === Type::INTEGER) {
$row[$key] = is_float($tmp = $value * 1) ? $value : $tmp;
$row[$key] = is_float($tmp = $value * 1)
? (is_string($value) ? $value : (int) $value)
: $tmp;
} elseif ($type === Type::FLOAT) {
$value = ltrim($value, '0');

View File

@@ -129,3 +129,29 @@ test(function () {
Assert::same(['col' => 1.0], $result->test(['col' => 1.0]));
setlocale(LC_NUMERIC, 'C');
});
test(function () {
$result = new MockResult;
$result->setType('col', Type::INTEGER);
Assert::same(['col' => NULL], $result->test(['col' => NULL]));
Assert::same(['col' => 1], $result->test(['col' => TRUE]));
Assert::same(['col' => 0], $result->test(['col' => FALSE]));
Assert::same(['col' => 0], $result->test(['col' => '']));
Assert::same(['col' => 0], $result->test(['col' => '0']));
Assert::same(['col' => 1], $result->test(['col' => '1']));
Assert::same(['col' => 10], $result->test(['col' => '10']));
Assert::same(['col' => 11], $result->test(['col' => '11']));
Assert::same(['col' => 10], $result->test(['col' => '0010']));
Assert::same(['col' => 11], $result->test(['col' => '0011']));
Assert::same(['col' => '0.00000000000000000001'], $result->test(['col' => '0.00000000000000000001']));
Assert::same(['col' => '12345678901234567890'], $result->test(['col' => '12345678901234567890']));
Assert::same(['col' => '012345678901234567890'], $result->test(['col' => '012345678901234567890']));
Assert::same(['col' => 0], $result->test(['col' => 0]));
Assert::same(['col' => 0], $result->test(['col' => 0.0]));
Assert::same(['col' => 1], $result->test(['col' => 1]));
Assert::same(['col' => 1], $result->test(['col' => 1.0]));
});