From e01f6bdd9010a2fb5a52bd87196a24baa01d7c92 Mon Sep 17 00:00:00 2001
From: Cristiano Magro <cristiano.magro@vola.it>
Date: Fri, 22 Dec 2017 19:06:59 +0100
Subject: [PATCH] Introduco metodo per convertire stringa in bytes

---
 src/UploadFile/SetupUpload.class.php |   21 ++++++++++
 tests/SetupUploadTest.php            |   47 +++++++++++++++++++++++
 tests/phpunit.xml                    |    8 ++++
 tests/bootstrap.php                  |    7 +++
 README.md                            |    6 +++
 5 files changed, 89 insertions(+), 0 deletions(-)

diff --git a/README.md b/README.md
new file mode 100644
index 0000000..72105f0
--- /dev/null
+++ b/README.md
@@ -0,0 +1,6 @@
+Classi per gestire la configurazione dell'upload dei file.
+
+#test
+$cd tests
+$ phpunit.phar -c phpunit.xml
+
diff --git a/src/UploadFile/SetupUpload.class.php b/src/UploadFile/SetupUpload.class.php
index 75b32d0..789bf0a 100644
--- a/src/UploadFile/SetupUpload.class.php
+++ b/src/UploadFile/SetupUpload.class.php
@@ -164,4 +164,25 @@
         return json_encode($dati);
     }
 
+
+    /**
+     * Converte una stringa nei corrispondenti bytes.
+     * 
+     * 1 Mb = 1024^2
+     * 
+     * @param string $strSize Stringa da convertire
+     * @return integer
+     */
+    public static function str2Bytes($strSize) {
+        $strUnit = strtolower($strSize);
+        $strUnit = preg_replace('/[^a-z]/', '', $strUnit);
+
+        $value = intval(preg_replace('/[^0-9]/', '', $strSize));
+
+        $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
new file mode 100644
index 0000000..c014a13
--- /dev/null
+++ b/tests/SetupUploadTest.php
@@ -0,0 +1,47 @@
+<?php
+
+
+require 'bootstrap.php';
+
+/**
+ * Description of FbResponseTest
+ *
+ * @author Cristiano Magro
+ */
+class SetupUploadTest extends PHPUnit_Framework_TestCase {
+
+    public static function setUpBeforeClass() {
+
+    }
+
+    public function test_str2Bytes() {
+
+        $this->assertEquals('1', SetupUpload::str2Bytes('1'));
+        $this->assertEquals('1', SetupUpload::str2Bytes('1b'));
+        $this->assertEquals('1', SetupUpload::str2Bytes('1 b'));
+
+        $this->assertEquals('1024', SetupUpload::str2Bytes('1 kb'));
+        $this->assertEquals('1024', SetupUpload::str2Bytes('1 Kb'));
+        $this->assertEquals('1024', SetupUpload::str2Bytes('1 KB'));
+
+
+        $this->assertEquals('1024', SetupUpload::str2Bytes('1 kb'));
+        $this->assertEquals('2048', SetupUpload::str2Bytes('2 Kb'));
+        $this->assertEquals('1024', SetupUpload::str2Bytes('1 KB'));
+        $this->assertEquals('2048', SetupUpload::str2Bytes('2           Kb'));
+
+
+        $this->assertEquals('1048576', SetupUpload::str2Bytes('1 mB'));
+
+
+        $this->assertEquals('0', SetupUpload::str2Bytes('0 B'));
+        $this->assertEquals('0', SetupUpload::str2Bytes('0 kB'));
+        $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'));
+
+
+    }
+
+}
diff --git a/tests/bootstrap.php b/tests/bootstrap.php
new file mode 100644
index 0000000..8ca13f9
--- /dev/null
+++ b/tests/bootstrap.php
@@ -0,0 +1,7 @@
+<?php
+
+require_once __DIR__ . '/../vendor/autoload.php';
+
+$baseDir = str_replace('/tests', '', __DIR__);
+define('APPLICATION_PATH', $baseDir);
+
diff --git a/tests/phpunit.xml b/tests/phpunit.xml
new file mode 100644
index 0000000..4dd54b1
--- /dev/null
+++ b/tests/phpunit.xml
@@ -0,0 +1,8 @@
+<phpunit bootstrap="bootstrap.php"
+         stopOnFailure="true">
+    <testsuites>
+        <testsuite name="FileUpload">
+            <directory>.</directory>
+        </testsuite>
+    </testsuites>
+</phpunit>
\ No newline at end of file

--
Gitblit v1.8.0