/* * Catroid: An on-device visual programming system for Android devices * Copyright (C) 2010-2016 The Catrobat Team * (<http://developer.catrobat.org/credits>) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * An additional term exception under section 7 of the GNU Affero * General Public License, version 3, is available at * http://developer.catrobat.org/license_additional_term * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package org.catrobat.catroid.uitest.formulaeditor; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.ListView; import android.widget.TextView; import org.catrobat.catroid.ProjectManager; import org.catrobat.catroid.R; import org.catrobat.catroid.content.Project; import org.catrobat.catroid.content.Script; import org.catrobat.catroid.content.SingleSprite; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.StartScript; import org.catrobat.catroid.content.bricks.Brick; import org.catrobat.catroid.content.bricks.ChangeSizeByNBrick; import org.catrobat.catroid.content.bricks.GlideToBrick; import org.catrobat.catroid.content.bricks.SetVariableBrick; import org.catrobat.catroid.formulaeditor.Formula; import org.catrobat.catroid.formulaeditor.UserVariable; import org.catrobat.catroid.stage.StageActivity; import org.catrobat.catroid.ui.MainMenuActivity; import org.catrobat.catroid.ui.ProgramMenuActivity; import org.catrobat.catroid.ui.ProjectActivity; import org.catrobat.catroid.ui.ScriptActivity; import org.catrobat.catroid.ui.fragment.FormulaEditorDataFragment; import org.catrobat.catroid.ui.fragment.FormulaEditorFragment; import org.catrobat.catroid.uitest.util.BaseActivityInstrumentationTestCase; import org.catrobat.catroid.uitest.util.UiTestUtils; import java.util.ArrayList; import java.util.Locale; public class FormulaEditorDataFragmentVariableTest extends BaseActivityInstrumentationTestCase<MainMenuActivity> { private static final String TAG = FormulaEditorDataFragmentVariableTest.class.getSimpleName(); private static final double SET_USERVARIABLE_TO_BRICK_VALUE = 10d; private static final String USER_VARIABLE_NAME_UNDERLINE_PREFIX = "_userVar1"; private Project project; private Sprite firstSprite; private static final int CHANGE_SIZE_EDIT_TEXT_RID = R.id.brick_change_size_by_edit_text; private static final int SET_VARIABLE_EDIT_TEXT_RID = R.id.brick_set_variable_edit_text; private static final int GLIDE_TO_EDIT_TEXT_RID = R.id.brick_glide_to_edit_text_x; private static final int ACTIONMODE_INDEX = 0; private static final String QUOTE = "\""; public FormulaEditorDataFragmentVariableTest() { super(MainMenuActivity.class); } @Override public void setUp() throws Exception { super.setUp(); createProject(UiTestUtils.DEFAULT_TEST_PROJECT_NAME); UiTestUtils.getIntoScriptActivityFromMainMenu(solo); } public void createProjectSetVariableToBrick(String projectName) throws InterruptedException { project = new Project(null, projectName); firstSprite = new SingleSprite("firstSprite"); project.getDefaultScene().addSprite(firstSprite); ProjectManager.getInstance().setProject(project); ProjectManager.getInstance().setCurrentSprite(firstSprite); ProjectManager.getInstance().getCurrentProject().getDefaultScene().getDataContainer() .addProjectUserVariable(USER_VARIABLE_NAME_UNDERLINE_PREFIX); SetVariableBrick setVariableBrick = new SetVariableBrick(new Formula(SET_USERVARIABLE_TO_BRICK_VALUE), ProjectManager.getInstance().getCurrentProject().getDefaultScene().getDataContainer() .getUserVariable(USER_VARIABLE_NAME_UNDERLINE_PREFIX, firstSprite) ); Script startScript1 = new StartScript(); firstSprite.addScript(startScript1); startScript1.addBrick(setVariableBrick); } public void testAddUserVariableAfterStage() throws InterruptedException { String userVariableString = "userVar1"; solo.goBack(); createProjectSetVariableToBrick("testProject"); solo.clickOnView(solo.getView(R.id.program_menu_button_scripts)); solo.clickOnView(solo.getView(SET_VARIABLE_EDIT_TEXT_RID)); solo.clickOnView(solo.getView(R.id.formula_editor_keyboard_data)); solo.goBack(); solo.clickOnView(solo.getView(R.id.formula_editor_keyboard_ok)); solo.clickOnView(solo.getView(R.id.button_play)); solo.sleep(500); assertTrue("StageActivity not shown: ", solo.waitForActivity(StageActivity.class.getSimpleName())); solo.goBack(); solo.waitForView(solo.getView(R.id.stage_dialog_button_back)); solo.clickOnView(solo.getView(R.id.stage_dialog_button_back)); assertTrue("ScriptActivity not shown: ", solo.waitForActivity(ScriptActivity.class.getSimpleName())); solo.sleep(500); solo.clickOnView(solo.getView(SET_VARIABLE_EDIT_TEXT_RID)); assertTrue("FormulaEditorFragment not shown: ", solo.waitForFragmentByTag(FormulaEditorFragment.FORMULA_EDITOR_FRAGMENT_TAG)); solo.clickOnView(solo.getView(R.id.formula_editor_keyboard_data)); assertTrue("FormulaEditorDataFragment not shown: ", solo.waitForFragmentByTag(FormulaEditorDataFragment.USER_DATA_TAG)); UiTestUtils.createUserVariableFromDataFragment(solo, userVariableString, false); assertTrue("Data Fragment not shown", solo.waitForText(solo.getString(R.string.formula_editor_data))); ListView listView = getVariableListView(); assertTrue("UserVariable not added!", listView.getCount() == 2); } public void testModifyUserVariableValuesInStage() throws InterruptedException { solo.goBack(); createProjectSetVariableToBrick("testProject"); solo.waitForView(solo.getView(R.id.program_menu_button_scripts)); solo.clickOnView(solo.getView(R.id.program_menu_button_scripts)); solo.waitForActivity(ScriptActivity.class.getSimpleName()); solo.clickOnView(solo.getView(R.id.button_play)); solo.waitForActivity(StageActivity.class.getSimpleName()); solo.sleep(250); solo.goBack(); solo.waitForView(solo.getView(R.id.stage_dialog_button_back)); solo.clickOnView(solo.getView(R.id.stage_dialog_button_back)); solo.waitForActivity(ScriptActivity.class.getSimpleName()); solo.goBack(); solo.waitForActivity(ProgramMenuActivity.class.getSimpleName()); solo.clickOnView(solo.getView(R.id.program_menu_button_scripts)); solo.waitForActivity(ScriptActivity.class.getSimpleName()); solo.clickOnView(solo.getView(SET_VARIABLE_EDIT_TEXT_RID)); solo.waitForFragmentByTag(FormulaEditorFragment.FORMULA_EDITOR_FRAGMENT_TAG); solo.clickOnView(solo.getView(R.id.formula_editor_keyboard_data)); solo.waitForFragmentByTag(FormulaEditorDataFragment.USER_DATA_TAG); ListView listView = getVariableListView(); UserVariable userVariable = (UserVariable) listView.getItemAtPosition(0); assertEquals("Value of UserVariable not saved after stage1!", SET_USERVARIABLE_TO_BRICK_VALUE, userVariable.getValue()); solo.goBack(); solo.waitForFragmentByTag(FormulaEditorFragment.FORMULA_EDITOR_FRAGMENT_TAG); solo.clickOnView(solo.getView(R.id.formula_editor_keyboard_ok)); solo.waitForActivity(ScriptActivity.class.getSimpleName()); solo.goBack(); solo.waitForActivity(ProgramMenuActivity.class.getSimpleName()); solo.clickOnView(solo.getView(R.id.button_play)); solo.waitForActivity(StageActivity.class.getSimpleName()); solo.sleep(250); solo.goBack(); solo.waitForView(solo.getView(R.id.stage_dialog_button_back)); solo.clickOnView(solo.getView(R.id.stage_dialog_button_back)); solo.waitForActivity(ProgramMenuActivity.class.getSimpleName()); solo.clickOnView(solo.getView(R.id.program_menu_button_scripts)); solo.waitForActivity(ScriptActivity.class.getSimpleName()); solo.clickOnView(solo.getView(SET_VARIABLE_EDIT_TEXT_RID)); solo.waitForFragmentByTag(FormulaEditorFragment.FORMULA_EDITOR_FRAGMENT_TAG); solo.clickOnView(solo.getView(R.id.formula_editor_keyboard_data)); solo.waitForFragmentByTag(FormulaEditorDataFragment.USER_DATA_TAG); listView = getVariableListView(); userVariable = (UserVariable) listView.getItemAtPosition(0); assertTrue("Value of UserVariable not saved after stage2!", ((Double) userVariable.getValue()).compareTo(SET_USERVARIABLE_TO_BRICK_VALUE) == 0); solo.goBack(); solo.waitForFragmentByTag(FormulaEditorFragment.FORMULA_EDITOR_FRAGMENT_TAG); solo.clickOnView(solo.getView(R.id.formula_editor_keyboard_ok)); solo.waitForActivity(ScriptActivity.class.getSimpleName()); solo.goBack(); solo.waitForActivity(ProgramMenuActivity.class.getSimpleName()); solo.goBack(); solo.waitForActivity(ProjectActivity.class.getSimpleName()); solo.clickOnView(solo.getView(R.id.button_play)); solo.waitForActivity(StageActivity.class.getSimpleName()); solo.sleep(250); solo.goBack(); solo.waitForView(solo.getView(R.id.stage_dialog_button_back)); solo.clickOnView(solo.getView(R.id.stage_dialog_button_back)); solo.waitForActivity(ProjectActivity.class.getSimpleName()); solo.goBack(); solo.waitForActivity(MainMenuActivity.class.getSimpleName()); UiTestUtils.getIntoScriptActivityFromMainMenu(solo); solo.clickOnView(solo.getView(SET_VARIABLE_EDIT_TEXT_RID)); solo.waitForFragmentByTag(FormulaEditorFragment.FORMULA_EDITOR_FRAGMENT_TAG); solo.clickOnView(solo.getView(R.id.formula_editor_keyboard_data)); solo.waitForFragmentByTag(FormulaEditorDataFragment.USER_DATA_TAG); listView = getVariableListView(); userVariable = (UserVariable) listView.getItemAtPosition(0); assertTrue("Value of UserVariable not saved after stage3!", ((Double) userVariable.getValue()).compareTo(SET_USERVARIABLE_TO_BRICK_VALUE) == 0); TextView textViewValue = (TextView) solo.getView(R.id.fragment_formula_editor_data_list_item_value_text_view); assertTrue("Value of UserVariable not displayed in DataFragment after stage3!", ((Double) Double.parseDouble(textViewValue.getText().toString())).compareTo(SET_USERVARIABLE_TO_BRICK_VALUE) == 0); } public void testCreateUserVariable() { String itemString = "zzz"; solo.clickOnView(solo.getView(CHANGE_SIZE_EDIT_TEXT_RID)); solo.clickOnView(solo.getView(R.id.formula_editor_keyboard_data)); assertTrue("Data Fragment not shown", solo.waitForText(solo.getString(R.string.formula_editor_data))); UiTestUtils.createUserVariableFromDataFragment(solo, itemString, false); solo.waitForText(itemString); solo.clickOnText(itemString); itemString = QUOTE + itemString + QUOTE; solo.waitForView(solo.getView(R.id.formula_editor_edit_field)); EditText text = (EditText) solo.getView(R.id.formula_editor_edit_field); String editTextString = text.getText().toString(); assertEquals("Wrong text in EditText", itemString, editTextString.substring(0, itemString.length())); solo.clickOnView(solo.getView(R.id.formula_editor_keyboard_delete)); ProjectManager.getInstance().getCurrentProject().getDefaultScene().getDataContainer().deleteUserVariableByName("zzz"); } public void testDeleteUserVariableWithLongPress() { String itemString = "del"; solo.clickOnView(solo.getView(CHANGE_SIZE_EDIT_TEXT_RID)); solo.clickOnView(solo.getView(R.id.formula_editor_keyboard_data)); assertTrue("Data Fragment not shown", solo.waitForText(solo.getString(R.string.formula_editor_data))); UiTestUtils.createUserVariableFromDataFragment(solo, itemString, true); assertTrue("Data Fragment not shown", solo.waitForText(solo.getString(R.string.formula_editor_data))); solo.clickOnText(itemString); solo.waitForView(solo.getView(R.id.formula_editor_edit_field)); EditText text = (EditText) solo.getView(R.id.formula_editor_edit_field); itemString = QUOTE + itemString + QUOTE; Log.i(TAG, "editText: " + text.getText().toString()); assertEquals("Wrong button clicked", itemString, text.getText().toString().substring(0, itemString.length())); solo.clickOnView(solo.getView(R.id.formula_editor_keyboard_delete)); solo.clickOnView(solo.getView(R.id.formula_editor_keyboard_data)); itemString = itemString.replace(QUOTE, ""); assertTrue("Data Fragment not shown", solo.waitForText(solo.getString(R.string.formula_editor_data))); solo.clickLongOnText(itemString); assertTrue("Delete not shown", solo.waitForText(solo.getString(R.string.delete))); solo.goBack(); assertTrue("Data Fragment not shown", solo.waitForText(solo.getString(R.string.formula_editor_data))); solo.clickLongOnText(itemString); assertTrue("Delete not shown", solo.waitForText(solo.getString(R.string.delete))); solo.clickOnText(solo.getString(R.string.delete)); assertTrue("Data Fragment not shown", solo.waitForText(solo.getString(R.string.formula_editor_data))); ListView userVariableListView = getVariableListView(); assertEquals("Wrong number of UserVariables deleted", 1, userVariableListView.getAdapter().getCount()); ProjectManager.getInstance().getCurrentProject().getDefaultScene().getDataContainer().deleteUserVariableByName("del"); } public void testDeleteUserVariableWithMultipleChoice() { String itemString = "1stdel"; String itemString2nd = "myvar"; String itemString3rd = "2ndDel"; solo.clickOnView(solo.getView(CHANGE_SIZE_EDIT_TEXT_RID)); solo.clickOnView(solo.getView(R.id.formula_editor_keyboard_data)); assertTrue("Data Fragment not shown", solo.waitForText(solo.getString(R.string.formula_editor_data))); UiTestUtils.createUserVariableFromDataFragment(solo, itemString, true); UiTestUtils.createUserVariableFromDataFragment(solo, itemString2nd, true); UiTestUtils.createUserVariableFromDataFragment(solo, itemString3rd, false); String delete = solo.getString(R.string.delete); UiTestUtils.openActionMode(solo, delete, R.id.formula_editor_data_item_delete); assertTrue("Data Fragment not shown", solo.waitForText(solo.getString(R.string.formula_editor_data))); solo.clickOnCheckBox(0); solo.clickOnCheckBox(1); solo.clickOnImage(ACTIONMODE_INDEX); solo.sleep(250); ListView userVariableListView = getVariableListView(); assertEquals("Wrong number of UserVariables deleted", 1, userVariableListView.getAdapter().getCount()); UserVariable myVar = (UserVariable) userVariableListView.getAdapter().getItem(0); assertEquals(itemString2nd + " deleted, but should not!", myVar.getName(), itemString2nd); assertFalse(itemString + "not deleted", solo.searchText(itemString, true)); assertFalse(itemString3rd + "not deleted", solo.searchText(itemString3rd, true)); ProjectManager.getInstance().getCurrentProject().getDefaultScene().getDataContainer().deleteUserVariableByName(itemString); ProjectManager.getInstance().getCurrentProject().getDefaultScene().getDataContainer().deleteUserVariableByName(itemString2nd); ProjectManager.getInstance().getCurrentProject().getDefaultScene().getDataContainer().deleteUserVariableByName(itemString3rd); } public void testKeyCodeBackOnContextMode() { String itemString = "myvar1"; String itemString2nd = "myvar2"; String itemString3rd = "myvar3"; solo.clickOnView(solo.getView(CHANGE_SIZE_EDIT_TEXT_RID)); solo.clickOnView(solo.getView(R.id.formula_editor_keyboard_data)); assertTrue("Data Fragment not shown", solo.waitForText(solo.getString(R.string.formula_editor_data))); UiTestUtils.createUserVariableFromDataFragment(solo, itemString, true); UiTestUtils.createUserVariableFromDataFragment(solo, itemString2nd, true); UiTestUtils.createUserVariableFromDataFragment(solo, itemString3rd, true); solo.clickOnView(solo.getView(R.id.formula_editor_data_item_delete)); assertTrue("Data Fragment not shown", solo.waitForText(solo.getString(R.string.formula_editor_data))); solo.clickOnCheckBox(0); solo.clickOnCheckBox(1); solo.goBack(); assertTrue("KeyCode Back deleted checked item: " + itemString, solo.searchText(itemString, true)); assertTrue("KeyCode Back deleted checked item: " + itemString2nd, solo.searchText(itemString2nd, true)); assertTrue("KeyCode Back deleted checked item: " + itemString3rd, solo.searchText(itemString3rd, true)); } public void testScopeOfUserVariable() { String itemString = "local"; String itemString2nd = "global"; solo.clickOnView(solo.getView(CHANGE_SIZE_EDIT_TEXT_RID)); solo.clickOnView(solo.getView(R.id.formula_editor_keyboard_data)); assertTrue("Data Fragment not shown", solo.waitForText(solo.getString(R.string.formula_editor_data))); UiTestUtils.createUserVariableFromDataFragment(solo, itemString, false); assertTrue(itemString + " not found:", solo.searchText(itemString, true)); UiTestUtils.createUserVariableFromDataFragment(solo, itemString2nd, true); assertTrue(itemString2nd + " not found:", solo.searchText(itemString2nd, true)); solo.goBack(); solo.goBack(); solo.goBack(); solo.goBack(); solo.goBack(); solo.sleep(400); UiTestUtils.getIntoScriptActivityFromMainMenu(solo, 2); solo.clickOnView(solo.getView(GLIDE_TO_EDIT_TEXT_RID)); solo.clickOnView(solo.getView(R.id.formula_editor_keyboard_data)); assertTrue("Data Fragment not shown", solo.waitForText(solo.getString(R.string.formula_editor_data))); assertFalse(itemString + " should not be found:", solo.searchText(itemString, true)); assertTrue(itemString2nd + " not found:", solo.searchText(itemString2nd, true)); ProjectManager.getInstance().getCurrentProject().getDefaultScene().getDataContainer().deleteUserVariableByName("local"); ProjectManager.getInstance().getCurrentProject().getDefaultScene().getDataContainer().deleteUserVariableByName("global"); } public void testCreateUserVariableDoubleName() { solo.clickOnView(solo.getView(CHANGE_SIZE_EDIT_TEXT_RID)); solo.clickOnView(solo.getView(R.id.formula_editor_keyboard_data)); assertTrue("Data Fragment not shown", solo.waitForText(solo.getString(R.string.formula_editor_data))); String itemString = "var1"; UiTestUtils.createUserVariableFromDataFragment(solo, itemString, true); assertTrue("Data Fragment not shown", solo.waitForText(solo.getString(R.string.formula_editor_data))); solo.clickOnView(solo.getView(R.id.button_add)); assertTrue("Add Data Dialog not shown", solo.waitForText(solo.getString(R.string.formula_editor_data_dialog_title))); EditText editText = (EditText) solo.getView(R.id.dialog_formula_editor_data_name_edit_text); solo.enterText(editText, itemString); assertTrue("Toast not shown when UserVariableName already exists", solo.waitForText(solo.getString(R.string.formula_editor_existing_variable), 0, 5000)); solo.waitForText(itemString); solo.clearEditText(editText); solo.enterText(editText, "var2"); assertTrue("Inserted variable not shown", solo.waitForText("var2")); solo.clickOnButton(solo.getString(R.string.ok)); ProjectManager.getInstance().getCurrentProject().getDefaultScene().getDataContainer().deleteUserVariableByName("var1"); ProjectManager.getInstance().getCurrentProject().getDefaultScene().getDataContainer().deleteUserVariableByName("var2"); } public void testVisibilityOfMenuItems() { solo.clickOnView(solo.getView(CHANGE_SIZE_EDIT_TEXT_RID)); solo.clickOnView(solo.getView(R.id.formula_editor_keyboard_data)); assertTrue("Data Fragment not shown", solo.waitForText(solo.getString(R.string.formula_editor_data))); ArrayList<View> currentViews = solo.getCurrentViews(); ArrayList<Integer> ids = new ArrayList<Integer>(); for (View view : currentViews) { ids.add(view.getId()); } assertTrue("MenuItem should have been found!", solo.getView(R.id.formula_editor_data_item_delete) != null); assertFalse("MenuItem should not be found!", ids.contains(R.id.copy)); assertFalse("MenuItem should not be found!", ids.contains(R.id.cut)); assertFalse("MenuItem should not be found!", ids.contains(R.id.insert_below)); assertFalse("MenuItem should not be found!", ids.contains(R.id.move)); assertFalse("MenuItem should not be found!", ids.contains(R.id.rename)); assertFalse("MenuItem should not be found!", ids.contains(R.id.show_details)); assertFalse("MenuItem should not be found!", ids.contains(R.id.settings)); } public void testEmptyUserVariableCreation() { solo.clickOnView(solo.getView(CHANGE_SIZE_EDIT_TEXT_RID)); solo.clickOnView(solo.getView(R.id.formula_editor_keyboard_data)); assertTrue("Data Fragment not shown", solo.waitForText(solo.getString(R.string.formula_editor_data))); solo.clickOnView(solo.getView(R.id.button_add)); assertTrue("Add Data Dialog not shown", solo.waitForText(solo.getString(R.string.formula_editor_data_dialog_title))); EditText editText = (EditText) solo.getView(R.id.dialog_formula_editor_data_name_edit_text); solo.enterText(editText, ""); Button ok = solo.getButton(solo.getString(R.string.ok)); assertFalse("Ok-Button should not be enabled!", ok.isEnabled()); solo.enterText(editText, "easy"); ok = solo.getButton(solo.getString(R.string.ok)); assertTrue("Ok-Button should be enabled!", ok.isEnabled()); solo.enterText(editText, ""); ok = solo.getButton(solo.getString(R.string.ok)); assertFalse("Ok-Button should not be enabled!", ok.isEnabled()); } public void testVariableListHeadlines() { String local = "local"; String global = "global"; String globalHeadline = solo.getString(R.string.formula_editor_dialog_for_all_sprites).toUpperCase( Locale.getDefault()); String localHeadline = solo.getString(R.string.formula_editor_dialog_for_this_sprite_only).toUpperCase( Locale.getDefault()); solo.clickOnView(solo.getView(CHANGE_SIZE_EDIT_TEXT_RID)); solo.clickOnView(solo.getView(R.id.formula_editor_keyboard_data)); assertTrue("Data Fragment not shown", solo.waitForText(solo.getString(R.string.formula_editor_data))); UiTestUtils.createUserVariableFromDataFragment(solo, global, true); assertTrue("Global Headline not shown", solo.searchText(globalHeadline, true)); UiTestUtils.createUserVariableFromDataFragment(solo, local, false); assertTrue("Local Headline not shown", solo.searchText(localHeadline, true)); solo.clickLongOnText(global); solo.waitForText(solo.getString(R.string.delete)); solo.clickOnText(solo.getString(R.string.delete)); assertFalse("Global Headline still shown", solo.searchText(globalHeadline, true)); solo.clickLongOnText(local); solo.waitForText(solo.getString(R.string.delete)); solo.clickOnText(solo.getString(R.string.delete)); assertFalse("Local Headline still shown", solo.searchText(localHeadline, true)); } public void testSelectAllVariablesActionModeButton() { solo.clickOnView(solo.getView(CHANGE_SIZE_EDIT_TEXT_RID)); solo.clickOnView(solo.getView(R.id.formula_editor_keyboard_data)); assertTrue("Data Fragment not shown", solo.waitForText(solo.getString(R.string.formula_editor_data))); UiTestUtils.createUserVariableFromDataFragment(solo, "global", true); UiTestUtils.createUserVariableFromDataFragment(solo, "local", false); String selectAll = solo.getString(R.string.select_all).toUpperCase(Locale.getDefault()); solo.sleep(400); UiTestUtils.openActionMode(solo, solo.getString(R.string.delete), R.id.formula_editor_data_item_delete); assertTrue("Select All is not shown", solo.getView(R.id.select_all).isShown()); solo.clickOnText(selectAll); solo.sleep(100); assertFalse("Select All is still shown", solo.getView(R.id.select_all).isShown()); UiTestUtils.clickOnCheckBox(solo, 0); assertTrue("Select All is not shown", solo.getView(R.id.select_all).isShown()); UiTestUtils.clickOnCheckBox(solo, 1); assertTrue("Select All is not shown", solo.getView(R.id.select_all).isShown()); UiTestUtils.clickOnCheckBox(solo, 0); UiTestUtils.clickOnCheckBox(solo, 1); assertFalse("Select All is still shown", solo.getView(R.id.select_all).isShown()); } private void createProject(String projectName) throws InterruptedException { project = new Project(null, projectName); firstSprite = new SingleSprite("firstSprite"); Sprite secondSprite = new SingleSprite("secondSprite"); project.getDefaultScene().addSprite(firstSprite); project.getDefaultScene().addSprite(secondSprite); ProjectManager.getInstance().setProject(project); ProjectManager.getInstance().setCurrentSprite(firstSprite); Script startScript1 = new StartScript(); Script startScript2 = new StartScript(); Brick changeBrick = new ChangeSizeByNBrick(0); Brick glideToBrick = new GlideToBrick(0, 0, 0); firstSprite.addScript(startScript1); secondSprite.addScript(startScript2); startScript1.addBrick(changeBrick); startScript2.addBrick(glideToBrick); } private ListView getVariableListView() { return solo.getCurrentViews(ListView.class).get(1); } }