/*
* 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 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.AddItemToUserListBrick;
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.formulaeditor.Formula;
import org.catrobat.catroid.formulaeditor.UserList;
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 FormulaEditorDataFragmentListTest extends BaseActivityInstrumentationTestCase<MainMenuActivity> {
private static final String TAG = FormulaEditorDataFragmentListTest.class.getSimpleName();
private static final double ADD_VALUE_TO_LIST = 10d;
private static final String USER_LIST_NAME = "_userList1";
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 ADD_ITEM_TO_USERLIST_EDIT_TEXT_RID = R.id.brick_add_item_to_userlist_edit_text;
private static final int GLIDE_TO_EDIT_TEXT_RID = R.id.brick_glide_to_edit_text_x;
private static final int ACTION_MODE_INDEX = 0;
private static final String LIST_SYMBOL_LEFT = "*";
private static final String LIST_SYMBOL_RIGHT = "*";
public FormulaEditorDataFragmentListTest() {
super(MainMenuActivity.class);
}
@Override
public void setUp() throws Exception {
super.setUp();
createProject(UiTestUtils.DEFAULT_TEST_PROJECT_NAME);
UiTestUtils.getIntoScriptActivityFromMainMenu(solo);
}
public void createProjectAndAddAddItemToListBrick(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()
.addProjectUserList(USER_LIST_NAME);
AddItemToUserListBrick addItemToUserListBrick = new AddItemToUserListBrick(new Formula(ADD_VALUE_TO_LIST),
ProjectManager.getInstance().getCurrentProject().getDefaultScene().getDataContainer()
.getUserList(USER_LIST_NAME, firstSprite)
);
Script startScript1 = new StartScript();
firstSprite.addScript(startScript1);
startScript1.addBrick(addItemToUserListBrick);
}
public void testAddUserListAfterStage() throws InterruptedException {
String userListName = "userList1";
solo.goBack();
createProjectAndAddAddItemToListBrick("testProject");
solo.clickOnView(solo.getView(R.id.program_menu_button_scripts));
solo.clickOnView(solo.getView(ADD_ITEM_TO_USERLIST_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(ADD_ITEM_TO_USERLIST_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("FormulaEditorUserListFragment not shown: ",
solo.waitForFragmentByTag(FormulaEditorDataFragment.USER_DATA_TAG));
UiTestUtils.createUserListFromDataFragment(solo, userListName, false);
assertTrue("Data Fragment not shown", solo.waitForText(solo.getString(R.string.formula_editor_data)));
ListView listView = getDataListListView();
assertEquals("UserList not added!", 2, listView.getCount());
}
public void testModifyUserListValuesInStage() throws InterruptedException {
solo.goBack();
createProjectAndAddAddItemToListBrick("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(500);
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(ADD_ITEM_TO_USERLIST_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);
solo.clickOnView(solo.getView(R.id.fragment_formula_editor_data_list_item_spinner));
ListView currentItemsListView = solo.getCurrentViews(ListView.class).get(0);
assertEquals("Wrong number of list items in List after stage!", 2, currentItemsListView.getAdapter().getCount());
solo.goBack();
ListView listView = getDataListListView();
UserList userList = (UserList) listView.getItemAtPosition(0);
assertEquals("Wrong size of User List after stage!", 1, userList.getList().size());
assertEquals("Value of UserList not saved after stage1!", String.valueOf(ADD_VALUE_TO_LIST),
userList.getList().get(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.clickOnView(solo.getView(R.id.button_play));
solo.waitForActivity(StageActivity.class.getSimpleName());
solo.sleep(500);
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(ADD_ITEM_TO_USERLIST_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 = getDataListListView();
userList = (UserList) listView.getItemAtPosition(0);
assertEquals("Value of UserList not saved after stage2!", String.valueOf(ADD_VALUE_TO_LIST),
userList.getList().get(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(500);
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(ADD_ITEM_TO_USERLIST_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 = getDataListListView();
userList = (UserList) listView.getItemAtPosition(0);
assertEquals("Value of UserList not saved after stage3!", String.valueOf(ADD_VALUE_TO_LIST),
userList.getList().get(0));
}
public void testCreateUserList() {
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)));
ListView dataListListView = getDataListListView();
assertEquals("Wrong number of Data items " + dataListListView.getAdapter().getItem(0), 1, dataListListView
.getAdapter().getCount());
assertNull("Data item should be null, on initialisation!", dataListListView.getAdapter().getItem(0));
UiTestUtils.createUserListFromDataFragment(solo, itemString, false);
solo.waitForText(itemString);
solo.clickOnText(itemString);
itemString = LIST_SYMBOL_LEFT + itemString + LIST_SYMBOL_RIGHT;
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().deleteUserListByName("zzz");
}
public void testDeleteUserListWithLongPress() {
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.createUserListFromDataFragment(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 = LIST_SYMBOL_LEFT + itemString + LIST_SYMBOL_RIGHT;
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(LIST_SYMBOL_LEFT, "");
itemString = itemString.replace(LIST_SYMBOL_RIGHT, "");
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 userListsListView = getDataListListView();
assertEquals("Wrong number of UserLists deleted", 1, userListsListView.getAdapter().getCount());
assertNull("Wrong number of UserLists deleted", userListsListView.getAdapter().getItem(0));
ProjectManager.getInstance().getCurrentProject().getDefaultScene().getDataContainer().deleteUserListByName("del");
}
public void testDeleteUserListWithMultipleChoice() {
String itemString = "1stdel";
String itemString2nd = "myList";
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.createUserListFromDataFragment(solo, itemString, true);
UiTestUtils.createUserListFromDataFragment(solo, itemString2nd, true);
UiTestUtils.createUserListFromDataFragment(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(ACTION_MODE_INDEX);
solo.sleep(250);
ListView userListListView = getDataListListView();
assertEquals("Wrong number of UserLists deleted", 1, userListListView.getAdapter().getCount());
UserList userList = (UserList) userListListView.getAdapter().getItem(0);
assertEquals(itemString2nd + " deleted, but should not!", userList.getName(), itemString2nd);
assertFalse(itemString + "not deleted", solo.searchText(itemString, true));
assertFalse(itemString3rd + "not deleted", solo.searchText(itemString3rd, true));
ProjectManager.getInstance().getCurrentProject().getDefaultScene().getDataContainer().deleteUserListByName(itemString);
ProjectManager.getInstance().getCurrentProject().getDefaultScene().getDataContainer().deleteUserListByName(itemString2nd);
ProjectManager.getInstance().getCurrentProject().getDefaultScene().getDataContainer().deleteUserListByName(itemString3rd);
}
public void testDustbinNotVisible() {
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> views = solo.getCurrentViews();
ArrayList<Integer> ids = new ArrayList<Integer>();
for (View view : views) {
ids.add(view.getId());
}
assertFalse("Dustbin icon found in Actionbar", ids.contains(R.id.formula_editor_data_item_delete));
}
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.createUserListFromDataFragment(solo, itemString, true);
UiTestUtils.createUserListFromDataFragment(solo, itemString2nd, true);
UiTestUtils.createUserListFromDataFragment(solo, itemString3rd, true);
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.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 testScopeOfUserList() {
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.createUserListFromDataFragment(solo, itemString, false);
assertTrue(itemString + " not found:", solo.searchText(itemString, true));
UiTestUtils.createUserListFromDataFragment(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().deleteUserListByName("local");
ProjectManager.getInstance().getCurrentProject().getDefaultScene().getDataContainer().deleteUserListByName("global");
}
public void testCreateUserListDoubleName() {
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.createUserListFromDataFragment(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 UserList Dialog not shown",
solo.waitForText(solo.getString(R.string.formula_editor_data_dialog_title)));
solo.clickOnView(solo.getView(R.id.dialog_formula_editor_data_is_list_checkbox));
EditText editText = (EditText) solo.getView(R.id.dialog_formula_editor_data_name_edit_text);
solo.enterText(editText, itemString);
assertTrue("Toast not shown when UserListName already exists",
solo.waitForText(solo.getString(R.string.formula_editor_existing_data_item), 0, 5000));
solo.waitForText(itemString);
solo.clearEditText(editText);
solo.enterText(editText, "var2");
assertTrue("Inserted list not shown", solo.waitForText("var2"));
solo.clickOnButton(solo.getString(R.string.ok));
ProjectManager.getInstance().getCurrentProject().getDefaultScene().getDataContainer().deleteUserListByName("var1");
ProjectManager.getInstance().getCurrentProject().getDefaultScene().getDataContainer().deleteUserListByName("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.waitForFragmentByTag(FormulaEditorDataFragment.USER_DATA_TAG));
ArrayList<View> currentViews = solo.getCurrentViews();
ArrayList<Integer> ids = new ArrayList<Integer>();
for (View view : currentViews) {
ids.add(view.getId());
}
assertFalse("MenuItem should not be found!", ids.contains(R.id.formula_editor_data_item_delete));
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 testEmptyUserListCreation() {
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 UserList 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), true);
assertFalse("Ok-Button should not be enabled!", ok.isEnabled());
solo.enterText(editText, "easy");
ok = solo.getButton(solo.getString(R.string.ok), true);
assertTrue("Ok-Button should be enabled!", ok.isEnabled());
solo.enterText(editText, "");
ok = solo.getButton(solo.getString(R.string.ok), true);
assertFalse("Ok-Button should not be enabled!", ok.isEnabled());
}
public void testUserListListHeadlines() {
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.createUserListFromDataFragment(solo, global, true);
assertTrue("Global Headline not shown", solo.searchText(globalHeadline, true));
UiTestUtils.createUserListFromDataFragment(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 testSelectAllActionModeButton() {
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.createUserListFromDataFragment(solo, "global", true);
UiTestUtils.createUserListFromDataFragment(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(200);
assertFalse("Select All is still shown", solo.getView(R.id.select_all).isShown());
solo.clickOnCheckBox(0);
solo.sleep(200);
assertTrue("Select All is not shown", solo.getView(R.id.select_all).isShown());
solo.clickOnCheckBox(1);
solo.sleep(200);
assertTrue("Select All is not shown", solo.getView(R.id.select_all).isShown());
solo.clickOnCheckBox(0);
solo.clickOnCheckBox(1);
solo.sleep(200);
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 getDataListListView() {
return solo.getCurrentViews(ListView.class, solo.getView(R.id.formula_editor_data_list)).get(0);
}
}