1e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov/******************************************************************************* 2398ee59bebad6835dab57b60157eff16d511709eMarc R. Hoffmann * Copyright (c) 2009, 2015 Mountainminds GmbH & Co. KG and Contributors 3e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov * All rights reserved. This program and the accompanying materials 4e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov * are made available under the terms of the Eclipse Public License v1.0 5e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov * which accompanies this distribution, and is available at 6e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov * http://www.eclipse.org/legal/epl-v10.html 7e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov * 8e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov * Contributors: 9e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov * Marc R. Hoffmann - initial API and implementation 10e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov * 11e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov *******************************************************************************/ 12e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikovpackage org.jacoco.core.internal.data; 13e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov 14e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikovimport static org.junit.Assert.assertEquals; 15e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov 16e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikovimport java.io.IOException; 17e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikovimport java.io.PipedInputStream; 18e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikovimport java.io.PipedOutputStream; 19e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov 20e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikovimport org.junit.Before; 21e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikovimport org.junit.Test; 22e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov 23e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov/** 24e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov * Unit tests for {@link CompactDataInput} and {@link CompactDataOutput}. The 25e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov * tests don't care about the written binary format, they just verify symmetry. 26e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov */ 27e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikovpublic class CompactDataInputOutputTest { 28e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov 29e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov private CompactDataOutput out; 30e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov 31e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov private CompactDataInput in; 32e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov 33e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov @Before 34e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov public void setup() throws IOException { 35e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov PipedOutputStream pipe = new PipedOutputStream(); 36e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov out = new CompactDataOutput(pipe); 37e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov in = new CompactDataInput(new PipedInputStream(pipe)); 38e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov } 39e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov 40e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov @Test 41e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov public void testVarInt0x00000000() throws IOException { 42e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov testVarInt(0x00000000); 43e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov } 44e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov 45e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov @Test 46e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov public void testVarInt0x0000007F() throws IOException { 47e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov testVarInt(0x0000007F); 48e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov } 49e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov 50e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov @Test 51e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov public void testVarInt0x00000080() throws IOException { 52e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov testVarInt(0x00000080); 53e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov } 54e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov 55e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov @Test 56e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov public void testVarInt0x00000100() throws IOException { 57e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov testVarInt(0x00000100); 58e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov } 59e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov 60e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov @Test 61e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov public void testVarInt0x12345678() throws IOException { 62e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov testVarInt(0x12345678); 63e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov } 64e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov 65e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov @Test 66e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov public void testVarIntMinus1() throws IOException { 67e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov testVarInt(-1); 68e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov } 69e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov 70e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov @Test 71e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov public void testVarIntMinValue() throws IOException { 72e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov testVarInt(Integer.MIN_VALUE); 73e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov } 74e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov 75e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov @Test 76e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov public void testVarIntMaxValue() throws IOException { 77e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov testVarInt(Integer.MAX_VALUE); 78e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov } 79e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov 80e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov private void testVarInt(int value) throws IOException { 81e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov out.writeVarInt(value); 82e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov out.close(); 83e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov assertEquals(Long.valueOf(value), Long.valueOf(in.readVarInt())); 84e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov assertEquals(Integer.valueOf(-1), Integer.valueOf(in.read())); 85e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov } 86e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov 87e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov @Test 88e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov public void testPackedBooleanEmpty() throws IOException { 89e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov testPackedBoolean(); 90e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov } 91e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov 92e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov @Test 93e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov public void testPackedBoolean3() throws IOException { 94e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov testPackedBoolean(false, false, true); 95e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov } 96e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov 97e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov @Test 98e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov public void testPackedBoolean8() throws IOException { 99e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov testPackedBoolean(true, false, true, false, false, true, false, true); 100e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov } 101e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov 102e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov @Test 103e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov public void testPackedBoolean9() throws IOException { 104e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov testPackedBoolean(true, true, false, true, false, false, true, false, 105e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov true); 106e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov } 107e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov 108e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov private void testPackedBoolean(boolean... values) throws IOException { 109e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov out.writeBooleanArray(values); 110e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov out.close(); 111e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov final boolean[] actual = in.readBooleanArray(); 112e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov for (int i = 0; i < values.length; i++) { 113e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov assertEquals("Index " + i, Boolean.valueOf(values[i]), 114e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov Boolean.valueOf(actual[i])); 115e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov } 116e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov } 117e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov 118e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov} 119