| // 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 TulsiGeneratorConfigTests: XCTestCase { |
| let projectName = "TestProject" |
| let buildTargetLabels = ["build/target/label:1", "build/target/label:2"] |
| let pathFilters = Set<String>(["build/target/path/1", |
| "build/target/path/2", |
| "source/target/path"]) |
| let additionalFilePaths = ["path/to/file", "path/to/another/file"] |
| |
| var config: TulsiGeneratorConfig! = nil |
| |
| override func setUp() { |
| super.setUp() |
| config = TulsiGeneratorConfig(projectName: projectName, |
| buildTargetLabels: buildTargetLabels.map({ BuildLabel($0) }), |
| pathFilters: pathFilters, |
| additionalFilePaths: additionalFilePaths, |
| options: TulsiOptionSet(), |
| bazelURL: URL(fileURLWithPath: "")) |
| } |
| |
| func testSave() { |
| do { |
| let data = try config.save() |
| let dict = try JSONSerialization.jsonObject(with: data as Data, options: JSONSerialization.ReadingOptions()) as! [String: Any] |
| XCTAssertEqual(dict["additionalFilePaths"] as! [String], additionalFilePaths) |
| XCTAssertEqual(dict["buildTargets"] as! [String], buildTargetLabels) |
| XCTAssertEqual(dict["projectName"] as! String, projectName) |
| XCTAssertEqual(dict["sourceFilters"] as! [String], [String](pathFilters).sorted()) |
| } catch { |
| XCTFail("Unexpected assertion") |
| } |
| } |
| |
| func testLoad() { |
| do { |
| let dict = [ |
| "additionalFilePaths": additionalFilePaths, |
| "buildTargets": buildTargetLabels, |
| "projectName": projectName, |
| "sourceFilters": [String](pathFilters), |
| ] as [String : Any] |
| let data = try JSONSerialization.data(withJSONObject: dict, options: JSONSerialization.WritingOptions()) |
| config = try TulsiGeneratorConfig(data: data) |
| |
| XCTAssertEqual(config.additionalFilePaths ?? [], additionalFilePaths) |
| XCTAssertEqual(config.buildTargetLabels, buildTargetLabels.map({ BuildLabel($0) })) |
| XCTAssertEqual(config.projectName, projectName) |
| XCTAssertEqual(config.pathFilters, pathFilters) |
| } catch { |
| XCTFail("Unexpected assertion") |
| } |
| } |
| |
| func testLoadWithBuildLabelSourceFilters() { |
| do { |
| let sourceFilters = pathFilters.map() { "//\($0)" } |
| let dict = [ |
| "additionalFilePaths": additionalFilePaths, |
| "buildTargets": buildTargetLabels, |
| "projectName": projectName, |
| "sourceFilters": sourceFilters, |
| ] as [String : Any] |
| let data = try JSONSerialization.data(withJSONObject: dict, options: JSONSerialization.WritingOptions()) |
| config = try TulsiGeneratorConfig(data: data) |
| |
| XCTAssertEqual(config.additionalFilePaths ?? [], additionalFilePaths) |
| XCTAssertEqual(config.buildTargetLabels, buildTargetLabels.map({ BuildLabel($0) })) |
| XCTAssertEqual(config.projectName, projectName) |
| XCTAssertEqual(config.pathFilters, pathFilters) |
| } catch { |
| XCTFail("Unexpected assertion") |
| } |
| } |
| } |