Sha256: 3d4584c1f4dcb606f7a95be4c43d4eb57ebb3cb28dab183bd3c159e81ffc9615

Contents?: true

Size: 1.54 KB

Versions: 75

Compression:

Stored size: 1.54 KB

Contents

import XCTest
import Foundation
@testable import RobotName

#if os(Linux)
    typealias Regex = RegularExpression
#elseif os(OSX)
    typealias Regex = NSRegularExpression
#endif

class RobotNameTests: XCTestCase {
    func robotNameIsCorrectlyFormatted(_ name: String) -> Bool {
        let robotNameRegex = try? Regex(pattern: "\\A\\w{2}\\d{3}\\z", options: Regex.Options.caseInsensitive)
        guard let matches = robotNameRegex?.matches(in: name, options: .withoutAnchoringBounds, range: NSRange(0..<name.utf16.count)) else { return false }

        return matches.count > 0
    }

    func testHasName() {
        let robot = Robot()
        XCTAssert(robotNameIsCorrectlyFormatted(robot.name))
    }

    func testNameSticks() {
        let robot = Robot()
        let name = robot.name
        XCTAssertEqual(name, robot.name)
    }

    func testDifferentRobotsHaveDifferentNames() {
        let firstRobot = Robot()
        let secondRobot = Robot()
        XCTAssertNotEqual(firstRobot.name, secondRobot.name)
    }

    func testResetName() {
        var robot = Robot()
        let firstName = robot.name
        robot.resetName()
        let secondName = robot.name
        XCTAssertNotEqual(firstName, secondName)
    }

    static var allTests: [(String, (RobotNameTests) -> () throws -> Void)] {
        return [
            ("testHasName", testHasName),
            ("testNameSticks", testNameSticks),
            ("testDifferentRobotsHaveDifferentNames", testDifferentRobotsHaveDifferentNames),
            ("testResetName", testResetName),
        ]
    }
}

Version data entries

75 entries across 75 versions & 1 rubygems

Version Path
trackler-2.0.8.46 tracks/swift/exercises/robot-name/Tests/RobotNameTests/RobotNameTests.swift
trackler-2.0.8.45 tracks/swift/exercises/robot-name/Tests/RobotNameTests/RobotNameTests.swift
trackler-2.0.8.44 tracks/swift/exercises/robot-name/Tests/RobotNameTests/RobotNameTests.swift
trackler-2.0.8.43 tracks/swift/exercises/robot-name/Tests/RobotNameTests/RobotNameTests.swift
trackler-2.0.8.42 tracks/swift/exercises/robot-name/Tests/RobotNameTests/RobotNameTests.swift
trackler-2.0.8.41 tracks/swift/exercises/robot-name/Tests/RobotNameTests/RobotNameTests.swift
trackler-2.0.8.40 tracks/swift/exercises/robot-name/Tests/RobotNameTests/RobotNameTests.swift
trackler-2.0.8.39 tracks/swift/exercises/robot-name/Tests/RobotNameTests/RobotNameTests.swift
trackler-2.0.8.38 tracks/swift/exercises/robot-name/Tests/RobotNameTests/RobotNameTests.swift
trackler-2.0.8.37 tracks/swift/exercises/robot-name/Tests/RobotNameTests/RobotNameTests.swift
trackler-2.0.8.36 tracks/swift/exercises/robot-name/Tests/RobotNameTests/RobotNameTests.swift
trackler-2.0.8.35 tracks/swift/exercises/robot-name/Tests/RobotNameTests/RobotNameTests.swift
trackler-2.0.8.34 tracks/swift/exercises/robot-name/Tests/RobotNameTests/RobotNameTests.swift
trackler-2.0.8.33 tracks/swift/exercises/robot-name/Tests/RobotNameTests/RobotNameTests.swift
trackler-2.0.8.32 tracks/swift/exercises/robot-name/Tests/RobotNameTests/RobotNameTests.swift
trackler-2.0.8.31 tracks/swift/exercises/robot-name/Tests/RobotNameTests/RobotNameTests.swift
trackler-2.0.8.30 tracks/swift/exercises/robot-name/Tests/RobotNameTests/RobotNameTests.swift
trackler-2.0.8.29 tracks/swift/exercises/robot-name/Tests/RobotNameTests/RobotNameTests.swift
trackler-2.0.8.28 tracks/swift/exercises/robot-name/Tests/RobotNameTests/RobotNameTests.swift
trackler-2.0.8.27 tracks/swift/exercises/robot-name/Tests/RobotNameTests/RobotNameTests.swift