/** * Licensed 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. * * Copyright 2012-2016 the original author or authors. */ package org.assertj.db.navigation; import org.assertj.db.api.*; import org.assertj.db.common.AbstractTest; import org.assertj.db.common.NeedReload; import org.assertj.db.exception.AssertJDBException; import org.assertj.db.output.*; import org.assertj.db.type.*; import org.junit.Test; import java.lang.reflect.Field; import java.math.BigDecimal; import java.sql.Date; import java.util.UUID; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.db.api.Assertions.assertThat; import static org.assertj.db.output.Outputs.output; import static org.junit.Assert.fail; /** * Tests on {@link org.assertj.db.navigation.ToColumn} class : * {@link org.assertj.db.navigation.ToColumn#column()} method. * * @author RĂ©gis Pouiller * */ public class ToColumn_Column_Test extends AbstractTest { /** * This method tests the {@code column} navigation method. */ @Test @NeedReload public void test_column_from_change_with_assertions() throws Exception { Changes changes = new Changes(source).setStartPointNow(); updateChangesForTests(); changes.setEndPointNow(); Field fieldPosition = ChangeAssert.class.getDeclaredField("columnPosition"); fieldPosition.setAccessible(true); Field fieldIndex = PositionWithColumnsChange.class.getDeclaredField("nextIndex"); fieldIndex.setAccessible(true); Field fieldColumnName = ChangeColumnAssert.class.getDeclaredField("columnName"); fieldColumnName.setAccessible(true); Field fieldValueAtStartPoint = ChangeColumnAssert.class.getDeclaredField("valueAtStartPoint"); fieldValueAtStartPoint.setAccessible(true); Field fieldValueAtEndPoint = ChangeColumnAssert.class.getDeclaredField("valueAtEndPoint"); fieldValueAtEndPoint.setAccessible(true); ChangesAssert changesAssert = assertThat(changes); ChangeAssert changeAssert = changesAssert.change(); PositionWithColumnsChange position = (PositionWithColumnsChange) fieldPosition.get(changeAssert); assertThat(fieldIndex.get(position)).isEqualTo(0); ChangeColumnAssert changeColumnAssert0 = changeAssert.column(); assertThat(fieldIndex.get(position)).isEqualTo(1); ChangeColumnAssert changeColumnAssert1 = changeAssert.column(); assertThat(fieldIndex.get(position)).isEqualTo(2); ChangeColumnAssert changeColumnAssert2 = changeAssert.column(); assertThat(fieldIndex.get(position)).isEqualTo(3); ChangeColumnAssert changeColumnAssert3 = changeAssert.column(); assertThat(fieldIndex.get(position)).isEqualTo(4); ChangeColumnAssert changeColumnAssert4 = changeAssert.column(); assertThat(fieldIndex.get(position)).isEqualTo(5); try { changeAssert.column(); fail("An exception must be raised"); } catch (AssertJDBException e) { assertThat(e.getMessage()).isEqualTo("Index 5 out of the limits [0, 5["); } ChangesAssert changesAssertBis = assertThat(changes); ChangeAssert changeAssertBis = changesAssertBis.change(); PositionWithColumnsChange positionBis = (PositionWithColumnsChange) fieldPosition.get(changeAssertBis); assertThat(fieldIndex.get(positionBis)).isEqualTo(0); ChangeColumnAssert changeColumnAssertBis0 = changeAssertBis.column(); assertThat(fieldIndex.get(positionBis)).isEqualTo(1); ChangeColumnAssert changeColumnAssertBis1 = changeColumnAssertBis0.column(); assertThat(fieldIndex.get(positionBis)).isEqualTo(2); ChangeColumnAssert changeColumnAssertBis2 = changeColumnAssertBis1.column(); assertThat(fieldIndex.get(positionBis)).isEqualTo(3); ChangeColumnAssert changeColumnAssertBis3 = changeColumnAssertBis2.column(); assertThat(fieldIndex.get(positionBis)).isEqualTo(4); ChangeColumnAssert changeColumnAssertBis4 = changeColumnAssertBis3.column(); assertThat(fieldIndex.get(positionBis)).isEqualTo(5); try { changeColumnAssertBis4.column(); fail("An exception must be raised"); } catch (AssertJDBException e) { assertThat(e.getMessage()).isEqualTo("Index 5 out of the limits [0, 5["); } assertThat(fieldColumnName.get(changeColumnAssert0)).isEqualTo(fieldColumnName.get(changeColumnAssertBis0)).isEqualTo( "ID"); assertThat(fieldColumnName.get(changeColumnAssert1)).isEqualTo(fieldColumnName.get(changeColumnAssertBis1)).isEqualTo( "NAME"); assertThat(fieldColumnName.get(changeColumnAssert2)).isEqualTo(fieldColumnName.get(changeColumnAssertBis2)).isEqualTo( "FIRSTNAME"); assertThat(fieldColumnName.get(changeColumnAssert3)).isEqualTo(fieldColumnName.get(changeColumnAssertBis3)).isEqualTo( "BIRTH"); assertThat(fieldColumnName.get(changeColumnAssert4)).isEqualTo(fieldColumnName.get(changeColumnAssertBis4)).isEqualTo( "ACTOR_IMDB"); assertThat(((Value) fieldValueAtStartPoint.get(changeColumnAssert0)).getValue()).isNull(); assertThat(((Value) fieldValueAtStartPoint.get(changeColumnAssert1)).getValue()).isNull(); assertThat(((Value) fieldValueAtStartPoint.get(changeColumnAssert2)).getValue()).isNull(); assertThat(((Value) fieldValueAtStartPoint.get(changeColumnAssert3)).getValue()).isNull(); assertThat(((Value) fieldValueAtStartPoint.get(changeColumnAssert4)).getValue()).isNull(); assertThat(((Value) fieldValueAtStartPoint.get(changeColumnAssertBis0)).getValue()).isNull(); assertThat(((Value) fieldValueAtStartPoint.get(changeColumnAssertBis1)).getValue()).isNull(); assertThat(((Value) fieldValueAtStartPoint.get(changeColumnAssertBis2)).getValue()).isNull(); assertThat(((Value) fieldValueAtStartPoint.get(changeColumnAssertBis3)).getValue()).isNull(); assertThat(((Value) fieldValueAtStartPoint.get(changeColumnAssertBis4)).getValue()).isNull(); assertThat(((Value) fieldValueAtEndPoint.get(changeColumnAssert0)).getValue()).isEqualTo( ((Value) fieldValueAtEndPoint.get(changeColumnAssertBis0)).getValue()).isEqualTo(new BigDecimal("4")); assertThat(((Value) fieldValueAtEndPoint.get(changeColumnAssert1)).getValue()).isEqualTo( ((Value) fieldValueAtEndPoint.get(changeColumnAssertBis1)).getValue()).isEqualTo("Murray"); assertThat(((Value) fieldValueAtEndPoint.get(changeColumnAssert2)).getValue()).isEqualTo( ((Value) fieldValueAtEndPoint.get(changeColumnAssertBis2)).getValue()).isEqualTo("Bill"); assertThat(((Value) fieldValueAtEndPoint.get(changeColumnAssert3)).getValue()).isEqualTo( ((Value) fieldValueAtEndPoint.get(changeColumnAssertBis3)).getValue()).isEqualTo( Date.valueOf("1950-09-21")); assertThat(((Value) fieldValueAtEndPoint.get(changeColumnAssert4)).getValue()).isEqualTo( ((Value) fieldValueAtEndPoint.get(changeColumnAssertBis4)).getValue()).isEqualTo( UUID.fromString("30B443AE-C0C9-4790-9BEC-CE1380808435")); } /** * This method tests the {@code column} navigation method. */ @Test public void test_column_from_table_with_assertions() throws Exception { Field fieldPosition = AbstractDbAssert.class.getDeclaredField("columnPosition"); fieldPosition.setAccessible(true); Field fieldColumn = AbstractColumnAssert.class.getDeclaredField("column"); fieldColumn.setAccessible(true); Field fieldIndex = Position.class.getDeclaredField("nextIndex"); fieldIndex.setAccessible(true); Table table = new Table(source, "actor"); TableAssert tableAssert = assertThat(table); Position position = (Position) fieldPosition.get(tableAssert); assertThat(fieldIndex.get(position)).isEqualTo(0); TableColumnAssert tableColumnAssert0 = tableAssert.column(); assertThat(fieldIndex.get(position)).isEqualTo(1); TableColumnAssert tableColumnAssert1 = tableAssert.column(); assertThat(fieldIndex.get(position)).isEqualTo(2); TableColumnAssert tableColumnAssert2 = tableAssert.column(); assertThat(fieldIndex.get(position)).isEqualTo(3); TableColumnAssert tableColumnAssert3 = tableAssert.column(); assertThat(fieldIndex.get(position)).isEqualTo(4); TableColumnAssert tableColumnAssert4 = tableAssert.column(); assertThat(fieldIndex.get(position)).isEqualTo(5); try { tableAssert.column(); fail("An exception must be raised"); } catch (AssertJDBException e) { assertThat(e.getMessage()).isEqualTo("Index 5 out of the limits [0, 5["); } TableAssert tableAssertBis = assertThat(table); Position positionBis = (Position) fieldPosition.get(tableAssertBis); assertThat(fieldIndex.get(positionBis)).isEqualTo(0); TableColumnAssert tableColumnAssertBis0 = tableAssertBis.column(); assertThat(fieldIndex.get(positionBis)).isEqualTo(1); TableColumnAssert tableColumnAssertBis1 = tableColumnAssertBis0.column(); assertThat(fieldIndex.get(positionBis)).isEqualTo(2); TableColumnAssert tableColumnAssertBis2 = tableColumnAssertBis1.column(); assertThat(fieldIndex.get(positionBis)).isEqualTo(3); TableColumnAssert tableColumnAssertBis3 = tableColumnAssertBis2.column(); assertThat(fieldIndex.get(positionBis)).isEqualTo(4); TableColumnAssert tableColumnAssertBis4 = tableColumnAssertBis3.column(); assertThat(fieldIndex.get(positionBis)).isEqualTo(5); try { tableColumnAssertBis4.column(); fail("An exception must be raised"); } catch (AssertJDBException e) { assertThat(e.getMessage()).isEqualTo("Index 5 out of the limits [0, 5["); } Column columnId0 = (Column) fieldColumn.get(tableColumnAssert0); Column columnId1 = (Column) fieldColumn.get(tableColumnAssert1); Column columnId2 = (Column) fieldColumn.get(tableColumnAssert2); Column columnId3 = (Column) fieldColumn.get(tableColumnAssert3); Column columnId4 = (Column) fieldColumn.get(tableColumnAssert4); Column columnIdBis0 = (Column) fieldColumn.get(tableColumnAssertBis0); Column columnIdBis1 = (Column) fieldColumn.get(tableColumnAssertBis1); Column columnIdBis2 = (Column) fieldColumn.get(tableColumnAssertBis2); Column columnIdBis3 = (Column) fieldColumn.get(tableColumnAssertBis3); Column columnIdBis4 = (Column) fieldColumn.get(tableColumnAssertBis4); assertThat(columnId0.getName()).isEqualTo(columnIdBis0.getName()).isEqualTo("ID"); assertThat(columnId1.getName()).isEqualTo(columnIdBis1.getName()).isEqualTo("NAME"); assertThat(columnId2.getName()).isEqualTo(columnIdBis2.getName()).isEqualTo("FIRSTNAME"); assertThat(columnId3.getName()).isEqualTo(columnIdBis3.getName()).isEqualTo("BIRTH"); assertThat(columnId4.getName()).isEqualTo(columnIdBis4.getName()).isEqualTo("ACTOR_IMDB"); assertThat(columnId0.getValuesList().get(0).getValue()).isEqualTo(columnIdBis0.getValuesList().get(0).getValue()).isEqualTo(new BigDecimal("1")); assertThat(columnId0.getValuesList().get(1).getValue()).isEqualTo(columnIdBis0.getValuesList().get(1).getValue()).isEqualTo(new BigDecimal("2")); assertThat(columnId0.getValuesList().get(2).getValue()).isEqualTo(columnIdBis0.getValuesList().get(2).getValue()).isEqualTo(new BigDecimal("3")); assertThat(columnId1.getValuesList().get(0).getValue()).isEqualTo(columnIdBis1.getValuesList().get(0).getValue()).isEqualTo("Weaver"); assertThat(columnId1.getValuesList().get(1).getValue()).isEqualTo(columnIdBis1.getValuesList().get(1).getValue()).isEqualTo("Phoenix"); assertThat(columnId1.getValuesList().get(2).getValue()).isEqualTo(columnIdBis1.getValuesList().get(2).getValue()).isEqualTo("Worthington"); assertThat(columnId2.getValuesList().get(0).getValue()).isEqualTo(columnIdBis2.getValuesList().get(0).getValue()).isEqualTo("Sigourney"); assertThat(columnId2.getValuesList().get(1).getValue()).isEqualTo(columnIdBis2.getValuesList().get(1).getValue()).isEqualTo("Joaquim"); assertThat(columnId2.getValuesList().get(2).getValue()).isEqualTo(columnIdBis2.getValuesList().get(2).getValue()).isEqualTo("Sam"); assertThat(columnId3.getValuesList().get(0).getValue()).isEqualTo(columnIdBis3.getValuesList().get(0).getValue()).isEqualTo(Date.valueOf("1949-10-08")); assertThat(columnId3.getValuesList().get(1).getValue()).isEqualTo(columnIdBis3.getValuesList().get(1).getValue()).isEqualTo(Date.valueOf("1974-10-28")); assertThat(columnId3.getValuesList().get(2).getValue()).isEqualTo(columnIdBis3.getValuesList().get(2).getValue()).isEqualTo(Date.valueOf("1976-08-02")); assertThat(columnId4.getValuesList().get(0).getValue()).isEqualTo(columnIdBis4.getValuesList().get(0).getValue()).isEqualTo(UUID.fromString("30b443ae-c0c9-4790-9bec-ce1380808435")); assertThat(columnId4.getValuesList().get(1).getValue()).isEqualTo(columnIdBis4.getValuesList().get(1).getValue()).isEqualTo(UUID.fromString("16319617-ae95-4087-9264-d3d21bf611b6")); assertThat(columnId4.getValuesList().get(2).getValue()).isEqualTo(columnIdBis4.getValuesList().get(2).getValue()).isEqualTo(UUID.fromString("d735221b-5de5-4112-aa1e-49090cb75ada")); } /** * This method tests the {@code column} navigation method. */ @Test public void test_column_from_request_with_assertions() throws Exception { Field fieldPosition = AbstractDbAssert.class.getDeclaredField("columnPosition"); fieldPosition.setAccessible(true); Field fieldColumn = AbstractColumnAssert.class.getDeclaredField("column"); fieldColumn.setAccessible(true); Field fieldIndex = Position.class.getDeclaredField("nextIndex"); fieldIndex.setAccessible(true); Request request = new Request(source, "select * from actor"); RequestAssert requestAssert = assertThat(request); Position position = (Position) fieldPosition.get(requestAssert); assertThat(fieldIndex.get(position)).isEqualTo(0); RequestColumnAssert requestColumnAssert0 = requestAssert.column(); assertThat(fieldIndex.get(position)).isEqualTo(1); RequestColumnAssert requestColumnAssert1 = requestAssert.column(); assertThat(fieldIndex.get(position)).isEqualTo(2); RequestColumnAssert requestColumnAssert2 = requestAssert.column(); assertThat(fieldIndex.get(position)).isEqualTo(3); RequestColumnAssert requestColumnAssert3 = requestAssert.column(); assertThat(fieldIndex.get(position)).isEqualTo(4); RequestColumnAssert requestColumnAssert4 = requestAssert.column(); assertThat(fieldIndex.get(position)).isEqualTo(5); try { requestAssert.column(); fail("An exception must be raised"); } catch (AssertJDBException e) { assertThat(e.getMessage()).isEqualTo("Index 5 out of the limits [0, 5["); } RequestAssert requestAssertBis = assertThat(request); Position positionBis = (Position) fieldPosition.get(requestAssertBis); assertThat(fieldIndex.get(positionBis)).isEqualTo(0); RequestColumnAssert requestColumnAssertBis0 = requestAssertBis.column(); assertThat(fieldIndex.get(positionBis)).isEqualTo(1); RequestColumnAssert requestColumnAssertBis1 = requestColumnAssertBis0.column(); assertThat(fieldIndex.get(positionBis)).isEqualTo(2); RequestColumnAssert requestColumnAssertBis2 = requestColumnAssertBis1.column(); assertThat(fieldIndex.get(positionBis)).isEqualTo(3); RequestColumnAssert requestColumnAssertBis3 = requestColumnAssertBis2.column(); assertThat(fieldIndex.get(positionBis)).isEqualTo(4); RequestColumnAssert requestColumnAssertBis4 = requestColumnAssertBis3.column(); assertThat(fieldIndex.get(positionBis)).isEqualTo(5); try { requestColumnAssertBis4.column(); fail("An exception must be raised"); } catch (AssertJDBException e) { assertThat(e.getMessage()).isEqualTo("Index 5 out of the limits [0, 5["); } Column columnId0 = (Column) fieldColumn.get(requestColumnAssert0); Column columnId1 = (Column) fieldColumn.get(requestColumnAssert1); Column columnId2 = (Column) fieldColumn.get(requestColumnAssert2); Column columnId3 = (Column) fieldColumn.get(requestColumnAssert3); Column columnId4 = (Column) fieldColumn.get(requestColumnAssert4); Column columnIdBis0 = (Column) fieldColumn.get(requestColumnAssertBis0); Column columnIdBis1 = (Column) fieldColumn.get(requestColumnAssertBis1); Column columnIdBis2 = (Column) fieldColumn.get(requestColumnAssertBis2); Column columnIdBis3 = (Column) fieldColumn.get(requestColumnAssertBis3); Column columnIdBis4 = (Column) fieldColumn.get(requestColumnAssertBis4); assertThat(columnId0.getName()).isEqualTo(columnIdBis0.getName()).isEqualTo("ID"); assertThat(columnId1.getName()).isEqualTo(columnIdBis1.getName()).isEqualTo("NAME"); assertThat(columnId2.getName()).isEqualTo(columnIdBis2.getName()).isEqualTo("FIRSTNAME"); assertThat(columnId3.getName()).isEqualTo(columnIdBis3.getName()).isEqualTo("BIRTH"); assertThat(columnId4.getName()).isEqualTo(columnIdBis4.getName()).isEqualTo("ACTOR_IMDB"); assertThat(columnId0.getValuesList().get(0).getValue()).isEqualTo(columnIdBis0.getValuesList().get(0).getValue()).isEqualTo(new BigDecimal("1")); assertThat(columnId0.getValuesList().get(1).getValue()).isEqualTo(columnIdBis0.getValuesList().get(1).getValue()).isEqualTo(new BigDecimal("2")); assertThat(columnId0.getValuesList().get(2).getValue()).isEqualTo(columnIdBis0.getValuesList().get(2).getValue()).isEqualTo(new BigDecimal("3")); assertThat(columnId1.getValuesList().get(0).getValue()).isEqualTo(columnIdBis1.getValuesList().get(0).getValue()).isEqualTo("Weaver"); assertThat(columnId1.getValuesList().get(1).getValue()).isEqualTo(columnIdBis1.getValuesList().get(1).getValue()).isEqualTo("Phoenix"); assertThat(columnId1.getValuesList().get(2).getValue()).isEqualTo(columnIdBis1.getValuesList().get(2).getValue()).isEqualTo("Worthington"); assertThat(columnId2.getValuesList().get(0).getValue()).isEqualTo(columnIdBis2.getValuesList().get(0).getValue()).isEqualTo("Sigourney"); assertThat(columnId2.getValuesList().get(1).getValue()).isEqualTo(columnIdBis2.getValuesList().get(1).getValue()).isEqualTo("Joaquim"); assertThat(columnId2.getValuesList().get(2).getValue()).isEqualTo(columnIdBis2.getValuesList().get(2).getValue()).isEqualTo("Sam"); assertThat(columnId3.getValuesList().get(0).getValue()).isEqualTo(columnIdBis3.getValuesList().get(0).getValue()).isEqualTo(Date.valueOf("1949-10-08")); assertThat(columnId3.getValuesList().get(1).getValue()).isEqualTo(columnIdBis3.getValuesList().get(1).getValue()).isEqualTo(Date.valueOf("1974-10-28")); assertThat(columnId3.getValuesList().get(2).getValue()).isEqualTo(columnIdBis3.getValuesList().get(2).getValue()).isEqualTo(Date.valueOf("1976-08-02")); assertThat(columnId4.getValuesList().get(0).getValue()).isEqualTo(columnIdBis4.getValuesList().get(0).getValue()).isEqualTo(UUID.fromString("30b443ae-c0c9-4790-9bec-ce1380808435")); assertThat(columnId4.getValuesList().get(1).getValue()).isEqualTo(columnIdBis4.getValuesList().get(1).getValue()).isEqualTo( UUID.fromString("16319617-ae95-4087-9264-d3d21bf611b6")); assertThat(columnId4.getValuesList().get(2).getValue()).isEqualTo(columnIdBis4.getValuesList().get(2).getValue()).isEqualTo( UUID.fromString("d735221b-5de5-4112-aa1e-49090cb75ada")); } /** * This method tests the {@code column} navigation method. */ @Test @NeedReload public void test_column_from_change_with_displays() throws Exception { Changes changes = new Changes(source).setStartPointNow(); updateChangesForTests(); changes.setEndPointNow(); Field fieldPosition = ChangeOutputter.class.getDeclaredField("columnPosition"); fieldPosition.setAccessible(true); Field fieldIndex = PositionWithColumnsChange.class.getDeclaredField("nextIndex"); fieldIndex.setAccessible(true); Field fieldColumnName = ChangeColumnOutputter.class.getDeclaredField("columnName"); fieldColumnName.setAccessible(true); Field fieldValueAtStartPoint = ChangeColumnOutputter.class.getDeclaredField("valueAtStartPoint"); fieldValueAtStartPoint.setAccessible(true); Field fieldValueAtEndPoint = ChangeColumnOutputter.class.getDeclaredField("valueAtEndPoint"); fieldValueAtEndPoint.setAccessible(true); ChangesOutputter changesOutputter = output(changes); ChangeOutputter changeOutputter = changesOutputter.change(); PositionWithColumnsChange position = (PositionWithColumnsChange) fieldPosition.get(changeOutputter); assertThat(fieldIndex.get(position)).isEqualTo(0); ChangeColumnOutputter changeColumnOutputter0 = changeOutputter.column(); assertThat(fieldIndex.get(position)).isEqualTo(1); ChangeColumnOutputter changeColumnOutputter1 = changeOutputter.column(); assertThat(fieldIndex.get(position)).isEqualTo(2); ChangeColumnOutputter changeColumnOutputter2 = changeOutputter.column(); assertThat(fieldIndex.get(position)).isEqualTo(3); ChangeColumnOutputter changeColumnOutputter3 = changeOutputter.column(); assertThat(fieldIndex.get(position)).isEqualTo(4); ChangeColumnOutputter changeColumnOutputter4 = changeOutputter.column(); assertThat(fieldIndex.get(position)).isEqualTo(5); try { changeOutputter.column(); fail("An exception must be raised"); } catch (AssertJDBException e) { assertThat(e.getMessage()).isEqualTo("Index 5 out of the limits [0, 5["); } ChangesOutputter changesOutputterBis = output(changes); ChangeOutputter changeOutputterBis = changesOutputterBis.change(); PositionWithColumnsChange positionBis = (PositionWithColumnsChange) fieldPosition.get(changeOutputterBis); assertThat(fieldIndex.get(positionBis)).isEqualTo(0); ChangeColumnOutputter changeColumnOutputterBis0 = changeOutputterBis.column(); assertThat(fieldIndex.get(positionBis)).isEqualTo(1); ChangeColumnOutputter changeColumnOutputterBis1 = changeColumnOutputterBis0.column(); assertThat(fieldIndex.get(positionBis)).isEqualTo(2); ChangeColumnOutputter changeColumnOutputterBis2 = changeColumnOutputterBis1.column(); assertThat(fieldIndex.get(positionBis)).isEqualTo(3); ChangeColumnOutputter changeColumnOutputterBis3 = changeColumnOutputterBis2.column(); assertThat(fieldIndex.get(positionBis)).isEqualTo(4); ChangeColumnOutputter changeColumnOutputterBis4 = changeColumnOutputterBis3.column(); assertThat(fieldIndex.get(positionBis)).isEqualTo(5); try { changeColumnOutputterBis4.column(); fail("An exception must be raised"); } catch (AssertJDBException e) { assertThat(e.getMessage()).isEqualTo("Index 5 out of the limits [0, 5["); } assertThat(fieldColumnName.get(changeColumnOutputter0)).isEqualTo(fieldColumnName.get(changeColumnOutputterBis0)).isEqualTo( "ID"); assertThat(fieldColumnName.get(changeColumnOutputter1)).isEqualTo(fieldColumnName.get(changeColumnOutputterBis1)).isEqualTo( "NAME"); assertThat(fieldColumnName.get(changeColumnOutputter2)).isEqualTo(fieldColumnName.get(changeColumnOutputterBis2)).isEqualTo( "FIRSTNAME"); assertThat(fieldColumnName.get(changeColumnOutputter3)).isEqualTo(fieldColumnName.get(changeColumnOutputterBis3)).isEqualTo( "BIRTH"); assertThat(fieldColumnName.get(changeColumnOutputter4)).isEqualTo(fieldColumnName.get(changeColumnOutputterBis4)).isEqualTo( "ACTOR_IMDB"); assertThat(((Value) fieldValueAtStartPoint.get(changeColumnOutputter0)).getValue()).isNull(); assertThat(((Value) fieldValueAtStartPoint.get(changeColumnOutputter1)).getValue()).isNull(); assertThat(((Value) fieldValueAtStartPoint.get(changeColumnOutputter2)).getValue()).isNull(); assertThat(((Value) fieldValueAtStartPoint.get(changeColumnOutputter3)).getValue()).isNull(); assertThat(((Value) fieldValueAtStartPoint.get(changeColumnOutputter4)).getValue()).isNull(); assertThat(((Value) fieldValueAtStartPoint.get(changeColumnOutputterBis0)).getValue()).isNull(); assertThat(((Value) fieldValueAtStartPoint.get(changeColumnOutputterBis1)).getValue()).isNull(); assertThat(((Value) fieldValueAtStartPoint.get(changeColumnOutputterBis2)).getValue()).isNull(); assertThat(((Value) fieldValueAtStartPoint.get(changeColumnOutputterBis3)).getValue()).isNull(); assertThat(((Value) fieldValueAtStartPoint.get(changeColumnOutputterBis4)).getValue()).isNull(); assertThat(((Value) fieldValueAtEndPoint.get(changeColumnOutputter0)).getValue()).isEqualTo( ((Value) fieldValueAtEndPoint.get(changeColumnOutputterBis0)).getValue()).isEqualTo(new BigDecimal("4")); assertThat(((Value) fieldValueAtEndPoint.get(changeColumnOutputter1)).getValue()).isEqualTo( ((Value) fieldValueAtEndPoint.get(changeColumnOutputterBis1)).getValue()).isEqualTo("Murray"); assertThat(((Value) fieldValueAtEndPoint.get(changeColumnOutputter2)).getValue()).isEqualTo( ((Value) fieldValueAtEndPoint.get(changeColumnOutputterBis2)).getValue()).isEqualTo("Bill"); assertThat(((Value) fieldValueAtEndPoint.get(changeColumnOutputter3)).getValue()).isEqualTo( ((Value) fieldValueAtEndPoint.get(changeColumnOutputterBis3)).getValue()).isEqualTo( Date.valueOf("1950-09-21")); assertThat(((Value) fieldValueAtEndPoint.get(changeColumnOutputter4)).getValue()).isEqualTo( ((Value) fieldValueAtEndPoint.get(changeColumnOutputterBis4)).getValue()).isEqualTo( UUID.fromString("30B443AE-C0C9-4790-9BEC-CE1380808435")); } /** * This method tests the {@code column} navigation method. */ @Test public void test_column_from_table_with_displays() throws Exception { Field fieldPosition = AbstractDbOutputter.class.getDeclaredField("columnPosition"); fieldPosition.setAccessible(true); Field fieldColumn = AbstractColumnOutputter.class.getDeclaredField("column"); fieldColumn.setAccessible(true); Field fieldIndex = Position.class.getDeclaredField("nextIndex"); fieldIndex.setAccessible(true); Table table = new Table(source, "actor"); TableOutputter tableOutputter = Outputs.output(table); Position position = (Position) fieldPosition.get(tableOutputter); assertThat(fieldIndex.get(position)).isEqualTo(0); TableColumnOutputter tableColumnOutputter0 = tableOutputter.column(); assertThat(fieldIndex.get(position)).isEqualTo(1); TableColumnOutputter tableColumnOutputter1 = tableOutputter.column(); assertThat(fieldIndex.get(position)).isEqualTo(2); TableColumnOutputter tableColumnOutputter2 = tableOutputter.column(); assertThat(fieldIndex.get(position)).isEqualTo(3); TableColumnOutputter tableColumnOutputter3 = tableOutputter.column(); assertThat(fieldIndex.get(position)).isEqualTo(4); TableColumnOutputter tableColumnOutputter4 = tableOutputter.column(); assertThat(fieldIndex.get(position)).isEqualTo(5); try { tableOutputter.column(); fail("An exception must be raised"); } catch (AssertJDBException e) { assertThat(e.getMessage()).isEqualTo("Index 5 out of the limits [0, 5["); } TableOutputter tableOutputterBis = Outputs.output(table); Position positionBis = (Position) fieldPosition.get(tableOutputterBis); assertThat(fieldIndex.get(positionBis)).isEqualTo(0); TableColumnOutputter tableColumnOutputterBis0 = tableOutputterBis.column(); assertThat(fieldIndex.get(positionBis)).isEqualTo(1); TableColumnOutputter tableColumnOutputterBis1 = tableColumnOutputterBis0.column(); assertThat(fieldIndex.get(positionBis)).isEqualTo(2); TableColumnOutputter tableColumnOutputterBis2 = tableColumnOutputterBis1.column(); assertThat(fieldIndex.get(positionBis)).isEqualTo(3); TableColumnOutputter tableColumnOutputterBis3 = tableColumnOutputterBis2.column(); assertThat(fieldIndex.get(positionBis)).isEqualTo(4); TableColumnOutputter tableColumnOutputterBis4 = tableColumnOutputterBis3.column(); assertThat(fieldIndex.get(positionBis)).isEqualTo(5); try { tableColumnOutputterBis4.column(); fail("An exception must be raised"); } catch (AssertJDBException e) { assertThat(e.getMessage()).isEqualTo("Index 5 out of the limits [0, 5["); } Column columnId0 = (Column) fieldColumn.get(tableColumnOutputter0); Column columnId1 = (Column) fieldColumn.get(tableColumnOutputter1); Column columnId2 = (Column) fieldColumn.get(tableColumnOutputter2); Column columnId3 = (Column) fieldColumn.get(tableColumnOutputter3); Column columnId4 = (Column) fieldColumn.get(tableColumnOutputter4); Column columnIdBis0 = (Column) fieldColumn.get(tableColumnOutputterBis0); Column columnIdBis1 = (Column) fieldColumn.get(tableColumnOutputterBis1); Column columnIdBis2 = (Column) fieldColumn.get(tableColumnOutputterBis2); Column columnIdBis3 = (Column) fieldColumn.get(tableColumnOutputterBis3); Column columnIdBis4 = (Column) fieldColumn.get(tableColumnOutputterBis4); assertThat(columnId0.getName()).isEqualTo(columnIdBis0.getName()).isEqualTo("ID"); assertThat(columnId1.getName()).isEqualTo(columnIdBis1.getName()).isEqualTo("NAME"); assertThat(columnId2.getName()).isEqualTo(columnIdBis2.getName()).isEqualTo("FIRSTNAME"); assertThat(columnId3.getName()).isEqualTo(columnIdBis3.getName()).isEqualTo("BIRTH"); assertThat(columnId4.getName()).isEqualTo(columnIdBis4.getName()).isEqualTo("ACTOR_IMDB"); assertThat(columnId0.getValuesList().get(0).getValue()).isEqualTo(columnIdBis0.getValuesList().get(0).getValue()).isEqualTo(new BigDecimal("1")); assertThat(columnId0.getValuesList().get(1).getValue()).isEqualTo(columnIdBis0.getValuesList().get(1).getValue()).isEqualTo(new BigDecimal("2")); assertThat(columnId0.getValuesList().get(2).getValue()).isEqualTo(columnIdBis0.getValuesList().get(2).getValue()).isEqualTo(new BigDecimal("3")); assertThat(columnId1.getValuesList().get(0).getValue()).isEqualTo(columnIdBis1.getValuesList().get(0).getValue()).isEqualTo("Weaver"); assertThat(columnId1.getValuesList().get(1).getValue()).isEqualTo(columnIdBis1.getValuesList().get(1).getValue()).isEqualTo("Phoenix"); assertThat(columnId1.getValuesList().get(2).getValue()).isEqualTo(columnIdBis1.getValuesList().get(2).getValue()).isEqualTo("Worthington"); assertThat(columnId2.getValuesList().get(0).getValue()).isEqualTo(columnIdBis2.getValuesList().get(0).getValue()).isEqualTo("Sigourney"); assertThat(columnId2.getValuesList().get(1).getValue()).isEqualTo(columnIdBis2.getValuesList().get(1).getValue()).isEqualTo("Joaquim"); assertThat(columnId2.getValuesList().get(2).getValue()).isEqualTo(columnIdBis2.getValuesList().get(2).getValue()).isEqualTo("Sam"); assertThat(columnId3.getValuesList().get(0).getValue()).isEqualTo(columnIdBis3.getValuesList().get(0).getValue()).isEqualTo(Date.valueOf("1949-10-08")); assertThat(columnId3.getValuesList().get(1).getValue()).isEqualTo(columnIdBis3.getValuesList().get(1).getValue()).isEqualTo(Date.valueOf("1974-10-28")); assertThat(columnId3.getValuesList().get(2).getValue()).isEqualTo(columnIdBis3.getValuesList().get(2).getValue()).isEqualTo(Date.valueOf("1976-08-02")); assertThat(columnId4.getValuesList().get(0).getValue()).isEqualTo(columnIdBis4.getValuesList().get(0).getValue()).isEqualTo(UUID.fromString("30b443ae-c0c9-4790-9bec-ce1380808435")); assertThat(columnId4.getValuesList().get(1).getValue()).isEqualTo(columnIdBis4.getValuesList().get(1).getValue()).isEqualTo(UUID.fromString("16319617-ae95-4087-9264-d3d21bf611b6")); assertThat(columnId4.getValuesList().get(2).getValue()).isEqualTo(columnIdBis4.getValuesList().get(2).getValue()).isEqualTo(UUID.fromString("d735221b-5de5-4112-aa1e-49090cb75ada")); } /** * This method tests the {@code column} navigation method. */ @Test public void test_column_from_request_with_displays() throws Exception { Field fieldPosition = AbstractDbOutputter.class.getDeclaredField("columnPosition"); fieldPosition.setAccessible(true); Field fieldColumn = AbstractColumnOutputter.class.getDeclaredField("column"); fieldColumn.setAccessible(true); Field fieldIndex = Position.class.getDeclaredField("nextIndex"); fieldIndex.setAccessible(true); Request request = new Request(source, "select * from actor"); RequestOutputter requestOutputter = Outputs.output(request); Position position = (Position) fieldPosition.get(requestOutputter); assertThat(fieldIndex.get(position)).isEqualTo(0); RequestColumnOutputter requestColumnOutputter0 = requestOutputter.column(); assertThat(fieldIndex.get(position)).isEqualTo(1); RequestColumnOutputter requestColumnOutputter1 = requestOutputter.column(); assertThat(fieldIndex.get(position)).isEqualTo(2); RequestColumnOutputter requestColumnOutputter2 = requestOutputter.column(); assertThat(fieldIndex.get(position)).isEqualTo(3); RequestColumnOutputter requestColumnOutputter3 = requestOutputter.column(); assertThat(fieldIndex.get(position)).isEqualTo(4); RequestColumnOutputter requestColumnOutputter4 = requestOutputter.column(); assertThat(fieldIndex.get(position)).isEqualTo(5); try { requestOutputter.column(); fail("An exception must be raised"); } catch (AssertJDBException e) { assertThat(e.getMessage()).isEqualTo("Index 5 out of the limits [0, 5["); } RequestOutputter requestOutputterBis = Outputs.output(request); Position positionBis = (Position) fieldPosition.get(requestOutputterBis); assertThat(fieldIndex.get(positionBis)).isEqualTo(0); RequestColumnOutputter requestColumnOutputterBis0 = requestOutputterBis.column(); assertThat(fieldIndex.get(positionBis)).isEqualTo(1); RequestColumnOutputter requestColumnOutputterBis1 = requestColumnOutputterBis0.column(); assertThat(fieldIndex.get(positionBis)).isEqualTo(2); RequestColumnOutputter requestColumnOutputterBis2 = requestColumnOutputterBis1.column(); assertThat(fieldIndex.get(positionBis)).isEqualTo(3); RequestColumnOutputter requestColumnOutputterBis3 = requestColumnOutputterBis2.column(); assertThat(fieldIndex.get(positionBis)).isEqualTo(4); RequestColumnOutputter requestColumnOutputterBis4 = requestColumnOutputterBis3.column(); assertThat(fieldIndex.get(positionBis)).isEqualTo(5); try { requestColumnOutputterBis4.column(); fail("An exception must be raised"); } catch (AssertJDBException e) { assertThat(e.getMessage()).isEqualTo("Index 5 out of the limits [0, 5["); } Column columnId0 = (Column) fieldColumn.get(requestColumnOutputter0); Column columnId1 = (Column) fieldColumn.get(requestColumnOutputter1); Column columnId2 = (Column) fieldColumn.get(requestColumnOutputter2); Column columnId3 = (Column) fieldColumn.get(requestColumnOutputter3); Column columnId4 = (Column) fieldColumn.get(requestColumnOutputter4); Column columnIdBis0 = (Column) fieldColumn.get(requestColumnOutputterBis0); Column columnIdBis1 = (Column) fieldColumn.get(requestColumnOutputterBis1); Column columnIdBis2 = (Column) fieldColumn.get(requestColumnOutputterBis2); Column columnIdBis3 = (Column) fieldColumn.get(requestColumnOutputterBis3); Column columnIdBis4 = (Column) fieldColumn.get(requestColumnOutputterBis4); assertThat(columnId0.getName()).isEqualTo(columnIdBis0.getName()).isEqualTo("ID"); assertThat(columnId1.getName()).isEqualTo(columnIdBis1.getName()).isEqualTo("NAME"); assertThat(columnId2.getName()).isEqualTo(columnIdBis2.getName()).isEqualTo("FIRSTNAME"); assertThat(columnId3.getName()).isEqualTo(columnIdBis3.getName()).isEqualTo("BIRTH"); assertThat(columnId4.getName()).isEqualTo(columnIdBis4.getName()).isEqualTo("ACTOR_IMDB"); assertThat(columnId0.getValuesList().get(0).getValue()).isEqualTo(columnIdBis0.getValuesList().get(0).getValue()).isEqualTo(new BigDecimal("1")); assertThat(columnId0.getValuesList().get(1).getValue()).isEqualTo(columnIdBis0.getValuesList().get(1).getValue()).isEqualTo(new BigDecimal("2")); assertThat(columnId0.getValuesList().get(2).getValue()).isEqualTo(columnIdBis0.getValuesList().get(2).getValue()).isEqualTo(new BigDecimal("3")); assertThat(columnId1.getValuesList().get(0).getValue()).isEqualTo(columnIdBis1.getValuesList().get(0).getValue()).isEqualTo("Weaver"); assertThat(columnId1.getValuesList().get(1).getValue()).isEqualTo(columnIdBis1.getValuesList().get(1).getValue()).isEqualTo("Phoenix"); assertThat(columnId1.getValuesList().get(2).getValue()).isEqualTo(columnIdBis1.getValuesList().get(2).getValue()).isEqualTo("Worthington"); assertThat(columnId2.getValuesList().get(0).getValue()).isEqualTo(columnIdBis2.getValuesList().get(0).getValue()).isEqualTo("Sigourney"); assertThat(columnId2.getValuesList().get(1).getValue()).isEqualTo(columnIdBis2.getValuesList().get(1).getValue()).isEqualTo("Joaquim"); assertThat(columnId2.getValuesList().get(2).getValue()).isEqualTo(columnIdBis2.getValuesList().get(2).getValue()).isEqualTo("Sam"); assertThat(columnId3.getValuesList().get(0).getValue()).isEqualTo(columnIdBis3.getValuesList().get(0).getValue()).isEqualTo(Date.valueOf("1949-10-08")); assertThat(columnId3.getValuesList().get(1).getValue()).isEqualTo(columnIdBis3.getValuesList().get(1).getValue()).isEqualTo(Date.valueOf("1974-10-28")); assertThat(columnId3.getValuesList().get(2).getValue()).isEqualTo(columnIdBis3.getValuesList().get(2).getValue()).isEqualTo(Date.valueOf("1976-08-02")); assertThat(columnId4.getValuesList().get(0).getValue()).isEqualTo(columnIdBis4.getValuesList().get(0).getValue()).isEqualTo(UUID.fromString("30b443ae-c0c9-4790-9bec-ce1380808435")); assertThat(columnId4.getValuesList().get(1).getValue()).isEqualTo(columnIdBis4.getValuesList().get(1).getValue()).isEqualTo( UUID.fromString("16319617-ae95-4087-9264-d3d21bf611b6")); assertThat(columnId4.getValuesList().get(2).getValue()).isEqualTo(columnIdBis4.getValuesList().get(2).getValue()).isEqualTo( UUID.fromString("d735221b-5de5-4112-aa1e-49090cb75ada")); } }