/// 테스트 컨텍스트 - 테스트 실행 중 상태와 데이터를 관리 class TestContext { final Map _data = {}; final List _createdResourceIds = []; final Map> _resourcesByType = {}; final Map _config = {}; String? currentScreen; /// 데이터 저장 void setData(String key, dynamic value) { _data[key] = value; } /// 데이터 조회 dynamic getData(String key) { return _data[key]; } /// 모든 데이터 조회 Map getAllData() { return Map.from(_data); } /// 생성된 리소스 ID 추가 void addCreatedResourceId(String resourceType, String id) { _createdResourceIds.add('$resourceType:$id'); _resourcesByType.putIfAbsent(resourceType, () => []).add(id); } /// 특정 타입의 생성된 리소스 ID 목록 조회 List getCreatedResourceIds(String resourceType) { return _resourcesByType[resourceType] ?? []; } /// 모든 생성된 리소스 ID 조회 List getAllCreatedResourceIds() { return List.from(_createdResourceIds); } /// 생성된 리소스 ID 제거 void removeCreatedResourceId(String resourceType, String id) { final resourceKey = '$resourceType:$id'; _createdResourceIds.remove(resourceKey); _resourcesByType[resourceType]?.remove(id); } /// 컨텍스트 초기화 void clear() { _data.clear(); _createdResourceIds.clear(); _resourcesByType.clear(); } /// 특정 키의 데이터 존재 여부 확인 bool hasData(String key) { return _data.containsKey(key); } /// 특정 키의 데이터 제거 void removeData(String key) { _data.remove(key); } /// 현재 상태 스냅샷 Map snapshot() { return { 'data': Map.from(_data), 'createdResources': List.from(_createdResourceIds), 'resourcesByType': Map.from(_resourcesByType), }; } /// 스냅샷에서 복원 void restore(Map snapshot) { _data.clear(); _data.addAll(snapshot['data'] ?? {}); _createdResourceIds.clear(); _createdResourceIds.addAll(List.from(snapshot['createdResources'] ?? [])); _resourcesByType.clear(); final resourcesByType = snapshot['resourcesByType'] as Map? ?? {}; resourcesByType.forEach((key, value) { _resourcesByType[key] = List.from(value as List); }); } /// 설정값 저장 void setConfig(String key, dynamic value) { _config[key] = value; } /// 설정값 조회 dynamic getConfig(String key) { return _config[key]; } }