From 3297ac3a62e4e31990e6a0c548f2b6d5f98c3c79 Mon Sep 17 00:00:00 2001
From: Cristiano Magro <cristiano.magro@vola.it>
Date: Wed, 03 Jan 2018 17:40:39 +0100
Subject: [PATCH] Fixup conversione stringe to byte
---
src/UploadFile/SetupUpload.class.php | 18 ++++++++++++++++--
tests/SetupUploadTest.php | 21 ++++++++++++++++++++-
2 files changed, 36 insertions(+), 3 deletions(-)
diff --git a/src/UploadFile/SetupUpload.class.php b/src/UploadFile/SetupUpload.class.php
index 8bd941a..fed2bed 100644
--- a/src/UploadFile/SetupUpload.class.php
+++ b/src/UploadFile/SetupUpload.class.php
@@ -200,15 +200,29 @@
* 1 Mb = 1024^2
*
* @param string $strSize Stringa da convertire
+ * @throws UploadFile_Excs
* @return integer
*/
public static function str2Bytes($strSize) {
+ $Units = array('b' => 0, 'kb' => 1, 'mb' => 2, 'gb' => 3, 'tb' => 4);
+
$strUnit = strtolower($strSize);
$strUnit = preg_replace('/[^a-z]/', '', $strUnit);
+ $strValue = preg_replace('/[^0-9]/', '', $strSize);
+ $value = intval($strValue);
- $value = intval(preg_replace('/[^0-9]/', '', $strSize));
+ //validazione
+ if (strlen(trim($strSize)) === 0) {
+ //una stringa vuota non può essere convertita
+ throw new UploadFile_Exc();
+ } elseif (strlen(trim($strValue)) === 0) {
+ //se non trovo la parte del valore della stringa non posso convertire
+ throw new UploadFile_Exc();
+ } elseif (strlen($strUnit) >= 1 && !array_key_exists($strUnit, $Units)) {
+ //l'unita' non e' nota
+ throw new UploadFile_Exc();
+ }
- $Units = array('b' => 0, 'kb' => 1, 'mb' => 2, 'gb' => 3, 'tb' => 4);
$Exponent = isset($Units[$strUnit]) ? $Units[$strUnit] : 0;
return ($value * pow(1024, $Exponent));
diff --git a/tests/SetupUploadTest.php b/tests/SetupUploadTest.php
index 72d05eb..4792f03 100644
--- a/tests/SetupUploadTest.php
+++ b/tests/SetupUploadTest.php
@@ -60,7 +60,26 @@
$this->assertEquals('0', SetupUpload::str2Bytes('0 mB'));
$this->assertEquals('0', SetupUpload::str2Bytes('0 GB'));
$this->assertEquals('0', SetupUpload::str2Bytes('0 TB'));
- $this->assertEquals('0', SetupUpload::str2Bytes('0 XB'));
+ }
+
+ /**
+ * Conversione di una stringa nel corrispondente valore di byte, stringhe
+ * non convertibili devono andare in errore
+ * @since 0.3.1
+ * @expectedException UploadFile_Exc
+ * @dataProvider getBytesStringNotValid
+ */
+ public function test_str2BytesNonValido($byteString) {
+ SetupUpload::str2Bytes($byteString);
+ }
+
+ public function getBytesStringNotValid() {
+ return array(
+ array(''),
+ array('b'),
+ array('1 k'),
+ array('1 a'),
+ );
}
/**
--
Gitblit v1.8.0