// This source file is part of the Swift.org open source project
//
// Copyright (c) 2016 Apple Inc. and the Swift project authors
// Licensed under Apache License v2.0 with Runtime Library Exception
//
// See http://swift.org/LICENSE.txt for license information
// See http://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
//
//
//  ArgumentParser.swift
//  Tools for parsing test execution configuration from command line arguments
//

internal struct ArgumentParser {
    private let arguments: [String]

    init(arguments: [String] = Process.arguments) {
        self.arguments = arguments
    }

    var selectedTestName: String? {
        return arguments.count > 1 ? arguments[1] : nil
    }
}
