ByteSize { public static ByteSize ofBytes(final long bytes) { return new ByteSize(bytes); } private  ByteSize(final String valueAsStr); private  ByteSize(final long bytes); @JsonCreator static ByteSize parse(final String value); static ByteSize ofBytes(final long bytes); static ByteSize ofKibibytes(final long kibibytes); static ByteSize ofMebibytes(final long mebibytes); static ByteSize ofGibibytes(final long gibibytes); static ByteSize ofTebibytes(final long tebibytes); static ByteSize ofPebibytes(final long pebibytes); long getBytes(); @Override String toString(); @JsonValue String getValueAsStr(); @Override boolean equals(final Object o); @Override int hashCode(); static final ByteSize ZERO; }
@Test void ofBytes() { doOfTest(10L, ByteSize::ofBytes, "10B", 1); doOfTest(10L, ByteSize::ofKibibytes, "10K", KI); doOfTest(10L, ByteSize::ofMebibytes, "10M", KI * KI); doOfTest(10L, ByteSize::ofGibibytes, "10G", KI * KI * KI); doOfTest(10L, ByteSize::ofTebibytes, "10T", KI * KI * KI * KI); doOfTest(10L, ByteSize::ofPebibytes, "10P", KI * KI * KI * KI * KI); }
@Test void ofBytes_bad() { Assertions.assertThatThrownBy(() -> { long input = -1; ByteSize.ofBytes(input); }).isInstanceOf(IllegalArgumentException.class); }