From 5b9ffe14bad79ea25777bd6f27b0d15454c882b6 Mon Sep 17 00:00:00 2001 From: David Grudl Date: Tue, 13 Oct 2015 14:26:41 +0200 Subject: [PATCH] Result: normalize converts FALSE --- dibi/libs/DibiResult.php | 2 +- tests/dibi/DibiResult.normalize.phpt | 58 ++++++++++++++++++++++++++++ 2 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 tests/dibi/DibiResult.normalize.phpt diff --git a/dibi/libs/DibiResult.php b/dibi/libs/DibiResult.php index 5b6a26ca..1a7813dd 100644 --- a/dibi/libs/DibiResult.php +++ b/dibi/libs/DibiResult.php @@ -488,7 +488,7 @@ class DibiResult extends DibiObject implements IDataSource continue; } $value = $row[$key]; - if ($value === FALSE || $type === dibi::TEXT) { + if ($type === dibi::TEXT) { } elseif ($type === dibi::INTEGER) { $row[$key] = is_float($tmp = $value * 1) ? $value : $tmp; diff --git a/tests/dibi/DibiResult.normalize.phpt b/tests/dibi/DibiResult.normalize.phpt new file mode 100644 index 00000000..7c660704 --- /dev/null +++ b/tests/dibi/DibiResult.normalize.phpt @@ -0,0 +1,58 @@ +setAccessible(TRUE); + $normalize->invokeArgs($this, array(& $row)); + return $row; + } +} + + +test(function () { + $result = new MockResult; + $result->setType('col', dibi::BOOL); + + Assert::same(array('col' => NULL), $result->test(array('col' => NULL))); + Assert::same(array('col' => TRUE), $result->test(array('col' => TRUE))); + Assert::same(array('col' => FALSE), $result->test(array('col' => FALSE))); + + Assert::same(array('col' => FALSE), $result->test(array('col' => ''))); + Assert::same(array('col' => FALSE), $result->test(array('col' => '0'))); + Assert::same(array('col' => TRUE), $result->test(array('col' => '1'))); + Assert::same(array('col' => TRUE), $result->test(array('col' => 't'))); + Assert::same(array('col' => FALSE), $result->test(array('col' => 'f'))); + Assert::same(array('col' => TRUE), $result->test(array('col' => 'T'))); + Assert::same(array('col' => FALSE), $result->test(array('col' => 'F'))); + Assert::same(array('col' => FALSE), $result->test(array('col' => 0))); + Assert::same(array('col' => FALSE), $result->test(array('col' => 0.0))); + Assert::same(array('col' => TRUE), $result->test(array('col' => 1))); + Assert::same(array('col' => TRUE), $result->test(array('col' => 1.0))); +}); + + +test(function () { + $result = new MockResult; + $result->setType('col', dibi::TEXT); // means TEXT or UNKNOWN + + Assert::same(array('col' => NULL), $result->test(array('col' => NULL))); + Assert::same(array('col' => TRUE), $result->test(array('col' => TRUE))); + Assert::same(array('col' => FALSE), $result->test(array('col' => FALSE))); + + Assert::same(array('col' => ''), $result->test(array('col' => ''))); + Assert::same(array('col' => '0'), $result->test(array('col' => '0'))); + Assert::same(array('col' => '1'), $result->test(array('col' => '1'))); + Assert::same(array('col' => 0), $result->test(array('col' => 0))); + Assert::same(array('col' => 1), $result->test(array('col' => 1))); +});