001/*
002 * Licensed to the Apache Software Foundation (ASF) under one
003 * or more contributor license agreements.  See the NOTICE file
004 * distributed with this work for additional information
005 * regarding copyright ownership.  The ASF licenses this file
006 * to you under the Apache License, Version 2.0 (the
007 * "License"); you may not use this file except in compliance
008 * with the License.  You may obtain a copy of the License at
009 *
010 *     http://www.apache.org/licenses/LICENSE-2.0
011 *
012 * Unless required by applicable law or agreed to in writing, software
013 * distributed under the License is distributed on an "AS IS" BASIS,
014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
015 * See the License for the specific language governing permissions and
016 * limitations under the License.
017 */
018package org.apache.hadoop.hbase;
019
020import static org.junit.jupiter.api.Assertions.assertEquals;
021
022import java.util.Set;
023import java.util.TreeSet;
024import org.apache.hadoop.hbase.testclassification.MiscTests;
025import org.apache.hadoop.hbase.testclassification.SmallTests;
026import org.junit.jupiter.api.Tag;
027import org.junit.jupiter.api.Test;
028
029@Tag(MiscTests.TAG)
030@Tag(SmallTests.TAG)
031public class TestSize {
032
033  @Test
034  public void testConversion() {
035    Size kbSize = new Size(1024D, Size.Unit.MEGABYTE);
036    assertEquals(1D, kbSize.get(Size.Unit.GIGABYTE), 0);
037    assertEquals(1024D, kbSize.get(), 0);
038    assertEquals(1024D * 1024D, kbSize.get(Size.Unit.KILOBYTE), 0);
039    assertEquals(1024D * 1024D * 1024D, kbSize.get(Size.Unit.BYTE), 0);
040  }
041
042  @Test
043  public void testCompare() {
044    Size size00 = new Size(100D, Size.Unit.GIGABYTE);
045    Size size01 = new Size(100D, Size.Unit.MEGABYTE);
046    Size size02 = new Size(100D, Size.Unit.BYTE);
047    Set<Size> sizes = new TreeSet<>();
048    sizes.add(size00);
049    sizes.add(size01);
050    sizes.add(size02);
051    int count = 0;
052    for (Size s : sizes) {
053      switch (count++) {
054        case 0:
055          assertEquals(size02, s);
056          break;
057        case 1:
058          assertEquals(size01, s);
059          break;
060        default:
061          assertEquals(size00, s);
062          break;
063      }
064    }
065    assertEquals(3, count);
066  }
067
068  @Test
069  public void testEqual() {
070    assertEquals(new Size(1024D, Size.Unit.TERABYTE), new Size(1D, Size.Unit.PETABYTE));
071    assertEquals(new Size(1024D, Size.Unit.GIGABYTE), new Size(1D, Size.Unit.TERABYTE));
072    assertEquals(new Size(1024D, Size.Unit.MEGABYTE), new Size(1D, Size.Unit.GIGABYTE));
073    assertEquals(new Size(1024D, Size.Unit.KILOBYTE), new Size(1D, Size.Unit.MEGABYTE));
074    assertEquals(new Size(1024D, Size.Unit.BYTE), new Size(1D, Size.Unit.KILOBYTE));
075  }
076
077}