Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -122,24 +120,26 @@ 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
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
) {
Expand All @@ -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<MainMenuActivity> = BaseActivityTestRule(
MainMenuActivity::class.java, false, false
Expand Down Expand Up @@ -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))
}

Expand Down Expand Up @@ -708,4 +713,4 @@ class LoadProjectAIExtensionSettingsTest(
sharedPreferencesEditor.putBoolean(setting, value)
sharedPreferencesEditor.commit()
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
/*
* Catroid: An on-device visual programming system for Android devices
* Copyright (C) 2010-2025 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.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<Script, File,
Project> {
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)
}
}
}