/*
* 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.uiespresso.stage;
import android.support.test.InstrumentationRegistry;
import android.support.test.runner.AndroidJUnit4;
import org.catrobat.catroid.ProjectManager;
import org.catrobat.catroid.common.LookData;
import org.catrobat.catroid.common.ScreenValues;
import org.catrobat.catroid.content.Project;
import org.catrobat.catroid.content.SingleSprite;
import org.catrobat.catroid.content.Sprite;
import org.catrobat.catroid.content.StartScript;
import org.catrobat.catroid.content.bricks.PlaceAtBrick;
import org.catrobat.catroid.content.bricks.SetSizeToBrick;
import org.catrobat.catroid.io.StorageHandler;
import org.catrobat.catroid.stage.StageActivity;
import org.catrobat.catroid.uiespresso.util.BaseActivityInstrumentationRule;
import org.catrobat.catroid.uiespresso.util.UiTestUtils;
import org.catrobat.catroid.uiespresso.util.matchers.StageMatchers;
import org.catrobat.catroid.utils.UtilUi;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import java.io.File;
import static android.support.test.espresso.Espresso.onView;
import static android.support.test.espresso.assertion.ViewAssertions.matches;
import static android.support.test.espresso.matcher.ViewMatchers.isFocusable;
@RunWith(AndroidJUnit4.class)
public class StageTestSimple {
private static final int PROJECT_WIDTH = 480;
private static final int PROJECT_HEIGHT = 800;
@Rule
public BaseActivityInstrumentationRule<StageActivity> baseActivityTestRule = new
BaseActivityInstrumentationRule<>(StageActivity.class, true, false);
@Before
public void setUp() throws Exception {
}
@Test
public void checkForBlueSpriteColor() {
createProjectWithBlueSprite("blueProject");
baseActivityTestRule.launchActivity(null);
byte[] blue = { 0, (byte) 162, (byte) 232, (byte) 255 };
//color matcher only accepts a GL20View, this can be aquired by getting the only focusable element in the stage
onView(isFocusable()).check(matches(StageMatchers.isColorAtPx(blue, 1, 1)));
}
public Project createProjectWithBlueSprite(String projectName) {
ScreenValues.SCREEN_HEIGHT = PROJECT_HEIGHT;
ScreenValues.SCREEN_WIDTH = PROJECT_WIDTH;
Project project = new Project(null, projectName);
// blue Sprite
Sprite blueSprite = new SingleSprite("blueSprite");
StartScript blueStartScript = new StartScript();
LookData blueLookData = new LookData();
String blueImageName = "blue_image.bmp";
blueLookData.setLookName(blueImageName);
blueSprite.getLookDataList().add(blueLookData);
blueStartScript.addBrick(new PlaceAtBrick(0, 0));
blueStartScript.addBrick(new SetSizeToBrick(5000));
blueSprite.addScript(blueStartScript);
project.getDefaultScene().addSprite(blueSprite);
StorageHandler.getInstance().saveProject(project);
File blueImageFile = UiTestUtils.saveFileToProject(project.getName(), project.getDefaultScene().getName(),
blueImageName,
org.catrobat.catroid.test.R.raw.blue_image, InstrumentationRegistry.getContext(),
UiTestUtils.FileTypes.IMAGE);
blueLookData.setLookFilename(blueImageFile.getName());
StorageHandler.getInstance().saveProject(project);
ProjectManager.getInstance().setProject(project);
ProjectManager.getInstance().setCurrentSprite(blueSprite);
UtilUi.updateScreenWidthAndHeight(InstrumentationRegistry.getContext());
return project;
}
}