/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jena.tdb.lib; import static org.apache.jena.atlas.lib.tuple.TupleFactory.* ; import org.apache.jena.atlas.junit.BaseTest ; import org.apache.jena.atlas.lib.tuple.Tuple ; import org.apache.jena.tdb.lib.ColumnMap ; import org.junit.Test ; public class TestColumnMap extends BaseTest { @Test public void remap1() { ColumnMap x = new ColumnMap("SPO->POS", 2,0,1) ; // S->2 etc Integer[] array = {0,1,2 } ; assertEquals(Integer.valueOf(2), x.mapSlot(0, array) ) ; assertEquals(Integer.valueOf(0), x.mapSlot(1, array) ) ; assertEquals(Integer.valueOf(1), x.mapSlot(2, array) ) ; } @Test public void remap2() { ColumnMap x = new ColumnMap("SPO->POS", 2,0,1) ; Integer[] array = { 0,1,2 } ; assertEquals(Integer.valueOf(1), x.fetchSlot(0, array)) ; // The index 1 comes from position 0. assertEquals(Integer.valueOf(2), x.fetchSlot(1, array)) ; assertEquals(Integer.valueOf(0), x.fetchSlot(2, array)) ; } @Test public void remap3() { ColumnMap x = new ColumnMap("POS", 2,0,1) ; Tuple<String> tuple = tuple("S", "P", "O") ; Tuple<String> mapped = x.map(tuple) ; Tuple<String> expected = tuple("P", "O", "S") ; assertEquals(expected, mapped) ; } @Test public void remap4() { ColumnMap x = new ColumnMap("POS", 2,0,1) ; Tuple<String> tuple = tuple("S", "P", "O") ; Tuple<String> tuple2 = x.map(tuple) ; tuple2 = x.unmap(tuple2) ; assertEquals(tuple, tuple2) ; } @Test public void compile1() { int[] x = ColumnMap.compileMapping("SPO", "POS") ; // SPO -> POS so col 0 goes to col 2, col 1 goes to col 0 and col 2 goes to col 1 int[] expected = { 2,0,1 } ; assertArrayEquals(expected, x) ; } @Test public void compile2() { int[] x = ColumnMap.compileMapping("SPOG", "GOPS") ; int[] expected = { 3, 2, 1, 0 } ; assertArrayEquals(expected, x) ; } @Test public void map1() { ColumnMap cmap = new ColumnMap("GSPO", "OSPG") ; Tuple<String> tuple = tuple("G", "S", "P", "O") ; Tuple<String> mapped = cmap.map(tuple) ; Tuple<String> expected = tuple("O", "S", "P", "G") ; assertEquals(expected, mapped) ; Tuple<String> unmapped = cmap.unmap(mapped) ; assertEquals(tuple("G", "S", "P", "O"), unmapped) ; } @Test public void map2() { String[] x = { "G", "S", "P", "O" } ; String[] y = { "O", "S", "P", "G" } ; ColumnMap cmap = new ColumnMap("Test", x, y) ; Tuple<String> tuple = tuple(x) ; Tuple<String> mapped = cmap.map(tuple) ; Tuple<String> expected = tuple(y) ; assertEquals(expected, mapped) ; Tuple<String> unmapped = cmap.unmap(mapped) ; assertEquals(tuple(x), unmapped) ; } }