File: PlatformArgumentParserTests.swift

package info (click to toggle)
swiftlang 6.0.3-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,519,992 kB
  • sloc: cpp: 9,107,863; ansic: 2,040,022; asm: 1,135,751; python: 296,500; objc: 82,456; f90: 60,502; lisp: 34,951; pascal: 19,946; sh: 18,133; perl: 7,482; ml: 4,937; javascript: 4,117; makefile: 3,840; awk: 3,535; xml: 914; fortran: 619; cs: 573; ruby: 573
file content (93 lines) | stat: -rw-r--r-- 4,152 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
/*
 This source file is part of the Swift.org open source project

 Copyright (c) 2021 Apple Inc. and the Swift project authors
 Licensed under Apache License v2.0 with Runtime Library Exception

 See https://swift.org/LICENSE.txt for license information
 See https://swift.org/CONTRIBUTORS.txt for Swift project authors
*/

import Foundation
import SwiftDocC

import XCTest
@testable import SwiftDocCUtilities

class PlatformArgumentParserTests: XCTestCase {
    let correctInputs: [[String]] = [
        ["name=macOS,version=10.1.2"],
        ["name=macOS,version=10.1.2", "name=Mac Catalyst,version=13.1.0"],
        ["name=macOS,version=10.1.2", "name=Mac Catalyst,version=13.1.0", "name=watchOS,version=6.0.0"],
    ]
    
    let betaInputs: [[String]] = [
        ["name=macOS,version=10.1.2,beta=true"],
        ["name=macOS,version=10.1.2,beta=yes", "name=Mac Catalyst,version=13.1.0,beta=true"],
        ["name=macOS,version=10.1.2,beta=no", "name=Mac Catalyst,version=13.1.0,beta=false", "name=watchOS,version=6.0.0,beta=true"],
    ]
    
    let missingPatchInputs: [[String]] = [
        ["name=macOS,version=10.12"],
        ["name=macOS,version=10.12", "name=Mac Catalyst,version=13.1"],
        ["name=macOS,version=10.12", "name=Mac Catalyst,version=13.1", "name=watchOS,version=6.0"],
    ]

    let unexpectedFormatInputs: [[String]] = [
        ["name"],
        ["name="],
        ["name=name=macOS"],
        ["name=macOS,version=10.1.2=1.0.0"],
        ["name=macOS=iOS,version="],
        ["name=macOS,version=10.12,beta="],
    ]

    let missingKeysInputs: [[String]] = [
        ["name=macOS"],
        ["version=10.1.2"],
        ["name=iOS,version1=12.0.1"],
        ["name=iOS,version=12"],
        ["name=iOS,version=12.0,beta=nope"],
    ]

    func testPlatformParsing() throws {
        XCTAssertEqual(try correctInputs.map(PlatformArgumentParser.parse), [
            //Expected output
            ["macOS": PlatformVersion(.init(10, 1, 2), beta: false)],
            ["macOS": PlatformVersion(.init(10, 1, 2), beta: false), "Mac Catalyst": PlatformVersion(.init(13, 1, 0), beta: false)],
            ["macOS": PlatformVersion(.init(10, 1, 2), beta: false), "Mac Catalyst": PlatformVersion(.init(13, 1, 0), beta: false), "watchOS": PlatformVersion(.init(6, 0, 0), beta: false)],
        ])
        
        XCTAssertEqual(try betaInputs.map(PlatformArgumentParser.parse), [
            //Expected output
            ["macOS": PlatformVersion(.init(10, 1, 2), beta: true)],
            ["macOS": PlatformVersion(.init(10, 1, 2), beta: true), "Mac Catalyst": PlatformVersion(.init(13, 1, 0), beta: true)],
            ["macOS": PlatformVersion(.init(10, 1, 2), beta: false), "Mac Catalyst": PlatformVersion(.init(13, 1, 0), beta: false), "watchOS": PlatformVersion(.init(6, 0, 0), beta: true)],
        ])
        
        XCTAssertEqual(try missingPatchInputs.map(PlatformArgumentParser.parse), [
            //Expected output
            ["macOS": PlatformVersion(.init(10, 12, 0), beta: false)],
            ["macOS": PlatformVersion(.init(10, 12, 0), beta: false), "Mac Catalyst": PlatformVersion(.init(13, 1, 0), beta: false)],
            ["macOS": PlatformVersion(.init(10, 12, 0), beta: false), "Mac Catalyst": PlatformVersion(.init(13, 1, 0), beta: false), "watchOS": PlatformVersion(.init(6, 0, 0), beta: false)],
        ])
        
        for input in unexpectedFormatInputs {
            XCTAssertThrowsError(try PlatformArgumentParser.parse(input), "Didn't throw for incorrect input") { error in
                guard case PlatformArgumentParser.Error.unexpectedFormat = error else {
                    XCTFail("Didn't throw unexpectedFormat error")
                    return
                }
            }
        }

        for input in missingKeysInputs {
            XCTAssertThrowsError(try PlatformArgumentParser.parse(input), "Didn't throw for incorrect input") { error in
                guard case PlatformArgumentParser.Error.missingKey = error else {
                    XCTFail("Didn't throw missingKey error")
                    return
                }
            }
        }
    }
}