/* * Copyright (c) 2007-2010 Concurrent, Inc. All Rights Reserved. * * Project and contact information: http://www.cascading.org/ * * This file is part of the Cascading project. * * Cascading 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. * * Cascading 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 Cascading. If not, see <http://www.gnu.org/licenses/>. */ package cascading.tuple; import cascading.CascadingTestCase; public class TupleFieldsTest extends CascadingTestCase { private Fields fields; private Tuple tuple; public TupleFieldsTest() { super( "tuple fields tests" ); } @Override protected void setUp() throws Exception { super.setUp(); tuple = new Tuple(); tuple.add( "a" ); tuple.add( "b" ); tuple.add( "c" ); tuple.add( "d" ); tuple.add( "d" ); fields = new Fields( "one", "two", "three", "four", "five" ); } public void testHas() { assertEquals( "not equal: tuple.size()", 5, tuple.size() ); assertEquals( "not equal: tuple.get( 0 )", "a", tuple.get( fields, new Fields( "one" ) ).get( 0 ) ); assertEquals( "not equal: tuple.get( 1 )", "b", tuple.get( fields, new Fields( "two" ) ).get( 0 ) ); } public void testGet() { Fields aFields = new Fields( "one" ); Tuple aTuple = tuple.get( fields, aFields ); assertEquals( "not equal: aTuple.size()", 1, aTuple.size() ); assertEquals( "not equal: aTuple.get( 0 )", "a", aTuple.get( 0 ) ); assertEquals( "not equal: tuple.size()", 5, tuple.size() ); assertEquals( "not equal: tuple.get( 0 )", "a", tuple.get( 0 ) ); assertEquals( "not equal: tuple.get( 1 )", "b", tuple.get( 1 ) ); } public void testWildcard() { Fields aFields = Fields.ALL; Tuple aTuple = tuple.get( fields, aFields ); assertEquals( "not equal: aTuple.size()", 5, aTuple.size() ); assertEquals( "not equal: aTuple.get( 0 )", "a", aTuple.get( fields, new Fields( "one" ) ).get( 0 ) ); assertEquals( "not equal: aTuple.get( 1 )", "b", aTuple.get( fields, new Fields( "two" ) ).get( 0 ) ); } public void testRemove() { Fields aFields = new Fields( "one" ); Tuple aTuple = tuple.remove( fields, aFields ); assertEquals( "not equal: aTuple.size()", 1, aTuple.size() ); assertEquals( "not equal: aTuple.get( 0 )", "a", aTuple.get( 0 ) ); fields = fields.subtract( aFields ); assertEquals( "not equal: tuple.size()", 4, tuple.size() ); assertEquals( "not equal: tuple.get( 0 )", "b", tuple.get( fields, new Fields( "two" ) ).get( 0 ) ); assertEquals( "not equal: tuple.get( 1 )", "c", tuple.get( fields, new Fields( "three" ) ).get( 0 ) ); } public void testPut() { Fields aFields = new Fields( "one", "five" ); tuple.put( fields, aFields, new Tuple( "ten", "eleven" ) ); assertEquals( "not equal: tuple.size()", 5, tuple.size() ); assertEquals( "not equal: tuple.get( 0 )", "ten", tuple.get( 0 ) ); assertEquals( "not equal: tuple.get( 0 )", "ten", tuple.get( fields, new Fields( "one" ) ).get( 0 ) ); assertEquals( "not equal: tuple.get( 0 )", "eleven", tuple.get( 4 ) ); assertEquals( "not equal: tuple.get( 0 )", "eleven", tuple.get( fields, new Fields( "five" ) ).get( 0 ) ); } public void testSelectComplex() { Tuple tuple = new Tuple( "movie", "name1", "movie1", "rate1", "name2", "movie2", "rate2" ); Fields declarationA = new Fields( "movie", "name1", "movie1", "rate1", "name2", "movie2", "rate2" ); Fields selectA = new Fields( "movie", "name1", "rate1", "name2", "rate2" ); Tuple result = tuple.get( declarationA, selectA ); assertEquals( "not equal: ", 5, result.size() ); assertEquals( "not equal: ", "movie", result.get( 0 ) ); assertEquals( "not equal: ", "name1", result.get( 1 ) ); assertEquals( "not equal: ", "rate1", result.get( 2 ) ); assertEquals( "not equal: ", "name2", result.get( 3 ) ); assertEquals( "not equal: ", "rate2", result.get( 4 ) ); } }