From 80339aef934e6d187b3cfff2d2c38fb52fcae7c9 Mon Sep 17 00:00:00 2001 From: Aldo Cortesi Date: Fri, 2 Jan 2015 15:29:51 +1300 Subject: Unit test framework for web client-side code - Also make formatSize nicer and test it. Now there's no excuse! ;) --- web/src/js/tests.js | 3 --- web/src/js/tests/utils.js | 15 +++++++++++++++ web/src/js/utils.js | 20 +++++++++++++------- 3 files changed, 28 insertions(+), 10 deletions(-) delete mode 100644 web/src/js/tests.js create mode 100644 web/src/js/tests/utils.js (limited to 'web/src') diff --git a/web/src/js/tests.js b/web/src/js/tests.js deleted file mode 100644 index ede323dc..00000000 --- a/web/src/js/tests.js +++ /dev/null @@ -1,3 +0,0 @@ -QUnit.test("example test", function (assert) { - assert.ok(true); -}); \ No newline at end of file diff --git a/web/src/js/tests/utils.js b/web/src/js/tests/utils.js new file mode 100644 index 00000000..dfbb9ba6 --- /dev/null +++ b/web/src/js/tests/utils.js @@ -0,0 +1,15 @@ +jest.dontMock("jquery"); +jest.dontMock("../utils"); + +describe("utils", function () { + var utils = require("../utils"); + it("formatSize", function(){ + expect(utils.formatSize(1024)).toEqual("1kb"); + expect(utils.formatSize(0)).toEqual("0"); + expect(utils.formatSize(10)).toEqual("10b"); + expect(utils.formatSize(1025)).toEqual("1.0kb"); + expect(utils.formatSize(1024*1024)).toEqual("1mb"); + expect(utils.formatSize(1024*1024+1)).toEqual("1.0mb"); + }); +}); + diff --git a/web/src/js/utils.js b/web/src/js/utils.js index d5093702..21b7a868 100644 --- a/web/src/js/utils.js +++ b/web/src/js/utils.js @@ -23,14 +23,20 @@ for (var i = 65; i <= 90; i++) { var formatSize = function (bytes) { - var size = bytes; - var prefix = ["B", "KB", "MB", "GB", "TB"]; - var i = 0; - while (Math.abs(size) >= 1024 && i < prefix.length - 1) { - i++; - size = size / 1024; + if (bytes === 0) + return "0"; + var prefix = ["b", "kb", "mb", "gb", "tb"]; + for (var i = 0; i < prefix.length; i++){ + if (Math.pow(1024, i + 1) > bytes){ + break; + } } - return (Math.floor(size * 100) / 100.0).toFixed(2) + prefix[i]; + var precision; + if (bytes%Math.pow(1024, i) === 0) + precision = 0; + else + precision = 1; + return (bytes/Math.pow(1024, i)).toFixed(precision) + prefix[i]; }; -- cgit v1.2.3