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:
@@ -494,7 +494,9 @@ class Result implements IDataSource
|
|||||||
$row[$key] = (string) $value;
|
$row[$key] = (string) $value;
|
||||||
|
|
||||||
} elseif ($type === Type::INTEGER) {
|
} 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) {
|
} elseif ($type === Type::FLOAT) {
|
||||||
$value = ltrim($value, '0');
|
$value = ltrim($value, '0');
|
||||||
|
@@ -129,3 +129,29 @@ test(function () {
|
|||||||
Assert::same(['col' => 1.0], $result->test(['col' => 1.0]));
|
Assert::same(['col' => 1.0], $result->test(['col' => 1.0]));
|
||||||
setlocale(LC_NUMERIC, 'C');
|
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]));
|
||||||
|
});
|
||||||
|
Reference in New Issue
Block a user