package org.catrobat.catroid3d.test.cucumber; import org.catrobat.catroid3d.ProjectManager; import org.catrobat.catroid3d.R; import org.catrobat.catroid3d.common.Constants.MODEL; import org.catrobat.catroid3d.test.cucumber.util.SoloLibgdxWrapper; import org.catrobat.catroid3d.utils.Math; import org.catrobat.catroid3d.utils.Util; import android.test.AndroidTestCase; import com.badlogic.gdx.math.Vector3; import cucumber.api.PendingException; import cucumber.api.java.en.And; import cucumber.api.java.en.Then; import cucumber.api.java.en.When; public class ObjectSteps extends AndroidTestCase { private final String standardBarrelModelName = "Barrel01"; private final String standardTreeModelName = "Tree01"; private Vector3 toPosition = new Vector3(); @When("^I click on the \"([^\"]*)\" image$") public void I_click_on_the_object_image(String objectImage) { SoloLibgdxWrapper solo = (SoloLibgdxWrapper) Cucumber.get(Cucumber.KEY_SOLO_WRAPPER); solo.sleep(1000); if(objectImage.contains("tree")) { solo.clickOnButton(MODEL.MODEL_PALM_TREE_01.name()); } else if(objectImage.contains("plant01")) { solo.clickOnButton(MODEL.MODEL_TROPICAL_PLANT_01.name()); } else if(objectImage.contains("plant02")) { solo.clickOnButton(MODEL.MODEL_TROPICAL_PLANT_02.name()); } else if(objectImage.contains("barrel")) { solo.clickOnButton(MODEL.MODEL_BIG_WOOD_BARREL.name()); } else { throw new PendingException(); } solo.sleep(1000); } @Then("^the choose object split pane should hide$") public void the_choose_object_split_pane_should_hide() { SoloLibgdxWrapper solo = (SoloLibgdxWrapper) Cucumber.get(Cucumber.KEY_SOLO_WRAPPER); assertFalse(solo.isChooseObjectSplitPaneVisible()); } @And("^a \"([^\"]*)\" should be placed in the middle of the ground$") public void a_object_should_be_placed_in_the_middle_of_the_ground(String objectToPlace) { SoloLibgdxWrapper solo = (SoloLibgdxWrapper) Cucumber.get(Cucumber.KEY_SOLO_WRAPPER); if(objectToPlace.contains("tree")) { assertTrue(solo.isEntityAtPosition(Util.getModelDescriptor(MODEL.MODEL_PALM_TREE_01).getNameInSkinFile(), Math.createCenterPositionMatrix())); } else if(objectToPlace.contains("plant01")) { assertTrue(solo.isEntityAtPosition(Util.getModelDescriptor(MODEL.MODEL_TROPICAL_PLANT_01).getNameInSkinFile(), Math.createCenterPositionMatrix())); } else if(objectToPlace.contains("plant02")) { assertTrue(solo.isEntityAtPosition(Util.getModelDescriptor(MODEL.MODEL_TROPICAL_PLANT_02).getNameInSkinFile(), Math.createCenterPositionMatrix())); } else if(objectToPlace.contains("barrel")) { assertTrue(solo.isEntityAtPosition(Util.getModelDescriptor(MODEL.MODEL_BIG_WOOD_BARREL).getNameInSkinFile(), Math.createCenterPositionMatrix())); } else { throw new PendingException(); } } @When("^I press the miscellaneous button$") public void I_press_the_miscellaneous_button() { SoloLibgdxWrapper solo = (SoloLibgdxWrapper) Cucumber.get(Cucumber.KEY_SOLO_WRAPPER); solo.sleep(1000); solo.clickOnButton(ProjectManager.getInstance().getWorldActivity().getString(R.string.miscellaneous)); solo.sleep(1000); } @When("^I long click on the \"([^\"]*)\"$") public void I_long_click_on_the_model(String model) { SoloLibgdxWrapper solo = (SoloLibgdxWrapper) Cucumber.get(Cucumber.KEY_SOLO_WRAPPER); if(model.contains("tree")) { solo.clickLongOnEntity(standardTreeModelName); } else if(model.contains("barrel")) { solo.clickLongOnEntity(standardBarrelModelName); } else { throw new PendingException(); } solo.sleep(500); } @Then("^the object context menu should show up$") public void the_object_context_menu_should_show_up() { SoloLibgdxWrapper solo = (SoloLibgdxWrapper) Cucumber.get(Cucumber.KEY_SOLO_WRAPPER); assertFalse(solo.isChooseObjectSplitPaneVisible()); } @When("^I click on the delete button$") public void I_click_on_the_delete_button() { SoloLibgdxWrapper solo = (SoloLibgdxWrapper) Cucumber.get(Cucumber.KEY_SOLO_WRAPPER); solo.clickOnButton(ProjectManager.getInstance().getWorldActivity().getString(R.string.delete)); solo.sleep(500); } @Then("^the \"([^\"]*)\" should be removed from the world view$") public void the_model_should_be_removed_from_the_world_view(String model) { SoloLibgdxWrapper solo = (SoloLibgdxWrapper) Cucumber.get(Cucumber.KEY_SOLO_WRAPPER); if(model.contains("tree")) { assertFalse(solo.isEntityVisible(standardTreeModelName)); } else if(model.contains("barrel")) { assertFalse(solo.isEntityVisible(standardBarrelModelName)); } else { throw new PendingException(); } } @When("^I drag the barrel to the left$") public void I_drag_the_barrel_to_the_left() { SoloLibgdxWrapper solo = (SoloLibgdxWrapper) Cucumber.get(Cucumber.KEY_SOLO_WRAPPER); toPosition.set(200, 0, 200); solo.sleep(1000); solo.dragEntityToPosition(standardBarrelModelName, toPosition); solo.sleep(500); } @Then("^the barrel should move to the corresponding position$") public void the_barrel_should_move_to_the_corresponding_position() { SoloLibgdxWrapper solo = (SoloLibgdxWrapper) Cucumber.get(Cucumber.KEY_SOLO_WRAPPER); assertTrue(solo.isEntityAtPosition(standardBarrelModelName, Math.createPositionMatrix(toPosition))); } @When("^I drag the barrel to the left off the ground$") public void I_drag_the_barrel_to_the_left_off_the_ground() { SoloLibgdxWrapper solo = (SoloLibgdxWrapper) Cucumber.get(Cucumber.KEY_SOLO_WRAPPER); toPosition.set(600, 0, 200); solo.isEntityFallingDown(standardBarrelModelName); solo.sleep(1000); solo.dragEntityToPosition(standardBarrelModelName, toPosition); solo.sleep(500); } @And("^the barrel should fall down because of gravity$") public void the_barrel_should_fall_down_because_of_gravity() { SoloLibgdxWrapper solo = (SoloLibgdxWrapper) Cucumber.get(Cucumber.KEY_SOLO_WRAPPER); solo.isEntityFallingDown(standardBarrelModelName); assertTrue(solo.isEntityFallingDown(standardBarrelModelName)); } }