package de.axone.data; import static org.testng.Assert.*; import java.util.Map; import org.testng.annotations.Test; import de.axone.data.MapProxy.Mapping; import de.axone.data.tupple.PairMap; import de.axone.data.tupple.TrippleMap; @Test( groups="tools.pairkey" ) public class TrippleMapTest { private enum RowKey{ R1, R2, R3 }; private enum GrpKey{ G1, G2, G3 }; private enum ColKey{ C1, C2 }; public void testGeneration() throws Exception { Object[][] table = new Object[][]{ { null, GrpKey.G1, GrpKey.G1, GrpKey.G2, GrpKey.G3 }, { null, ColKey.C1, ColKey.C2, ColKey.C1, ColKey.C1 }, { RowKey.R1, 1, 2, 3, 4 }, { RowKey.R2, 5, 6, 7, 8 }, { RowKey.R3, 9, 10, 11, 12 } }; TrippleMap<RowKey,GrpKey,ColKey,Integer> map = TrippleMap.buildFromTable( Mapping.tree, table, RowKey.class, GrpKey.class, ColKey.class, Integer.class ); assertEquals( map.get( RowKey.R1, GrpKey.G1, ColKey.C1 ), i( 1 ) ); assertEquals( map.get( RowKey.R2, GrpKey.G1, ColKey.C2 ), i( 6 ) ); assertEquals( map.get( RowKey.R3, GrpKey.G3, ColKey.C1 ), i( 12 ) ); PairMap<GrpKey,ColKey,Integer> row1 = map.getBC( RowKey.R1 ); assertEquals( row1.size(), 4 ); assertEquals( row1.get( GrpKey.G1, ColKey.C1 ), i( 1 ) ); assertEquals( row1.get( GrpKey.G1, ColKey.C2 ), i( 2 ) ); assertEquals( row1.get( GrpKey.G2, ColKey.C1 ), i( 3 ) ); assertEquals( row1.get( GrpKey.G3, ColKey.C1 ), i( 4 ) ); assertFalse( row1.containsKey( GrpKey.G2, ColKey.C2 ) ); assertFalse( row1.containsKey( GrpKey.G3, ColKey.C2 ) ); PairMap<RowKey,ColKey,Integer> grp1 = map.getAC( GrpKey.G1 ); assertEquals( grp1.size(), 6 ); assertEquals( grp1.get( RowKey.R1, ColKey.C1 ), i( 1 ) ); assertEquals( grp1.get( RowKey.R1, ColKey.C2 ), i( 2 ) ); assertEquals( grp1.get( RowKey.R2, ColKey.C1 ), i( 5 ) ); assertEquals( grp1.get( RowKey.R3, ColKey.C1 ), i( 9 ) ); Map<RowKey,Integer> col1 = map.getA( GrpKey.G1, ColKey.C1 ); assertEquals( col1.size(), 3 ); assertEquals( col1.get( RowKey.R1 ), i( 1 ) ); assertEquals( col1.get( RowKey.R2 ), i( 5 ) ); assertEquals( col1.get( RowKey.R3 ), i( 9 ) ); Map<RowKey,Integer> col3 = map.getA( GrpKey.G2, ColKey.C1 ); assertEquals( col3.size(), 3 ); assertEquals( col3.get( RowKey.R1 ), i( 3 ) ); assertEquals( col3.get( RowKey.R2 ), i( 7 ) ); assertEquals( col3.get( RowKey.R3 ), i( 11 ) ); } private static final Integer i( int i ){ return Integer.valueOf( i ); } }