// SPDX-FileCopyrightText: 2025 The Project Pterodactyl Developers // // SPDX-License-Identifier: MPL-2.0 import Testing @testable import PterodactylKernel struct QuotationTests { @Test func quotingNeutrals() async throws { let analysis = LocalAnalysis() let recordType1 = Term.Type_.recordType(boundName: nil, fields: FieldDict([("foo", Term.FieldSpec(type: .universeType, manifest: nil))])) let recordType2 = Term.Type_.recordType(boundName: nil, fields: FieldDict([("bar", Term.FieldSpec(type: recordType1, manifest: nil))])) let recordTypeValue = Evaluator().evaluate(type: recordType2) let base = Value.Neutral(head: .global(name: "X"), spine: [], boundary: AsyncThunk { Value.Boundary(type: recordTypeValue, value: nil) }) let bar = base.plug(frame: .proj(fieldName: "bar")) let foo = bar.plug(frame: .proj(fieldName: "foo")) let term = analysis.quote(neutral: foo) let result = switch term { case .cut(term: .cut(term: .global(name: "X"), frame: .proj(fieldName: "bar")), frame: .proj(fieldName: "foo")): true default: false } #expect(result, "Neutral incorrectly quoted as: \(term)") } }