/* * Joinery -- Data frames for Java * Copyright (c) 2014, 2015 IBM Corp. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 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 General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package joinery; import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; import java.util.Arrays; import java.util.Collections; import org.junit.Before; import org.junit.Test; public class DataFrameManipulationTest { private DataFrame<Object> df; @Before public final void setUp() { df = new DataFrame<Object>(); } @Test public final void testAdd() { df.add("test"); assertEquals( "size is equal to number of columns", 1, df.size() ); } @Test public final void testAddMultiple() { df.add("one", "two", "three"); assertArrayEquals( new String[] { "one", "two", "three" }, df.columns().toArray() ); } @Test public final void testAddWithRows() { df.add("one"); df.append(Arrays.<Object>asList(1)); df.add("two"); assertArrayEquals( new String[] { "one", "two" }, df.columns().toArray() ); assertArrayEquals( new Object[] { 1, null }, df.toArray() ); } @Test(expected=IllegalArgumentException.class) public final void testAddExisting() { df.add("test") .add("test"); } @Test public final void testDrop() { df.add("test1").add("test2"); final DataFrame<Object> newDf = df.drop("test1"); assertEquals( "original size is equal to number of columns", 2, df.size() ); assertArrayEquals( "original column list is correct", new Object[] { "test1", "test2" }, df.columns().toArray() ); assertEquals( "new size is equal to number of columns", 1, newDf.size() ); assertArrayEquals( "new column list is correct", new Object[] { "test2" }, newDf.columns().toArray() ); } @Test(expected=IllegalArgumentException.class) public final void testDropInvalid() { df.drop("does-not-exist"); } @Test public final void testAppend() { df.add("test").append(Arrays.<Object>asList(1)); assertEquals( "size is equal to number of columns", 1, df.size() ); assertEquals( "length is equal to number of rows", 1, df.length() ); assertArrayEquals( "column values are correct", new Object[] { 1 }, df.col(0).toArray() ); } @Test(expected=IllegalArgumentException.class) public final void testAppendExisting() { df.add("test") .append("one", Collections.emptyList()) .append("one", Collections.emptyList()); } }