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
|
//===----------------------------------------------------------------------===//
//
// This source file is part of the Swift open source project
//
// Copyright (c) 2021 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
//
//===----------------------------------------------------------------------===//
import XCTest
import Basics
import PackageModel
class PackageIdentityScopeTests: XCTestCase {
func testValidScopes() throws {
XCTAssertNoThrow(try PackageIdentity.Scope(validating: "mona"))
XCTAssertNoThrow(try PackageIdentity.Scope(validating: "m-o-n-a"))
XCTAssertNoThrow(try PackageIdentity.Scope(validating: "a"))
XCTAssertNoThrow(try PackageIdentity.Scope(validating: "1"))
XCTAssertNoThrow(try PackageIdentity.Scope(validating: String(repeating: "a", count: 39)))
}
func testInvalidScopes() throws {
XCTAssertThrowsError(try PackageIdentity.Scope(validating: "")) { error in
XCTAssertEqual(error.localizedDescription, "The minimum length of a package scope is 1 character.")
}
XCTAssertThrowsError(try PackageIdentity.Scope(validating: String(repeating: "a", count: 100))) { error in
XCTAssertEqual(error.localizedDescription, "The maximum length of a package scope is 39 characters.")
}
XCTAssertThrowsError(try PackageIdentity.Scope(validating: "!")) { error in
XCTAssertEqual(error.localizedDescription, "A package scope consists of alphanumeric characters and hyphens.")
}
XCTAssertThrowsError(try PackageIdentity.Scope(validating: "あ")) { error in
XCTAssertEqual(error.localizedDescription, "A package scope consists of alphanumeric characters and hyphens.")
}
XCTAssertThrowsError(try PackageIdentity.Scope(validating: "🧍")) { error in
XCTAssertEqual(error.localizedDescription, "A package scope consists of alphanumeric characters and hyphens.")
}
XCTAssertThrowsError(try PackageIdentity.Scope(validating: "-a")) { error in
XCTAssertEqual(error.localizedDescription, "Hyphens may not occur at the beginning of a scope.")
}
XCTAssertThrowsError(try PackageIdentity.Scope(validating: "a-")) { error in
XCTAssertEqual(error.localizedDescription, "Hyphens may not occur at the end of a scope.")
}
XCTAssertThrowsError(try PackageIdentity.Scope(validating: "a--a")) { error in
XCTAssertEqual(error.localizedDescription, "Hyphens may not occur consecutively within a scope.")
}
}
func testScopesAreCaseInsensitive() throws {
let lowercase: PackageIdentity.Scope = "mona"
let uppercase: PackageIdentity.Scope = "MONA"
XCTAssertEqual(lowercase, uppercase)
}
}
|