diff --git a/catroid/src/androidTest/assets/catrobatTests/bricks/looks/testSetBackgroundBrick.catrobat b/catroid/src/androidTest/assets/catrobatTests/bricks/looks/testSetBackgroundBrick.catrobat new file mode 100644 index 00000000000..a0a566687f8 Binary files /dev/null and b/catroid/src/androidTest/assets/catrobatTests/bricks/looks/testSetBackgroundBrick.catrobat differ diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/app/LoadProjectAIExtensionSettingsTest.kt b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/bricks/LoadProjectAIExtensionSettingsTest.kt similarity index 98% rename from catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/app/LoadProjectAIExtensionSettingsTest.kt rename to catroid/src/androidTest/java/org/catrobat/catroid/test/content/bricks/LoadProjectAIExtensionSettingsTest.kt index 1457a660b55..310fda33030 100644 --- a/catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/app/LoadProjectAIExtensionSettingsTest.kt +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/content/bricks/LoadProjectAIExtensionSettingsTest.kt @@ -26,14 +26,12 @@ package org.catrobat.catroid.uiespresso.content.brick.app import android.content.Context import android.preference.PreferenceManager import androidx.test.core.app.ApplicationProvider -import androidx.test.espresso.Espresso.onView -import androidx.test.espresso.action.ViewActions.click -import androidx.test.espresso.matcher.ViewMatchers import junit.framework.Assert.assertFalse import junit.framework.Assert.assertTrue -import org.catrobat.catroid.R +import org.catrobat.catroid.ProjectManager import org.catrobat.catroid.common.Constants import org.catrobat.catroid.common.SharedPreferenceKeys +import org.catrobat.catroid.content.Project import org.catrobat.catroid.content.Script import org.catrobat.catroid.content.bricks.AskSpeechBrick import org.catrobat.catroid.content.bricks.Brick @@ -122,13 +120,15 @@ import org.catrobat.catroid.formulaeditor.Sensors.SECOND_FACE_X import org.catrobat.catroid.formulaeditor.Sensors.SECOND_FACE_Y import org.catrobat.catroid.formulaeditor.Sensors.SPEECH_RECOGNITION_LANGUAGE import org.catrobat.catroid.formulaeditor.Sensors.TEXT_FROM_CAMERA +import org.catrobat.catroid.io.XstreamSerializer +import org.catrobat.catroid.test.utils.KtTestUtils +import org.catrobat.catroid.test.utils.TestUtils import org.catrobat.catroid.ui.MainMenuActivity import org.catrobat.catroid.ui.settingsfragments.SettingsFragment.SETTINGS_SHOW_AI_FACE_DETECTION_SENSORS import org.catrobat.catroid.ui.settingsfragments.SettingsFragment.SETTINGS_SHOW_AI_POSE_DETECTION_SENSORS import org.catrobat.catroid.ui.settingsfragments.SettingsFragment.SETTINGS_SHOW_AI_SPEECH_RECOGNITION_SENSORS import org.catrobat.catroid.ui.settingsfragments.SettingsFragment.SETTINGS_SHOW_AI_SPEECH_SYNTHETIZATION_SENSORS import org.catrobat.catroid.ui.settingsfragments.SettingsFragment.SETTINGS_SHOW_AI_TEXT_RECOGNITION_SENSORS -import org.catrobat.catroid.uiespresso.util.UiTestUtils import org.catrobat.catroid.uiespresso.util.rules.BaseActivityTestRule import org.junit.After import org.junit.Before @@ -136,10 +136,10 @@ import org.junit.Rule import org.junit.Test import org.junit.runner.RunWith import org.junit.runners.Parameterized +import java.io.File @RunWith(Parameterized::class) class LoadProjectAIExtensionSettingsTest( - private val name: String, private val setting: String, private val brick: Brick ) { @@ -148,8 +148,13 @@ class LoadProjectAIExtensionSettingsTest( var bufferedPrivacyPolicyPreferenceSetting = 0 private lateinit var script: Script + + private var project: Project? = null + private val projectName = "projectName" + private var file: File = File("") + @get:Rule var baseActivityTestRule: BaseActivityTestRule = BaseActivityTestRule( MainMenuActivity::class.java, false, false @@ -639,25 +644,25 @@ class LoadProjectAIExtensionSettingsTest( allAIExtensionSettings.forEach { setting -> setSettingToBoolean(setting, false) } - script = UiTestUtils.createProjectAndGetStartScript(projectName) - baseActivityTestRule.launchActivity(null) + val triple = KtTestUtils.createProjectAndGetStartScriptandFile(projectName) + script = triple.first + file = triple.second + project = triple.third } @After @Throws(Exception::class) fun tearDown() { restoreInitialSettings() + TestUtils.deleteProjects(projectName) } @Test fun testSettingsBeforeAndAfterLoadProject() { script.addBrick(brick) - + XstreamSerializer.getInstance().saveProject(project) assertFalse(getSetting(setting)) - onView(ViewMatchers.withText(applicationContext.getString(R.string.main_menu_programs))).perform( - click() - ) - onView(ViewMatchers.withText(projectName)).perform(click()) + ProjectManager.getInstance().loadProject(file) assertTrue(getSetting(setting)) } @@ -708,4 +713,4 @@ class LoadProjectAIExtensionSettingsTest( sharedPreferencesEditor.putBoolean(setting, value) sharedPreferencesEditor.commit() } -} +} \ No newline at end of file diff --git a/catroid/src/androidTest/java/org/catrobat/catroid/test/utils/KtTestUtils.kt b/catroid/src/androidTest/java/org/catrobat/catroid/test/utils/KtTestUtils.kt new file mode 100644 index 00000000000..d675b35b0c7 --- /dev/null +++ b/catroid/src/androidTest/java/org/catrobat/catroid/test/utils/KtTestUtils.kt @@ -0,0 +1,56 @@ +/* + * Catroid: An on-device visual programming system for Android devices + * Copyright (C) 2010-2025 The Catrobat Team + * () + * + * 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 . + */ + +package org.catrobat.catroid.test.utils + +import androidx.test.core.app.ApplicationProvider +import org.catrobat.catroid.ProjectManager +import org.catrobat.catroid.content.Project +import org.catrobat.catroid.content.Script +import org.catrobat.catroid.content.Sprite +import org.catrobat.catroid.content.StartScript +import org.catrobat.catroid.io.XstreamSerializer +import org.koin.java.KoinJavaComponent.inject +import java.io.File +import kotlin.getValue + +class KtTestUtils private constructor(){ + companion object { + private val projectManager by inject(ProjectManager::class.java) + + @JvmStatic + fun createProjectAndGetStartScriptandFile(projectName: String?): Triple { + val project = Project(ApplicationProvider.getApplicationContext(), projectName) + val sprite = Sprite(TestUtils.DEFAULT_TEST_SPRITE_NAME) + val script: Script = StartScript() + sprite.addScript(script) + project.defaultScene.addSprite(sprite) + projectManager.currentProject = project + projectManager.currentSprite = sprite + projectManager.currentlyEditedScene = project.defaultScene + XstreamSerializer.getInstance().saveProject(project) + return Triple(script, project.getDirectory(), project) + } + } +} \ No newline at end of file