/** * 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.core.api.Assertions; import org.assertj.db.api.ChangeAssert; import org.assertj.db.api.ChangesAssert; import org.assertj.db.common.AbstractTest; import org.assertj.db.common.NeedReload; import org.assertj.db.output.ChangeOutputter; import org.assertj.db.output.ChangesOutputter; import org.assertj.db.type.Change; import org.assertj.db.type.Changes; import org.junit.Test; import java.lang.reflect.Field; import java.util.List; import static org.assertj.db.api.Assertions.assertThat; import static org.assertj.db.output.Outputs.output; /** * Tests on {@link org.assertj.db.navigation.ToChanges} interface. * * @author RĂ©gis Pouiller * */ public class ToChanges_Test extends AbstractTest { /** * This method tests the {@code ToChanges} navigation interfaces. */ @Test @NeedReload public void test_to_changes_navigation_with_assertions() throws Exception { Changes changes = new Changes(source).setStartPointNow(); updateChangesForTests(); changes.setEndPointNow(); Field fieldChanges = ChangesAssert.class.getDeclaredField("changes"); fieldChanges.setAccessible(true); ChangesAssert changesAssert = assertThat(changes); ChangeAssert changeAssert = changesAssert.change(); ChangesAssert changesAssertAll = changesAssert.ofAll(); ChangesAssert changesAssertCreation = changesAssert.ofCreation(); ChangesAssert changesAssertModification = changesAssert.ofModification(); ChangesAssert changesAssertDeletion = changesAssert.ofDeletion(); ChangesAssert changesAssertCreationOnTable = changesAssert.ofCreationOnTable("actor"); ChangesAssert changesAssertModificationOnTable = changesAssert.ofModificationOnTable("actor"); ChangesAssert changesAssertDeletionOnTable = changesAssert.ofDeletionOnTable("actor"); ChangesAssert changesAssertOnTable = changesAssert.onTable("actor"); ChangesAssert changesAssertAllBis = changesAssertCreation.ofAll(); ChangesAssert changesAssertCreationBis = changesAssertCreation.ofCreation(); ChangesAssert changesAssertModificationBis = changesAssertCreation.ofModification(); ChangesAssert changesAssertDeletionBis = changesAssertCreation.ofDeletion(); ChangesAssert changesAssertCreationOnTableBis = changesAssertCreation.ofCreationOnTable("actor"); ChangesAssert changesAssertModificationOnTableBis = changesAssertCreation.ofModificationOnTable("actor"); ChangesAssert changesAssertDeletionOnTableBis = changesAssertCreation.ofDeletionOnTable("actor"); ChangesAssert changesAssertOnTableBis = changesAssertCreation.onTable("actor"); ChangesAssert changesAssertAllTer = changeAssert.ofAll(); ChangesAssert changesAssertCreationTer = changeAssert.ofCreation(); ChangesAssert changesAssertModificationTer = changeAssert.ofModification(); ChangesAssert changesAssertDeletionTer = changeAssert.ofDeletion(); ChangesAssert changesAssertCreationOnTableTer = changeAssert.ofCreationOnTable("actor"); ChangesAssert changesAssertModificationOnTableTer = changeAssert.ofModificationOnTable("actor"); ChangesAssert changesAssertDeletionOnTableTer = changeAssert.ofDeletionOnTable("actor"); ChangesAssert changesAssertOnTableTer = changeAssert.onTable("actor"); Assertions.assertThat(changesAssert).isSameAs(changesAssertAll).isSameAs(changesAssertAllBis).isSameAs(changesAssertAllTer); Assertions.assertThat(changesAssertCreation).isSameAs(changesAssertCreationBis).isSameAs(changesAssertCreationTer); Assertions.assertThat(changesAssertModification).isSameAs(changesAssertModificationBis).isSameAs(changesAssertModificationTer); Assertions.assertThat(changesAssertDeletion).isSameAs(changesAssertDeletionBis).isSameAs(changesAssertDeletionTer); Assertions.assertThat(changesAssertCreationOnTable).isSameAs(changesAssertCreationOnTableBis).isSameAs(changesAssertCreationOnTableTer); Assertions.assertThat(changesAssertModificationOnTable).isSameAs(changesAssertModificationOnTableBis).isSameAs(changesAssertModificationOnTableTer); Assertions.assertThat(changesAssertDeletionOnTable).isSameAs(changesAssertDeletionOnTableBis).isSameAs(changesAssertDeletionOnTableTer); Assertions.assertThat(changesAssertOnTable).isSameAs(changesAssertOnTableBis).isSameAs(changesAssertOnTableTer); Changes changesAll = (Changes) fieldChanges.get(changesAssertAll); Changes changesCreation = (Changes) fieldChanges.get(changesAssertCreation); Changes changesModification = (Changes) fieldChanges.get(changesAssertModification); Changes changesDeletion = (Changes) fieldChanges.get(changesAssertDeletion); Changes changesCreationOnTable = (Changes) fieldChanges.get(changesAssertCreationOnTable); Changes changesModificationOnTable = (Changes) fieldChanges.get(changesAssertModificationOnTable); Changes changesDeletionOnTable = (Changes) fieldChanges.get(changesAssertDeletionOnTable); Changes changesOnTable = (Changes) fieldChanges.get(changesAssertOnTable); List<Change> changesList = changes.getChangesList(); List<Change> changesAllList = changesAll.getChangesList(); List<Change> changesCreationList = changesCreation.getChangesList(); List<Change> changesModificationList = changesModification.getChangesList(); List<Change> changesDeletionList = changesDeletion.getChangesList(); List<Change> changesCreationOnTableList = changesCreationOnTable.getChangesList(); List<Change> changesModificationOnTableList = changesModificationOnTable.getChangesList(); List<Change> changesDeletionOnTableList = changesDeletionOnTable.getChangesList(); List<Change> changesOnTableList = changesOnTable.getChangesList(); Assertions.assertThat(changesAllList).containsExactlyElementsOf(changesList); Assertions.assertThat(changesCreationList).containsExactly(changesList.get(0), changesList.get(1), changesList.get(2)); Assertions.assertThat(changesModificationList).containsExactly(changesList.get(3), changesList.get(4), changesList.get(5)); Assertions.assertThat(changesDeletionList).containsExactly(changesList.get(6), changesList.get(7)); Assertions.assertThat(changesCreationOnTableList).containsExactly(changesList.get(0)); Assertions.assertThat(changesModificationOnTableList).containsExactly(changesList.get(3)); Assertions.assertThat(changesDeletionOnTableList).containsExactly(changesList.get(6)); Assertions.assertThat(changesOnTableList).containsExactly(changesList.get(0), changesList.get(3), changesList.get(6)); } /** * This method tests the {@code ToChanges} navigation interfaces. */ @Test @NeedReload public void test_to_changes_navigation_with_displays() throws Exception { Changes changes = new Changes(source).setStartPointNow(); updateChangesForTests(); changes.setEndPointNow(); Field fieldChanges = ChangesOutputter.class.getDeclaredField("changes"); fieldChanges.setAccessible(true); ChangesOutputter changesOutputter = output(changes); ChangeOutputter changeOutputter = changesOutputter.change(); ChangesOutputter changesOutputterAll = changesOutputter.ofAll(); ChangesOutputter changesOutputterCreation = changesOutputter.ofCreation(); ChangesOutputter changesOutputterModification = changesOutputter.ofModification(); ChangesOutputter changesOutputterDeletion = changesOutputter.ofDeletion(); ChangesOutputter changesOutputterCreationOnTable = changesOutputter.ofCreationOnTable("actor"); ChangesOutputter changesOutputterModificationOnTable = changesOutputter.ofModificationOnTable("actor"); ChangesOutputter changesOutputterDeletionOnTable = changesOutputter.ofDeletionOnTable("actor"); ChangesOutputter changesOutputterOnTable = changesOutputter.onTable("actor"); ChangesOutputter changesOutputterAllBis = changesOutputterCreation.ofAll(); ChangesOutputter changesOutputterCreationBis = changesOutputterCreation.ofCreation(); ChangesOutputter changesOutputterModificationBis = changesOutputterCreation.ofModification(); ChangesOutputter changesOutputterDeletionBis = changesOutputterCreation.ofDeletion(); ChangesOutputter changesOutputterCreationOnTableBis = changesOutputterCreation.ofCreationOnTable("actor"); ChangesOutputter changesOutputterModificationOnTableBis = changesOutputterCreation.ofModificationOnTable("actor"); ChangesOutputter changesOutputterDeletionOnTableBis = changesOutputterCreation.ofDeletionOnTable("actor"); ChangesOutputter changesOutputterOnTableBis = changesOutputterCreation.onTable("actor"); ChangesOutputter changesOutputterAllTer = changeOutputter.ofAll(); ChangesOutputter changesOutputterCreationTer = changeOutputter.ofCreation(); ChangesOutputter changesOutputterModificationTer = changeOutputter.ofModification(); ChangesOutputter changesOutputterDeletionTer = changeOutputter.ofDeletion(); ChangesOutputter changesOutputterCreationOnTableTer = changeOutputter.ofCreationOnTable("actor"); ChangesOutputter changesOutputterModificationOnTableTer = changeOutputter.ofModificationOnTable("actor"); ChangesOutputter changesOutputterDeletionOnTableTer = changeOutputter.ofDeletionOnTable("actor"); ChangesOutputter changesOutputterOnTableTer = changeOutputter.onTable("actor"); Assertions.assertThat(changesOutputter).isSameAs(changesOutputterAll).isSameAs(changesOutputterAllBis).isSameAs(changesOutputterAllTer); Assertions.assertThat(changesOutputterCreation).isSameAs(changesOutputterCreationBis).isSameAs(changesOutputterCreationTer); Assertions.assertThat(changesOutputterModification).isSameAs(changesOutputterModificationBis).isSameAs(changesOutputterModificationTer); Assertions.assertThat(changesOutputterDeletion).isSameAs(changesOutputterDeletionBis).isSameAs(changesOutputterDeletionTer); Assertions.assertThat(changesOutputterCreationOnTable).isSameAs(changesOutputterCreationOnTableBis).isSameAs(changesOutputterCreationOnTableTer); Assertions.assertThat(changesOutputterModificationOnTable).isSameAs(changesOutputterModificationOnTableBis).isSameAs(changesOutputterModificationOnTableTer); Assertions.assertThat(changesOutputterDeletionOnTable).isSameAs(changesOutputterDeletionOnTableBis).isSameAs(changesOutputterDeletionOnTableTer); Assertions.assertThat(changesOutputterOnTable).isSameAs(changesOutputterOnTableBis).isSameAs(changesOutputterOnTableTer); Changes changesAll = (Changes) fieldChanges.get(changesOutputterAll); Changes changesCreation = (Changes) fieldChanges.get(changesOutputterCreation); Changes changesModification = (Changes) fieldChanges.get(changesOutputterModification); Changes changesDeletion = (Changes) fieldChanges.get(changesOutputterDeletion); Changes changesCreationOnTable = (Changes) fieldChanges.get(changesOutputterCreationOnTable); Changes changesModificationOnTable = (Changes) fieldChanges.get(changesOutputterModificationOnTable); Changes changesDeletionOnTable = (Changes) fieldChanges.get(changesOutputterDeletionOnTable); Changes changesOnTable = (Changes) fieldChanges.get(changesOutputterOnTable); List<Change> changesList = changes.getChangesList(); List<Change> changesAllList = changesAll.getChangesList(); List<Change> changesCreationList = changesCreation.getChangesList(); List<Change> changesModificationList = changesModification.getChangesList(); List<Change> changesDeletionList = changesDeletion.getChangesList(); List<Change> changesCreationOnTableList = changesCreationOnTable.getChangesList(); List<Change> changesModificationOnTableList = changesModificationOnTable.getChangesList(); List<Change> changesDeletionOnTableList = changesDeletionOnTable.getChangesList(); List<Change> changesOnTableList = changesOnTable.getChangesList(); Assertions.assertThat(changesAllList).containsExactlyElementsOf(changesList); Assertions.assertThat(changesCreationList).containsExactly(changesList.get(0), changesList.get(1), changesList.get(2)); Assertions.assertThat(changesModificationList).containsExactly(changesList.get(3), changesList.get(4), changesList.get(5)); Assertions.assertThat(changesDeletionList).containsExactly(changesList.get(6), changesList.get(7)); Assertions.assertThat(changesCreationOnTableList).containsExactly(changesList.get(0)); Assertions.assertThat(changesModificationOnTableList).containsExactly(changesList.get(3)); Assertions.assertThat(changesDeletionOnTableList).containsExactly(changesList.get(6)); Assertions.assertThat(changesOnTableList).containsExactly(changesList.get(0), changesList.get(3), changesList.get(6)); } }