import Foundation import XCTest @testable import ModificationBasic class ExplanationThenCodeStreamParserTests: XCTestCase { func collectFragments(_ fragments: [ExplanationThenCodeStreamParser.Fragment]) -> ( code: String, explanation: String ) { var code = "" var explanation = "" for fragment in fragments { switch fragment { case let .code(c): code += c case let .explanation(e): explanation += e } } return (code: code, explanation: explanation) } func process(_ code: String) async -> (code: String, explanation: String) { let parser = ExplanationThenCodeStreamParser() var allFragments: [ExplanationThenCodeStreamParser.Fragment] = [] func chunks(from code: String, chunkSize: Int) -> [String] { var chunks: [String] = [] var currentIndex = code.startIndex while currentIndex < code.endIndex { let endIndex = code.index( currentIndex, offsetBy: chunkSize, limitedBy: code.endIndex ) ?? code.endIndex let chunk = String(code[currentIndex..