// This file is part of OpenTSDB. // Copyright (C) 2010-2014 The OpenTSDB Authors. // // This program is free software: you can redistribute it and/or modify it // under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 2.1 of the License, or (at your // option) any later version. This program is distributed in the hope that it // will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty // of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser // General Public License for more details. You should have received a copy // of the GNU Lesser General Public License along with this program. If not, // see <http://www.gnu.org/licenses/>. package net.opentsdb.utils; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import java.util.ArrayList; import java.util.Collections; import java.util.List; import org.junit.Test; public class TestByteArrayPair { final byte[] key = new byte[] { 1 }; final byte[] val = new byte[] { 2 }; final byte[] val2 = new byte[] { 3 }; final byte[] set1 = new byte[] { 1, 2, 3 }; final byte[] set2 = new byte[] { 1, 2, 4 }; @Test public void defaultCtor() { final ByteArrayPair pair = new ByteArrayPair(key, val); assertNotNull(pair); assertArrayEquals(key, pair.getKey()); assertArrayEquals(val, pair.getValue()); } @Test public void defaultCtorNullKey() { final ByteArrayPair pair = new ByteArrayPair(null, val); assertNotNull(pair); assertNull(pair.getKey()); assertArrayEquals(val, pair.getValue()); } @Test public void defaultCtorNullValue() { final ByteArrayPair pair = new ByteArrayPair(key, null); assertNotNull(pair); assertArrayEquals(key, pair.getKey()); assertNull(pair.getValue()); } @Test public void defaultCtorBothNull() { final ByteArrayPair pair = new ByteArrayPair(null, null); assertNotNull(pair); assertNull(pair.getKey()); assertNull(pair.getValue()); } @Test public void toStringTest() { final ByteArrayPair pair = new ByteArrayPair(key, val); assertEquals("key=[1], value=[2]", pair.toString()); } @Test public void toStringTestNullKey() { final ByteArrayPair pair = new ByteArrayPair(null, val); assertEquals("key=null, value=[2]", pair.toString()); } @Test public void toStringTestNullVal() { final ByteArrayPair pair = new ByteArrayPair(key, null); assertEquals("key=[1], value=null", pair.toString()); } @Test public void toStringTestNulls() { final ByteArrayPair pair = new ByteArrayPair(null, null); assertEquals("key=null, value=null", pair.toString()); } @Test public void equalsTest() { final ByteArrayPair pair = new ByteArrayPair(key, val); final ByteArrayPair pair2 = new ByteArrayPair(key, val); assertTrue(pair.equals(pair2)); } @Test public void equalsTestSets() { final ByteArrayPair pair = new ByteArrayPair(set1, val); final ByteArrayPair pair2 = new ByteArrayPair(set1, val); assertTrue(pair.equals(pair2)); } @Test public void equalsTestSameReference() { final ByteArrayPair pair = new ByteArrayPair(key, val); final ByteArrayPair pair2 = pair; assertTrue(pair.equals(pair2)); } @Test public void equalsTestDiffKey() { final ByteArrayPair pair = new ByteArrayPair(key, val); final ByteArrayPair pair2 = new ByteArrayPair(val, val); assertFalse(pair.equals(pair2)); } @Test public void equalsTestDiffVal() { final ByteArrayPair pair = new ByteArrayPair(key, val); final ByteArrayPair pair2 = new ByteArrayPair(key, key); assertFalse(pair.equals(pair2)); } @Test public void equalsTestDiffKeySets() { final ByteArrayPair pair = new ByteArrayPair(set1, val); final ByteArrayPair pair2 = new ByteArrayPair(set2, key); assertFalse(pair.equals(pair2)); } @Test public void equalsTestDiffValSets() { final ByteArrayPair pair = new ByteArrayPair(key, set1); final ByteArrayPair pair2 = new ByteArrayPair(key, set2); assertFalse(pair.equals(pair2)); } @Test public void equalsTestNullKeys() { final ByteArrayPair pair = new ByteArrayPair(null, val); final ByteArrayPair pair2 = new ByteArrayPair(null, val); assertTrue(pair.equals(pair2)); } @Test public void equalsTestNullValues() { final ByteArrayPair pair = new ByteArrayPair(key, null); final ByteArrayPair pair2 = new ByteArrayPair(key, null); assertTrue(pair.equals(pair2)); } @Test public void equalsTestNulls() { final ByteArrayPair pair = new ByteArrayPair(null, null); final ByteArrayPair pair2 = new ByteArrayPair(null, null); assertTrue(pair.equals(pair2)); } @Test public void sortTest() { List<ByteArrayPair> pairs = new ArrayList<ByteArrayPair>(2); pairs.add(new ByteArrayPair(val, key)); pairs.add(new ByteArrayPair(key, val)); Collections.sort(pairs); assertArrayEquals(key, pairs.get(0).getKey()); assertArrayEquals(val, pairs.get(0).getValue()); assertArrayEquals(val, pairs.get(1).getKey()); assertArrayEquals(key, pairs.get(1).getValue()); } @Test public void sortTestSets() { List<ByteArrayPair> pairs = new ArrayList<ByteArrayPair>(2); pairs.add(new ByteArrayPair(set2, val)); pairs.add(new ByteArrayPair(set1, val)); Collections.sort(pairs); assertArrayEquals(set1, pairs.get(0).getKey()); assertArrayEquals(val, pairs.get(0).getValue()); assertArrayEquals(set2, pairs.get(1).getKey()); assertArrayEquals(val, pairs.get(1).getValue()); } @Test public void sortTestWithNullKey() { List<ByteArrayPair> pairs = new ArrayList<ByteArrayPair>(2); pairs.add(new ByteArrayPair(val, key)); pairs.add(new ByteArrayPair(null, val)); Collections.sort(pairs); assertNull(pairs.get(0).getKey()); assertArrayEquals(val, pairs.get(0).getValue()); assertArrayEquals(val, pairs.get(1).getKey()); assertArrayEquals(key, pairs.get(1).getValue()); } @Test public void sortTestonValue() { List<ByteArrayPair> pairs = new ArrayList<ByteArrayPair>(3); pairs.add(new ByteArrayPair(val, key)); pairs.add(new ByteArrayPair(key, val2)); pairs.add(new ByteArrayPair(key, val)); Collections.sort(pairs); assertArrayEquals(key, pairs.get(0).getKey()); assertArrayEquals(val, pairs.get(0).getValue()); assertArrayEquals(key, pairs.get(1).getKey()); assertArrayEquals(val2, pairs.get(1).getValue()); assertArrayEquals(val, pairs.get(2).getKey()); assertArrayEquals(key, pairs.get(2).getValue()); } }