diff --git a/catroid/src/org/catrobat/catroid/content/bricks/ChangeVariableBrick.java b/catroid/src/org/catrobat/catroid/content/bricks/ChangeVariableBrick.java index e1390dd8e4d..7b075ca0550 100644 --- a/catroid/src/org/catrobat/catroid/content/bricks/ChangeVariableBrick.java +++ b/catroid/src/org/catrobat/catroid/content/bricks/ChangeVariableBrick.java @@ -248,7 +248,7 @@ public ChangeVariableBrick copyBrickForSprite(Sprite sprite) { @Override public ChangeVariableBrick clone() { ChangeVariableBrick clonedBrick = new ChangeVariableBrick(getFormulaWithBrickField( - BrickField.VARIABLE_CHANGE).clone(), null, inUserBrick); + BrickField.VARIABLE_CHANGE).clone(), userVariable, inUserBrick); return clonedBrick; } diff --git a/catroid/src/org/catrobat/catroid/content/bricks/SetVariableBrick.java b/catroid/src/org/catrobat/catroid/content/bricks/SetVariableBrick.java index 6d820a83b01..e6d15081737 100644 --- a/catroid/src/org/catrobat/catroid/content/bricks/SetVariableBrick.java +++ b/catroid/src/org/catrobat/catroid/content/bricks/SetVariableBrick.java @@ -272,7 +272,7 @@ public SetVariableBrick copyBrickForSprite(Sprite sprite) { @Override public SetVariableBrick clone() { SetVariableBrick clonedBrick = new SetVariableBrick(getFormulaWithBrickField(BrickField.VARIABLE) - .clone(), null); + .clone(), userVariable); return clonedBrick; } diff --git a/catroidTest/src/org/catrobat/catroid/uitest/content/brick/ChangeVariableTest.java b/catroidTest/src/org/catrobat/catroid/uitest/content/brick/ChangeVariableTest.java index 256ec812947..8e5a5b9a571 100644 --- a/catroidTest/src/org/catrobat/catroid/uitest/content/brick/ChangeVariableTest.java +++ b/catroidTest/src/org/catrobat/catroid/uitest/content/brick/ChangeVariableTest.java @@ -177,6 +177,59 @@ public void testCreateUserVariableInFormulaEditor() { assertTrue("UserVariable Name not as expected", userVariable.getName().equals(userVariableName)); } + public void testViewInFormulaEditorAfterClone(){ + + String userVariableName = "testVariable1"; + String userVariableNameTwo = "testVariable2"; + + solo.clickOnView(solo.getView(R.id.brick_change_variable_edit_text)); + solo.waitForFragmentByTag(FormulaEditorFragment.FORMULA_EDITOR_FRAGMENT_TAG); + solo.clickOnView(solo.getView(R.id.formula_editor_keyboard_data)); + assertTrue("Data Fragment not shown", solo.waitForFragmentByTag(FormulaEditorDataFragment.USER_DATA_TAG)); + + 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, userVariableName); + finishUserVariableCreationSafeButSlow(userVariableName, true); + + solo.goBack(); + solo.clickOnView(solo.getView(R.id.formula_editor_keyboard_ok)); + + solo.clickOnText(solo.getString(R.string.brick_change_variable)); + solo.clickOnText(solo.getString(R.string.brick_context_dialog_copy_brick)); + + solo.clickOnText(solo.getString(R.string.brick_change_variable)); + + + solo.clickOnText(userVariableName); + + solo.clickOnText(solo.getString(R.string.brick_variable_spinner_create_new_variable)); + + + EditText editTextTwo = (EditText) solo.getView(R.id.dialog_formula_editor_data_name_edit_text); + + solo.enterText(editTextTwo, userVariableNameTwo); + solo.clickOnButton(solo.getString(R.string.ok)); + + solo.clickOnText(solo.getString(R.string.brick_change_variable)); + solo.clickOnText(solo.getString(R.string.brick_context_dialog_move_brick)); + + ArrayList yPosition = UiTestUtils.getListItemYPositions(solo, 0); + int addedYPosition = UiTestUtils.getAddedListItemYPosition(solo); + solo.drag(20, 20, addedYPosition, yPosition.get(yPosition.size() - 1) + 20, 20); + + solo.clickOnText(solo.getString(R.string.brick_change_variable)); + solo.clickOnText(solo.getString(R.string.brick_context_dialog_formula_edit_brick)); + + assertTrue("Uservariable in view is not right displayed , maybe clone() is broken...", + solo.searchText(userVariableName, true)); + + solo.sleep(2000); + } + private void createProject() { project = new Project(null, UiTestUtils.DEFAULT_TEST_PROJECT_NAME); Sprite sprite = new Sprite("cat"); diff --git a/catroidTest/src/org/catrobat/catroid/uitest/content/brick/SetVariableTest.java b/catroidTest/src/org/catrobat/catroid/uitest/content/brick/SetVariableTest.java index b1df4d7c326..5a501824bde 100644 --- a/catroidTest/src/org/catrobat/catroid/uitest/content/brick/SetVariableTest.java +++ b/catroidTest/src/org/catrobat/catroid/uitest/content/brick/SetVariableTest.java @@ -179,7 +179,61 @@ public void testCreateUserVariableInFormulaEditor() { assertNotNull("UserVariable is null", userVariable); assertTrue("UserVariable Name not as expected", userVariable.getName().equals(userVariableName)); } - + + public void testViewInFormulaEditorAfterClone(){ + String userVariableName = "testVariable1"; + String userVariableNameTwo = "testVariable2"; + + solo.clickOnView(solo.getView(R.id.brick_set_variable_edit_text)); + solo.waitForFragmentByTag(FormulaEditorFragment.FORMULA_EDITOR_FRAGMENT_TAG); + solo.clickOnView(solo.getView(R.id.formula_editor_keyboard_data)); + assertTrue("Data Fragment not shown", solo.waitForFragmentByTag(FormulaEditorDataFragment.USER_DATA_TAG)); + + 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, userVariableName); + finishUserVariableCreationSafeButSlow(userVariableName, true); + + solo.goBack(); + solo.clickOnView(solo.getView(R.id.formula_editor_keyboard_ok)); + + solo.clickOnView(solo.getView(R.id.button_add)); + solo.clickOnText(solo.getString(R.string.category_data)); + + solo.clickOnText(solo.getString(R.string.brick_set_variable)); + + solo.clickOnText(solo.getString(R.string.brick_set_variable)); + + + solo.clickOnText(userVariableName); + + solo.clickOnText(solo.getString(R.string.brick_variable_spinner_create_new_variable)); + + + EditText editTextTwo = (EditText) solo.getView(R.id.dialog_formula_editor_data_name_edit_text); + + solo.enterText(editTextTwo, userVariableNameTwo); + solo.clickOnButton(solo.getString(R.string.ok)); + + solo.clickOnText(solo.getString(R.string.brick_set_variable)); + solo.clickOnText(solo.getString(R.string.brick_context_dialog_move_brick)); + + ArrayList yPosition = UiTestUtils.getListItemYPositions(solo, 0); + int addedYPosition = UiTestUtils.getAddedListItemYPosition(solo); + solo.drag(20, 20, addedYPosition, yPosition.get(yPosition.size() - 1) + 20, 20); + + solo.clickOnText(solo.getString(R.string.brick_set_variable)); + solo.clickOnText(solo.getString(R.string.brick_context_dialog_formula_edit_brick)); + + assertTrue("Uservariable in view is not right displayed , maybe clone() is broken...", + solo.searchText(userVariableName,true)); + + solo.sleep(5000); + } + private void createProject() { project = new Project(null, UiTestUtils.DEFAULT_TEST_PROJECT_NAME); Sprite sprite = new Sprite("cat");