| /* |
| * 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) ; |
| } |
| |
| } |