package org.embulk.spi.unit;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
import org.junit.Test;
public class TestByteSize
{
@Test
public void testUnitPatterns()
{
assertByteSize(42L, "42");
assertByteSize(42L, "42B");
assertByteSize(42L*(1L << 10), "42KB");
assertByteSize(42L*(1L << 20), "42MB");
assertByteSize(42L*(1L << 30), "42GB");
assertByteSize(42L*(1L << 40), "42TB");
assertByteSize(42L*(1L << 50), "42PB");
assertByteSize(42L, "42 B");
assertByteSize(42L*(1L << 10), "42 KB");
}
@Test
public void testUnknownUnits()
{
assertInvalidByteSize("42XB");
assertInvalidByteSize("42 XB");
}
@Test
public void testInvalidPatterns()
{
assertInvalidByteSize(" 42");
assertInvalidByteSize("42 B");
assertInvalidByteSize("42 B ");
assertInvalidByteSize("42B ");
assertInvalidByteSize("42 KB");
assertInvalidByteSize("42 KB ");
assertInvalidByteSize("42KB ");
}
@Test
public void testInvalidValues()
{
assertInvalidByteSize("9223372036854775KB");
}
@Test
public void testToString()
{
assertByteSizeString("42B", "42 B");
assertByteSizeString("42KB", "42 KB");
assertByteSizeString("42MB", "42 MB");
assertByteSizeString("42GB", "42 GB");
assertByteSizeString("42TB", "42 TB");
assertByteSizeString("42PB", "42 PB");
assertByteSizeString("42.20KB", "42.2 KB");
assertByteSizeString("42.33KB", "42.33KB");
}
private static void assertByteSize(long bytes, String string)
{
assertEquals(bytes, ByteSize.parseByteSize(string).getBytes());
}
private static void assertByteSizeString(String expected, String string)
{
assertEquals(expected, ByteSize.parseByteSize(string).toString());
}
private static void assertInvalidByteSize(String string)
{
try {
ByteSize.parseByteSize(string);
fail();
} catch (IllegalArgumentException ex) {
}
}
}