Revision control

Copy as Markdown

Other Tools

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
/*
* Tests for the formatFileSize method.
*/
var gStringBundle = Services.strings.createBundle(
);
var gMessenger = Cc["@mozilla.org/messenger;1"].createInstance(Ci.nsIMessenger);
function isDigit(c) {
return "0123456789".includes(c);
}
function test_formatFileSize(aArgs) {
const strings = {
b: "byteAbbreviation2",
kb: "kiloByteAbbreviation2",
mb: "megaByteAbbreviation2",
gb: "gigaByteAbbreviation2",
tb: "teraByteAbbreviation2",
pb: "petaByteAbbreviation2",
};
let actual = gMessenger.formatFileSize(aArgs.bytes, aArgs.useKB);
const expected = gStringBundle
.GetStringFromName(strings[aArgs.units])
.replace("%.*f", aArgs.mantissa);
// If the actual string contains a non-numeric character at the position
// where we'd expect a decimal separator, assume it is a localized separator
// and just convert it to a dot for easy comparing.
const separatorPos = aArgs.mantissa.indexOf(".");
if (!isDigit(actual.charAt(separatorPos))) {
actual =
actual.substring(0, separatorPos) + "." + actual.substr(separatorPos + 1);
}
Assert.equal(actual, expected);
}
var test_data = [
{ bytes: 0, useKB: false, mantissa: "0", units: "b" },
{ bytes: 1, useKB: false, mantissa: "1", units: "b" },
{ bytes: 10, useKB: false, mantissa: "10", units: "b" },
{ bytes: 999, useKB: false, mantissa: "999", units: "b" },
{ bytes: 1000, useKB: false, mantissa: "1.0", units: "kb" },
{ bytes: 1024, useKB: false, mantissa: "1.0", units: "kb" },
{ bytes: 10 * 1024, useKB: false, mantissa: "10.0", units: "kb" },
{ bytes: 999 * 1024, useKB: false, mantissa: "999", units: "kb" },
{ bytes: 1000 * 1024, useKB: false, mantissa: "1.0", units: "mb" },
{ bytes: 1024 * 1024, useKB: false, mantissa: "1.0", units: "mb" },
{ bytes: 10 * 1024 * 1024, useKB: false, mantissa: "10.0", units: "mb" },
{ bytes: 999 * 1024 * 1024, useKB: false, mantissa: "999", units: "mb" },
{ bytes: 1000 * 1024 * 1024, useKB: false, mantissa: "1.0", units: "gb" },
{ bytes: 1024 * 1024 * 1024, useKB: false, mantissa: "1.0", units: "gb" },
{
bytes: 10 * 1024 * 1024 * 1024,
useKB: false,
mantissa: "10.0",
units: "gb",
},
{
bytes: 999 * 1024 * 1024 * 1024,
useKB: false,
mantissa: "999",
units: "gb",
},
{
bytes: 1000 * 1024 * 1024 * 1024,
useKB: false,
mantissa: "1.0",
units: "tb",
},
{
bytes: 1024 * 1024 * 1024 * 1024,
useKB: false,
mantissa: "1.0",
units: "tb",
},
{
bytes: 10 * 1024 * 1024 * 1024 * 1024,
useKB: false,
mantissa: "10.0",
units: "tb",
},
{
bytes: 999 * 1024 * 1024 * 1024 * 1024,
useKB: false,
mantissa: "999",
units: "tb",
},
{
bytes: 1000 * 1024 * 1024 * 1024 * 1024,
useKB: false,
mantissa: "1.0",
units: "pb",
},
{
bytes: 1000 * 1024 * 1024 * 1024 * 1024,
useKB: false,
mantissa: "1.0",
units: "pb",
},
{
bytes: 1024 * 1024 * 1024 * 1024 * 1024,
useKB: false,
mantissa: "1.0",
units: "pb",
},
{
bytes: 10 * 1024 * 1024 * 1024 * 1024 * 1024,
useKB: false,
mantissa: "10.0",
units: "pb",
},
{
bytes: 999 * 1024 * 1024 * 1024 * 1024 * 1024,
useKB: false,
mantissa: "999",
units: "pb",
},
{
bytes: 1000 * 1024 * 1024 * 1024 * 1024 * 1024,
useKB: false,
mantissa: "1000",
units: "pb",
},
{ bytes: 0, useKB: true, mantissa: "0", units: "kb" },
{ bytes: 1, useKB: true, mantissa: "0.1", units: "kb" },
{ bytes: 500, useKB: true, mantissa: "0.5", units: "kb" },
{ bytes: 999, useKB: true, mantissa: "1.0", units: "kb" },
];
add_task(function test_format_file_size() {
test_data.map(entry => {
test_formatFileSize(entry);
});
});