246 lines
7.5 KiB
C#
246 lines
7.5 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using Framework.ProcessMode;
|
|
using System.IO;
|
|
using DefaultNamespace.ProcessMode;
|
|
using MotionFramework;
|
|
using Newtonsoft.Json;
|
|
|
|
public class ProcessTest : MonoBehaviour
|
|
{
|
|
private ProcessManager processManager;
|
|
private string testJsonPath;
|
|
private string testJsonContent;
|
|
|
|
private IEnumerator Start()
|
|
{
|
|
yield return new WaitForSeconds(2);
|
|
// 初始化测试
|
|
InitializeTest();
|
|
}
|
|
|
|
private void InitializeTest()
|
|
{
|
|
// 获取ProcessManager实例
|
|
processManager = MotionEngine.GetModule<ProcessManager>();
|
|
|
|
// 设置测试JSON文件路径
|
|
testJsonPath = Path.Combine(Application.streamingAssetsPath, "DataConfig", "流程测试.json");
|
|
|
|
// 读取测试JSON文件
|
|
if (File.Exists(testJsonPath))
|
|
{
|
|
testJsonContent = File.ReadAllText(testJsonPath);
|
|
Debug.Log("成功加载测试流程文件");
|
|
}
|
|
else
|
|
{
|
|
Debug.LogError("测试流程文件不存在!");
|
|
return;
|
|
}
|
|
|
|
// 开始测试
|
|
StartCoroutine(RunAllTests());
|
|
}
|
|
|
|
private IEnumerator RunAllTests()
|
|
{
|
|
Debug.Log("开始运行流程系统测试...");
|
|
|
|
// 测试教学模式
|
|
yield return StartCoroutine(TestTeachingMode());
|
|
|
|
// 测试培训模式
|
|
yield return StartCoroutine(TestTrainingMode());
|
|
|
|
// 测试练习模式
|
|
yield return StartCoroutine(TestPracticeMode());
|
|
|
|
// 测试考核模式
|
|
yield return StartCoroutine(TestAssessmentMode());
|
|
|
|
Debug.Log("所有测试完成!");
|
|
}
|
|
|
|
private IEnumerator TestTeachingMode()
|
|
{
|
|
Debug.Log("\n=== 开始测试教学模式 ===");
|
|
|
|
// 重置流程
|
|
processManager.ResetProcess(testJsonContent, ProcessMode.教学模式);
|
|
|
|
// 测试顺序点击
|
|
Debug.Log("测试顺序点击...");
|
|
yield return StartCoroutine(TestSequentialClick());
|
|
|
|
// 测试非顺序点击
|
|
Debug.Log("测试非顺序点击...");
|
|
yield return StartCoroutine(TestNonSequentialClick());
|
|
|
|
// 测试事件类型目标
|
|
Debug.Log("测试事件类型目标...");
|
|
yield return StartCoroutine(TestEventTypeTarget());
|
|
|
|
Debug.Log("教学模式测试完成");
|
|
}
|
|
|
|
private IEnumerator TestTrainingMode()
|
|
{
|
|
Debug.Log("\n=== 开始测试培训模式 ===");
|
|
|
|
// 重置流程
|
|
processManager.ResetProcess(testJsonContent, ProcessMode.培训模式);
|
|
|
|
// 测试不需要正确完成的情况
|
|
Debug.Log("测试不需要正确完成的情况...");
|
|
yield return StartCoroutine(TestNoRequireCorrect());
|
|
|
|
// 测试混合类型目标
|
|
Debug.Log("测试混合类型目标...");
|
|
yield return StartCoroutine(TestMixedTypeTargets());
|
|
|
|
Debug.Log("培训模式测试完成");
|
|
}
|
|
|
|
private IEnumerator TestPracticeMode()
|
|
{
|
|
Debug.Log("\n=== 开始测试练习模式 ===");
|
|
|
|
// 重置流程
|
|
processManager.ResetProcess(testJsonContent, ProcessMode.练习模式);
|
|
|
|
// 测试重复目标
|
|
Debug.Log("测试重复目标...");
|
|
yield return StartCoroutine(TestDuplicateTargets());
|
|
|
|
// 测试自由探索
|
|
Debug.Log("测试自由探索...");
|
|
yield return StartCoroutine(TestFreeExploration());
|
|
|
|
Debug.Log("练习模式测试完成");
|
|
}
|
|
|
|
private IEnumerator TestAssessmentMode()
|
|
{
|
|
Debug.Log("\n=== 开始测试考核模式 ===");
|
|
|
|
// 重置流程
|
|
processManager.ResetProcess(testJsonContent, ProcessMode.考核模式);
|
|
|
|
// 测试严格顺序
|
|
Debug.Log("测试严格顺序...");
|
|
yield return StartCoroutine(TestStrictSequential());
|
|
|
|
// 测试综合场景
|
|
Debug.Log("测试综合场景...");
|
|
yield return StartCoroutine(TestComprehensiveScenario());
|
|
|
|
Debug.Log("考核模式测试完成");
|
|
}
|
|
|
|
private IEnumerator TestSequentialClick()
|
|
{
|
|
// 模拟正确顺序点击
|
|
processManager.HandleClick("Cube1");
|
|
yield return new WaitForSeconds(0.5f);
|
|
processManager.HandleClick("Cube2");
|
|
yield return new WaitForSeconds(0.5f);
|
|
processManager.HandleClick("Cube3");
|
|
yield return new WaitForSeconds(0.5f);
|
|
|
|
// 测试错误顺序
|
|
processManager.ResetProcess(testJsonContent, ProcessMode.教学模式);
|
|
processManager.HandleClick("Cube2"); // 错误顺序
|
|
yield return new WaitForSeconds(0.5f);
|
|
}
|
|
|
|
private IEnumerator TestNonSequentialClick()
|
|
{
|
|
// 模拟任意顺序点击
|
|
processManager.HandleClick("Sphere2");
|
|
yield return new WaitForSeconds(0.5f);
|
|
processManager.HandleClick("Sphere1");
|
|
yield return new WaitForSeconds(0.5f);
|
|
processManager.HandleClick("Sphere3");
|
|
yield return new WaitForSeconds(0.5f);
|
|
}
|
|
|
|
private IEnumerator TestEventTypeTarget()
|
|
{
|
|
// 测试事件类型目标
|
|
processManager.HandleClick("Event1");
|
|
yield return new WaitForSeconds(0.5f);
|
|
}
|
|
|
|
private IEnumerator TestNoRequireCorrect()
|
|
{
|
|
// 测试不需要正确完成的情况
|
|
processManager.HandleClick("WrongObject"); // 错误点击
|
|
yield return new WaitForSeconds(0.5f);
|
|
processManager.HandleClick("Cylinder1");
|
|
yield return new WaitForSeconds(0.5f);
|
|
processManager.HandleClick("Cylinder2");
|
|
yield return new WaitForSeconds(0.5f);
|
|
}
|
|
|
|
private IEnumerator TestMixedTypeTargets()
|
|
{
|
|
// 测试混合类型目标
|
|
processManager.HandleClick("Pyramid1");
|
|
yield return new WaitForSeconds(0.5f);
|
|
processManager.HandleClick("Event2");
|
|
yield return new WaitForSeconds(0.5f);
|
|
}
|
|
|
|
private IEnumerator TestDuplicateTargets()
|
|
{
|
|
// 测试重复目标
|
|
processManager.HandleClick("Cube1");
|
|
yield return new WaitForSeconds(0.5f);
|
|
processManager.HandleClick("Cube1"); // 重复点击
|
|
yield return new WaitForSeconds(0.5f);
|
|
processManager.HandleClick("Cube2");
|
|
yield return new WaitForSeconds(0.5f);
|
|
}
|
|
|
|
private IEnumerator TestFreeExploration()
|
|
{
|
|
// 测试自由探索
|
|
processManager.HandleClick("Sphere1");
|
|
yield return new WaitForSeconds(0.5f);
|
|
processManager.HandleClick("Event3");
|
|
yield return new WaitForSeconds(0.5f);
|
|
processManager.HandleClick("Sphere2");
|
|
yield return new WaitForSeconds(0.5f);
|
|
}
|
|
|
|
private IEnumerator TestStrictSequential()
|
|
{
|
|
// 测试严格顺序
|
|
processManager.HandleClick("Cube1");
|
|
yield return new WaitForSeconds(0.5f);
|
|
processManager.HandleClick("Cube2");
|
|
yield return new WaitForSeconds(0.5f);
|
|
processManager.HandleClick("Cube3");
|
|
yield return new WaitForSeconds(0.5f);
|
|
}
|
|
|
|
private IEnumerator TestComprehensiveScenario()
|
|
{
|
|
// 测试综合场景
|
|
processManager.HandleClick("Sphere1");
|
|
yield return new WaitForSeconds(0.5f);
|
|
processManager.HandleClick("Event4");
|
|
yield return new WaitForSeconds(0.5f);
|
|
processManager.HandleClick("Cylinder1");
|
|
yield return new WaitForSeconds(0.5f);
|
|
}
|
|
|
|
// 用于在编辑器中手动触发测试
|
|
[ContextMenu("运行所有测试")]
|
|
public void RunTests()
|
|
{
|
|
StartCoroutine(RunAllTests());
|
|
}
|
|
} |