@@ -164,5 +164,53 @@ final class TripleTests: XCTestCase {
164164 XCTAssertTriple ( " aarch64-unknown-linux-android " , matches: ( . aarch64, nil , nil , . linux, . android, . elf) )
165165 XCTAssertTriple ( " x86_64-unknown-windows-msvc " , matches: ( . x86_64, nil , nil , . win32, . msvc, . coff) )
166166 XCTAssertTriple ( " wasm32-unknown-wasi " , matches: ( . wasm32, nil , nil , . wasi, nil , . wasm) )
167+ }
168+
169+ func testTriple( ) {
170+ let linux = try ? Triple ( " x86_64-unknown-linux-gnu " )
171+ XCTAssertNotNil ( linux)
172+ XCTAssertEqual ( linux!. os, . linux)
173+ XCTAssertNil ( linux!. osVersion)
174+ XCTAssertEqual ( linux!. environment, . gnu)
175+
176+ let macos = try ? Triple ( " x86_64-apple-macosx10.15 " )
177+ XCTAssertNotNil ( macos!)
178+ XCTAssertEqual ( macos!. osVersion, . init( parse: " 10.15 " ) !)
179+ let newVersion = " 10.12 "
180+ let tripleString = macos!. tripleString ( forPlatformVersion: newVersion)
181+ XCTAssertEqual ( tripleString, " x86_64-apple-macosx10.12 " )
182+ let macosNoX = try ? Triple ( " x86_64-apple-macos12.2 " )
183+ XCTAssertNotNil ( macosNoX!)
184+ XCTAssertEqual ( macosNoX!. os, . macosx)
185+ XCTAssertEqual ( macosNoX!. osVersion, . init( parse: " 12.2 " ) !)
186+
187+ let android = try ? Triple ( " aarch64-unknown-linux-android24 " )
188+ XCTAssertNotNil ( android)
189+ XCTAssertEqual ( android!. os, . linux)
190+ XCTAssertEqual ( android!. environment, . android)
191+
192+ let linuxWithABIVersion = try ? Triple ( " x86_64-unknown-linux-gnu42 " )
193+ XCTAssertEqual ( linuxWithABIVersion!. environment, . gnu)
194+ }
195+
196+ func testEquality( ) throws {
197+ let macOSTriple = try Triple ( " arm64-apple-macos " )
198+ let macOSXTriple = try Triple ( " arm64-apple-macosx " )
199+ XCTAssertEqual ( macOSTriple, macOSXTriple)
200+
201+ let intelMacOSTriple = try Triple ( " x86_64-apple-macos " )
202+ XCTAssertNotEqual ( macOSTriple, intelMacOSTriple)
203+
204+ let linuxWithoutGNUABI = try Triple ( " x86_64-unknown-linux " )
205+ let linuxWithGNUABI = try Triple ( " x86_64-unknown-linux-gnu " )
206+ XCTAssertNotEqual ( linuxWithoutGNUABI, linuxWithGNUABI)
207+ }
208+
209+ func testWASI( ) throws {
210+ let wasi = try Triple ( " wasm32-unknown-wasi " )
211+
212+ // WASI dynamic libraries are only experimental,
213+ // but SwiftPM requires this property not to crash.
214+ _ = wasi. dynamicLibraryExtension
167215 }
168216}
0 commit comments