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 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134
|
//===----------------------------------------------------------*- swift -*-===//
//
// This source file is part of the Swift Argument Parser open source project
//
// Copyright (c) 2020 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
//
//===----------------------------------------------------------------------===//
import XCTest
import ArgumentParserTestHelpers
import ArgumentParser
final class LongNameWithSingleDashEndToEndTests: XCTestCase {
}
// MARK: -
fileprivate struct Bar: ParsableArguments {
@Flag(name: .customLong("file", withSingleDash: true))
var file: Bool = false
@Flag(name: .short)
var force: Bool = false
@Flag(name: .short)
var input: Bool = false
}
extension LongNameWithSingleDashEndToEndTests {
func testParsing_empty() throws {
AssertParse(Bar.self, []) { options in
XCTAssertEqual(options.file, false)
XCTAssertEqual(options.force, false)
XCTAssertEqual(options.input, false)
}
}
func testParsing_singleOption_1() {
AssertParse(Bar.self, ["-file"]) { options in
XCTAssertEqual(options.file, true)
XCTAssertEqual(options.force, false)
XCTAssertEqual(options.input, false)
}
}
func testParsing_singleOption_2() {
AssertParse(Bar.self, ["-f"]) { options in
XCTAssertEqual(options.file, false)
XCTAssertEqual(options.force, true)
XCTAssertEqual(options.input, false)
}
}
func testParsing_singleOption_3() {
AssertParse(Bar.self, ["-i"]) { options in
XCTAssertEqual(options.file, false)
XCTAssertEqual(options.force, false)
XCTAssertEqual(options.input, true)
}
}
func testParsing_combined_1() {
AssertParse(Bar.self, ["-f", "-i"]) { options in
XCTAssertEqual(options.file, false)
XCTAssertEqual(options.force, true)
XCTAssertEqual(options.input, true)
}
}
func testParsing_combined_2() {
AssertParse(Bar.self, ["-fi"]) { options in
XCTAssertEqual(options.file, false)
XCTAssertEqual(options.force, true)
XCTAssertEqual(options.input, true)
}
}
func testParsing_combined_3() {
AssertParse(Bar.self, ["-file", "-f"]) { options in
XCTAssertEqual(options.file, true)
XCTAssertEqual(options.force, true)
XCTAssertEqual(options.input, false)
}
}
func testParsing_combined_4() {
AssertParse(Bar.self, ["-file", "-i"]) { options in
XCTAssertEqual(options.file, true)
XCTAssertEqual(options.force, false)
XCTAssertEqual(options.input, true)
}
}
func testParsing_combined_5() {
AssertParse(Bar.self, ["-file", "-fi"]) { options in
XCTAssertEqual(options.file, true)
XCTAssertEqual(options.force, true)
XCTAssertEqual(options.input, true)
}
}
func testParsing_invalid() throws {
//XCTAssertThrowsError(try Bar.parse(["-fil"]))
XCTAssertThrowsError(try Bar.parse(["--file"]))
}
}
extension LongNameWithSingleDashEndToEndTests {
private struct Issue327: ParsableCommand {
@Option(name: .customLong("argWithAnH", withSingleDash: true),
parsing: .upToNextOption)
var args: [String]
}
func testIssue327() {
AssertParse(Issue327.self, ["-argWithAnH", "03ade86c0", "8f2058e3ade86c84ec5b"]) { issue327 in
XCTAssertEqual(issue327.args, ["03ade86c0", "8f2058e3ade86c84ec5b"])
}
}
private struct JoinedItem: ParsableCommand {
@Option(name: .customLong("argWithAnH", withSingleDash: true))
var arg: String
}
func testJoinedItem_Issue327() {
AssertParse(JoinedItem.self, ["-argWithAnH=foo"]) { joinedItem in
XCTAssertEqual(joinedItem.arg, "foo")
}
}
}
|