/* * Copyright Terracotta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.ehcache.config.units; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.greaterThan; import static org.hamcrest.Matchers.is; import static org.hamcrest.number.OrderingComparison.lessThan; import org.junit.Test; /** * * @author cdennis */ public class MemoryUnitTest { @Test public void testBasicPositiveConversions() { assertThat(MemoryUnit.B.toBytes(1L), is(1L)); assertThat(MemoryUnit.KB.toBytes(1L), is(1024L)); assertThat(MemoryUnit.MB.toBytes(1L), is(1024L * 1024L)); assertThat(MemoryUnit.GB.toBytes(1L), is(1024L * 1024L * 1024L)); assertThat(MemoryUnit.TB.toBytes(1L), is(1024L * 1024L * 1024L * 1024L)); assertThat(MemoryUnit.PB.toBytes(1L), is(1024L * 1024L * 1024L * 1024L * 1024L)); assertThat(MemoryUnit.B.convert(1L, MemoryUnit.B), is(1L)); assertThat(MemoryUnit.KB.convert(1L, MemoryUnit.B), is(0L)); assertThat(MemoryUnit.MB.convert(1L, MemoryUnit.B), is(0L)); assertThat(MemoryUnit.GB.convert(1L, MemoryUnit.B), is(0L)); assertThat(MemoryUnit.TB.convert(1L, MemoryUnit.B), is(0L)); assertThat(MemoryUnit.PB.convert(1L, MemoryUnit.B), is(0L)); assertThat(MemoryUnit.B.convert(1L, MemoryUnit.KB), is(1024L)); assertThat(MemoryUnit.KB.convert(1L, MemoryUnit.KB), is(1L)); assertThat(MemoryUnit.MB.convert(1L, MemoryUnit.KB), is(0L)); assertThat(MemoryUnit.GB.convert(1L, MemoryUnit.KB), is(0L)); assertThat(MemoryUnit.TB.convert(1L, MemoryUnit.KB), is(0L)); assertThat(MemoryUnit.PB.convert(1L, MemoryUnit.KB), is(0L)); assertThat(MemoryUnit.B.convert(1L, MemoryUnit.MB), is(1024L * 1024L)); assertThat(MemoryUnit.KB.convert(1L, MemoryUnit.MB), is(1024L)); assertThat(MemoryUnit.MB.convert(1L, MemoryUnit.MB), is(1L)); assertThat(MemoryUnit.GB.convert(1L, MemoryUnit.MB), is(0L)); assertThat(MemoryUnit.TB.convert(1L, MemoryUnit.MB), is(0L)); assertThat(MemoryUnit.PB.convert(1L, MemoryUnit.MB), is(0L)); assertThat(MemoryUnit.B.convert(1L, MemoryUnit.GB), is(1024L * 1024L * 1024L)); assertThat(MemoryUnit.KB.convert(1L, MemoryUnit.GB), is(1024L * 1024L)); assertThat(MemoryUnit.MB.convert(1L, MemoryUnit.GB), is(1024L)); assertThat(MemoryUnit.GB.convert(1L, MemoryUnit.GB), is(1L)); assertThat(MemoryUnit.TB.convert(1L, MemoryUnit.GB), is(0L)); assertThat(MemoryUnit.PB.convert(1L, MemoryUnit.GB), is(0L)); assertThat(MemoryUnit.B.convert(1L, MemoryUnit.TB), is(1024L * 1024L * 1024L * 1024L)); assertThat(MemoryUnit.KB.convert(1L, MemoryUnit.TB), is(1024L * 1024L * 1024L)); assertThat(MemoryUnit.MB.convert(1L, MemoryUnit.TB), is(1024L * 1024L)); assertThat(MemoryUnit.GB.convert(1L, MemoryUnit.TB), is(1024L)); assertThat(MemoryUnit.TB.convert(1L, MemoryUnit.TB), is(1L)); assertThat(MemoryUnit.PB.convert(1L, MemoryUnit.TB), is(0L)); assertThat(MemoryUnit.B.convert(1L, MemoryUnit.PB), is(1024L * 1024L * 1024L * 1024L * 1024L)); assertThat(MemoryUnit.KB.convert(1L, MemoryUnit.PB), is(1024L * 1024L * 1024L * 1024L)); assertThat(MemoryUnit.MB.convert(1L, MemoryUnit.PB), is(1024L * 1024L * 1024L)); assertThat(MemoryUnit.GB.convert(1L, MemoryUnit.PB), is(1024L * 1024L)); assertThat(MemoryUnit.TB.convert(1L, MemoryUnit.PB), is(1024L)); assertThat(MemoryUnit.PB.convert(1L, MemoryUnit.PB), is(1L)); } @Test public void testBasicNegativeConversions() { assertThat(MemoryUnit.B.toBytes(-1L), is(-1L)); assertThat(MemoryUnit.KB.toBytes(-1L), is(-1024L)); assertThat(MemoryUnit.MB.toBytes(-1L), is(-1024L * 1024L)); assertThat(MemoryUnit.GB.toBytes(-1L), is(-1024L * 1024L * 1024L)); assertThat(MemoryUnit.TB.toBytes(-1L), is(-1024L * 1024L * 1024L * 1024L)); assertThat(MemoryUnit.PB.toBytes(-1L), is(-1024L * 1024L * 1024L * 1024L * 1024L)); assertThat(MemoryUnit.B.convert(-1L, MemoryUnit.B), is(-1L)); assertThat(MemoryUnit.KB.convert(-1L, MemoryUnit.B), is(0L)); assertThat(MemoryUnit.MB.convert(-1L, MemoryUnit.B), is(0L)); assertThat(MemoryUnit.GB.convert(-1L, MemoryUnit.B), is(0L)); assertThat(MemoryUnit.TB.convert(-1L, MemoryUnit.B), is(0L)); assertThat(MemoryUnit.PB.convert(-1L, MemoryUnit.B), is(0L)); assertThat(MemoryUnit.B.convert(-1L, MemoryUnit.KB), is(-1024L)); assertThat(MemoryUnit.KB.convert(-1L, MemoryUnit.KB), is(-1L)); assertThat(MemoryUnit.MB.convert(-1L, MemoryUnit.KB), is(0L)); assertThat(MemoryUnit.GB.convert(-1L, MemoryUnit.KB), is(0L)); assertThat(MemoryUnit.TB.convert(-1L, MemoryUnit.KB), is(0L)); assertThat(MemoryUnit.PB.convert(-1L, MemoryUnit.KB), is(0L)); assertThat(MemoryUnit.B.convert(-1L, MemoryUnit.MB), is(-1024L * 1024L)); assertThat(MemoryUnit.KB.convert(-1L, MemoryUnit.MB), is(-1024L)); assertThat(MemoryUnit.MB.convert(-1L, MemoryUnit.MB), is(-1L)); assertThat(MemoryUnit.GB.convert(-1L, MemoryUnit.MB), is(0L)); assertThat(MemoryUnit.TB.convert(-1L, MemoryUnit.MB), is(0L)); assertThat(MemoryUnit.PB.convert(-1L, MemoryUnit.MB), is(0L)); assertThat(MemoryUnit.B.convert(-1L, MemoryUnit.GB), is(-1024L * 1024L * 1024L)); assertThat(MemoryUnit.KB.convert(-1L, MemoryUnit.GB), is(-1024L * 1024L)); assertThat(MemoryUnit.MB.convert(-1L, MemoryUnit.GB), is(-1024L)); assertThat(MemoryUnit.GB.convert(-1L, MemoryUnit.GB), is(-1L)); assertThat(MemoryUnit.TB.convert(-1L, MemoryUnit.GB), is(0L)); assertThat(MemoryUnit.PB.convert(-1L, MemoryUnit.GB), is(0L)); assertThat(MemoryUnit.B.convert(-1L, MemoryUnit.TB), is(-1024L * 1024L * 1024L * 1024L)); assertThat(MemoryUnit.KB.convert(-1L, MemoryUnit.TB), is(-1024L * 1024L * 1024L)); assertThat(MemoryUnit.MB.convert(-1L, MemoryUnit.TB), is(-1024L * 1024L)); assertThat(MemoryUnit.GB.convert(-1L, MemoryUnit.TB), is(-1024L)); assertThat(MemoryUnit.TB.convert(-1L, MemoryUnit.TB), is(-1L)); assertThat(MemoryUnit.PB.convert(-1L, MemoryUnit.TB), is(0L)); assertThat(MemoryUnit.B.convert(-1L, MemoryUnit.PB), is(-1024L * 1024L * 1024L * 1024L * 1024L)); assertThat(MemoryUnit.KB.convert(-1L, MemoryUnit.PB), is(-1024L * 1024L * 1024L * 1024L)); assertThat(MemoryUnit.MB.convert(-1L, MemoryUnit.PB), is(-1024L * 1024L * 1024L)); assertThat(MemoryUnit.GB.convert(-1L, MemoryUnit.PB), is(-1024L * 1024L)); assertThat(MemoryUnit.TB.convert(-1L, MemoryUnit.PB), is(-1024L)); assertThat(MemoryUnit.PB.convert(-1L, MemoryUnit.PB), is(-1L)); } @Test public void testPositiveThresholdConditions() { assertThat(MemoryUnit.KB.convert(1024L - 1, MemoryUnit.B), is(0L)); assertThat(MemoryUnit.KB.convert(1024L + 1, MemoryUnit.B), is(1L)); assertThat(MemoryUnit.MB.convert((1024L * 1024L) - 1, MemoryUnit.B), is(0L)); assertThat(MemoryUnit.MB.convert((1024L * 1024L) + 1, MemoryUnit.B), is(1L)); assertThat(MemoryUnit.GB.convert((1024L * 1024L * 1024L) - 1, MemoryUnit.B), is(0L)); assertThat(MemoryUnit.GB.convert((1024L * 1024L * 1024L) + 1, MemoryUnit.B), is(1L)); assertThat(MemoryUnit.TB.convert((1024L * 1024L * 1024L * 1024L) - 1, MemoryUnit.B), is(0L)); assertThat(MemoryUnit.TB.convert((1024L * 1024L * 1024L * 1024L) + 1, MemoryUnit.B), is(1L)); assertThat(MemoryUnit.PB.convert((1024L * 1024L * 1024L * 1024L * 1024L) - 1, MemoryUnit.B), is(0L)); assertThat(MemoryUnit.PB.convert((1024L * 1024L * 1024L * 1024L * 1024L) + 1, MemoryUnit.B), is(1L)); assertThat(MemoryUnit.MB.convert(1024L - 1, MemoryUnit.KB), is(0L)); assertThat(MemoryUnit.MB.convert(1024L + 1, MemoryUnit.KB), is(1L)); assertThat(MemoryUnit.GB.convert((1024L * 1024L) - 1, MemoryUnit.KB), is(0L)); assertThat(MemoryUnit.GB.convert((1024L * 1024L) + 1, MemoryUnit.KB), is(1L)); assertThat(MemoryUnit.TB.convert((1024L * 1024L * 1024L) - 1, MemoryUnit.KB), is(0L)); assertThat(MemoryUnit.TB.convert((1024L * 1024L * 1024L) + 1, MemoryUnit.KB), is(1L)); assertThat(MemoryUnit.PB.convert((1024L * 1024L * 1024L * 1024L) - 1, MemoryUnit.KB), is(0L)); assertThat(MemoryUnit.PB.convert((1024L * 1024L * 1024L * 1024L) + 1, MemoryUnit.KB), is(1L)); assertThat(MemoryUnit.GB.convert(1024L - 1, MemoryUnit.MB), is(0L)); assertThat(MemoryUnit.GB.convert(1024L + 1, MemoryUnit.MB), is(1L)); assertThat(MemoryUnit.TB.convert((1024L * 1024L) - 1, MemoryUnit.MB), is(0L)); assertThat(MemoryUnit.TB.convert((1024L * 1024L) + 1, MemoryUnit.MB), is(1L)); assertThat(MemoryUnit.PB.convert((1024L * 1024L * 1024L) - 1, MemoryUnit.MB), is(0L)); assertThat(MemoryUnit.PB.convert((1024L * 1024L * 1024L) + 1, MemoryUnit.MB), is(1L)); assertThat(MemoryUnit.TB.convert(1024L - 1, MemoryUnit.GB), is(0L)); assertThat(MemoryUnit.TB.convert(1024L + 1, MemoryUnit.GB), is(1L)); assertThat(MemoryUnit.PB.convert((1024L * 1024L) - 1, MemoryUnit.GB), is(0L)); assertThat(MemoryUnit.PB.convert((1024L * 1024L) + 1, MemoryUnit.GB), is(1L)); assertThat(MemoryUnit.PB.convert(1024L - 1, MemoryUnit.TB), is(0L)); assertThat(MemoryUnit.PB.convert(1024L + 1, MemoryUnit.TB), is(1L)); } @Test public void testNegativeThresholdConditions() { assertThat(MemoryUnit.KB.convert(-1024L + 1, MemoryUnit.B), is(0L)); assertThat(MemoryUnit.KB.convert(-1024L - 1, MemoryUnit.B), is(-1L)); assertThat(MemoryUnit.MB.convert(-(1024L * 1024L) + 1, MemoryUnit.B), is(0L)); assertThat(MemoryUnit.MB.convert(-(1024L * 1024L) - 1, MemoryUnit.B), is(-1L)); assertThat(MemoryUnit.GB.convert(-(1024L * 1024L * 1024L) + 1, MemoryUnit.B), is(0L)); assertThat(MemoryUnit.GB.convert(-(1024L * 1024L * 1024L) - 1, MemoryUnit.B), is(-1L)); assertThat(MemoryUnit.TB.convert(-(1024L * 1024L * 1024L * 1024L) + 1, MemoryUnit.B), is(0L)); assertThat(MemoryUnit.TB.convert(-(1024L * 1024L * 1024L * 1024L) - 1, MemoryUnit.B), is(-1L)); assertThat(MemoryUnit.PB.convert(-(1024L * 1024L * 1024L * 1024L * 1024L) + 1, MemoryUnit.B), is(0L)); assertThat(MemoryUnit.PB.convert(-(1024L * 1024L * 1024L * 1024L * 1024L) - 1, MemoryUnit.B), is(-1L)); assertThat(MemoryUnit.MB.convert(-1024L + 1, MemoryUnit.KB), is(0L)); assertThat(MemoryUnit.MB.convert(-1024L - 1, MemoryUnit.KB), is(-1L)); assertThat(MemoryUnit.GB.convert(-(1024L * 1024L) + 1, MemoryUnit.KB), is(0L)); assertThat(MemoryUnit.GB.convert(-(1024L * 1024L) - 1, MemoryUnit.KB), is(-1L)); assertThat(MemoryUnit.TB.convert(-(1024L * 1024L * 1024L) + 1, MemoryUnit.KB), is(0L)); assertThat(MemoryUnit.TB.convert(-(1024L * 1024L * 1024L) - 1, MemoryUnit.KB), is(-1L)); assertThat(MemoryUnit.PB.convert(-(1024L * 1024L * 1024L * 1024L) + 1, MemoryUnit.KB), is(0L)); assertThat(MemoryUnit.PB.convert(-(1024L * 1024L * 1024L * 1024L) - 1, MemoryUnit.KB), is(-1L)); assertThat(MemoryUnit.GB.convert(-1024L + 1, MemoryUnit.MB), is(0L)); assertThat(MemoryUnit.GB.convert(-1024L - 1, MemoryUnit.MB), is(-1L)); assertThat(MemoryUnit.TB.convert(-(1024L * 1024L) + 1, MemoryUnit.MB), is(0L)); assertThat(MemoryUnit.TB.convert(-(1024L * 1024L) - 1, MemoryUnit.MB), is(-1L)); assertThat(MemoryUnit.PB.convert(-(1024L * 1024L * 1024L) + 1, MemoryUnit.MB), is(0L)); assertThat(MemoryUnit.PB.convert(-(1024L * 1024L * 1024L) - 1, MemoryUnit.MB), is(-1L)); assertThat(MemoryUnit.TB.convert(-1024L + 1, MemoryUnit.GB), is(0L)); assertThat(MemoryUnit.TB.convert(-1024L - 1, MemoryUnit.GB), is(-1L)); assertThat(MemoryUnit.PB.convert(-(1024L * 1024L) + 1, MemoryUnit.GB), is(0L)); assertThat(MemoryUnit.PB.convert(-(1024L * 1024L) - 1, MemoryUnit.GB), is(-1L)); assertThat(MemoryUnit.PB.convert(-1024L + 1, MemoryUnit.TB), is(0L)); assertThat(MemoryUnit.PB.convert(-1024L - 1, MemoryUnit.TB), is(-1L)); } @Test public void testThresholdComparisons() { assertThat(MemoryUnit.KB.compareTo(1, 1024L - 1, MemoryUnit.B), greaterThan(0)); assertThat(MemoryUnit.KB.compareTo(1, 1024L, MemoryUnit.B), is(0)); assertThat(MemoryUnit.KB.compareTo(1, 1024L + 1, MemoryUnit.B), lessThan(0)); assertThat(MemoryUnit.KB.compareTo(2, 2048L - 1, MemoryUnit.B), greaterThan(0)); assertThat(MemoryUnit.KB.compareTo(2, 2048L, MemoryUnit.B), is(0)); assertThat(MemoryUnit.KB.compareTo(2, 2048L + 1, MemoryUnit.B), lessThan(0)); } }