1// SPDX-FileCopyrightText: 2025 The Project Pterodactyl Developers 2// 3// SPDX-License-Identifier: MPL-2.0 4 5import Testing 6@testable import PterodactylKernel 7 8struct SizeTests { 9 @Test func leqIsReflexive() async throws { 10 let analysis = LocalAnalysis() 11 12 await #expect(throws: Never.self) { 13 try await analysis.assertLeq(size1: .big, size2: .big) 14 } 15 } 16 17 @Test func moderateIsNotSmall() async throws { 18 let analysis = LocalAnalysis() 19 20 await #expect(throws: LocalAnalysis.SizeError.self) { 21 try await analysis.assertLeq(size1: .big, size2: .little(universe: .universeZero)) 22 } 23 } 24 25 @Test func lubIsCommutative() async throws { 26 let analysis = LocalAnalysis() 27 await #expect(throws: Never.self) { 28 let lhs = Value.universeLub(.universeZero, .universeSucc(.universeZero)) 29 let rhs = Value.universeLub(.universeSucc(.universeZero), .universeZero) 30 try await analysis.equate(size: .little(universe: lhs), with: .little(universe: rhs)) 31 } 32 } 33 34 @Test func lubZeroLeftUnit() async throws { 35 let analysis = LocalAnalysis() 36 await #expect(throws: Never.self) { 37 let lhs = Value.universeLub(.universeZero, .universeSucc(.universeZero)) 38 let rhs = Value.universeSucc(.universeZero) 39 try await analysis.equate(size: .little(universe: lhs), with: .little(universe: rhs)) 40 } 41 } 42 43 @Test func lubZeroRightUnit() async throws { 44 let analysis = LocalAnalysis() 45 await #expect(throws: Never.self) { 46 let lhs = Value.universeLub(.universeSucc(.universeZero), .universeZero) 47 let rhs = Value.universeSucc(.universeZero) 48 try await analysis.equate(size: .little(universe: lhs), with: .little(universe: rhs)) 49 } 50 } 51 52 @Test func succDistributesOverLub() async throws { 53 let analysis = LocalAnalysis() 54 await #expect(throws: Never.self) { 55 let lhs = Value.universeSucc(Value.universeLub(.universeZero, .universeSucc(.universeZero))) 56 let rhs = Value.universeLub(.universeSucc(.universeSucc(.universeZero)), .universeSucc(.universeZero)) 57 try await analysis.equate(size: .little(universe: lhs), with: .little(universe: rhs)) 58 } 59 } 60 61}