| // Copyright 2016 The Tulsi Authors. All rights reserved. |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| |
| import XCTest |
| @testable import TulsiGenerator |
| |
| class BuildLabelTests: XCTestCase { |
| let a1 = BuildLabel("//test/place:a") |
| let a2 = BuildLabel("//test/place:a") |
| let b = BuildLabel("//test/place:b") |
| let c = BuildLabel("//test/place:c") |
| let noTargetName = BuildLabel("//test/place") |
| let noLeadingSlash = BuildLabel("no/leading/slash") |
| let emptyLabel = BuildLabel("") |
| let justSlashLabel = BuildLabel("//") |
| let invalidTrailingSlash = BuildLabel("invalid/trailing/slash/") |
| |
| func testEquality() { |
| XCTAssertEqual(a1, a1) |
| XCTAssertEqual(a1, a2) |
| XCTAssertNotEqual(a1, b) |
| } |
| |
| func testHash() { |
| XCTAssertEqual(a1.hashValue, a2.hashValue) |
| } |
| |
| func testComparison() { |
| XCTAssertLessThan(a1, b) |
| XCTAssertGreaterThan(c, b) |
| } |
| |
| func testTargetName() { |
| XCTAssertEqual(a1.targetName, "a") |
| XCTAssertEqual(b.targetName, "b") |
| XCTAssertEqual(c.targetName, "c") |
| XCTAssertEqual(noTargetName.targetName, "place") |
| XCTAssertNil(emptyLabel.targetName) |
| XCTAssertNil(justSlashLabel.targetName) |
| XCTAssertNil(invalidTrailingSlash.targetName) |
| } |
| |
| func testPackageName() { |
| XCTAssertEqual(a1.packageName, "test/place") |
| XCTAssertEqual(a1.packageName, b.packageName) |
| XCTAssertEqual(noLeadingSlash.packageName, "no/leading/slash") |
| XCTAssertEqual(emptyLabel.packageName, "") |
| XCTAssertEqual(justSlashLabel.packageName, "") |
| XCTAssertEqual(invalidTrailingSlash.packageName, "") |
| } |
| |
| func testAsFileName() { |
| XCTAssertEqual(a1.asFileName, "test/place/a") |
| XCTAssertEqual(a1.asFileName, a2.asFileName) |
| XCTAssertEqual(noLeadingSlash.asFileName, "no/leading/slash/slash") |
| XCTAssertNil(emptyLabel.asFileName) |
| XCTAssertNil(justSlashLabel.asFileName) |
| XCTAssertNil(invalidTrailingSlash.asFileName) |
| } |
| } |