Last active
July 28, 2017 15:54
-
-
Save stanislaw/9407f178a525a2cc4901 to your computer and use it in GitHub Desktop.
Test Triangle Type (exercise from Kent Beck's "Test-Driven Development by Example")
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// | |
// TriangleTest.swift | |
// TriangleTest | |
// | |
// Created by Stanislaw Pankevich on 24/01/16. | |
// Copyright © 2016 Stanislaw Pankevich. All rights reserved. | |
// | |
import XCTest | |
enum TriangleType { | |
case Equilateral | |
case Isosceles | |
case Scalene | |
case NotWellFormed | |
} | |
func triangleType(a: Int, _ b: Int, _ c: Int) -> TriangleType { | |
if (a <= 0 || b <= 0 || c <= 0) { | |
return .NotWellFormed | |
} | |
if (a == b && b == c) { | |
return .Equilateral | |
} | |
if (a == b || b == c || a == c) { | |
return .Isosceles | |
} | |
return .Scalene | |
} | |
class TriangleTest: XCTestCase { | |
func testEquilateral() { | |
let type = triangleType(1, 1, 1) | |
XCTAssert(type == .Equilateral) | |
} | |
func testScalene() { | |
let type = triangleType(1, 2, 3) | |
XCTAssert(type == .Scalene) | |
} | |
// Isosceles: 3 cases | |
func testIsoscelesAandB() { | |
let type = triangleType(2, 2, 1) | |
XCTAssert(type == .Isosceles) | |
} | |
func testIsoscelesBandC() { | |
let type = triangleType(2, 1, 2) | |
XCTAssert(type == .Isosceles) | |
} | |
func testIsoscelesAandC() { | |
let type = triangleType(2, 1, 2) | |
XCTAssert(type == .Isosceles) | |
} | |
// First parameter validation | |
func testMalformedIfFirstParameterIsZero() { | |
let type = triangleType(0, 1, 1) | |
XCTAssert(type == .NotWellFormed) | |
} | |
func testMalformedIfFirstParameterIsNegative() { | |
let type = triangleType(-1, 1, 1) | |
XCTAssert(type == .NotWellFormed) | |
} | |
// Second parameter validation | |
func testMalformedIfSecondParameterIsZero() { | |
let type = triangleType(1, 0, 1) | |
XCTAssert(type == .NotWellFormed) | |
} | |
func testMalformedIfSecondParameterIsNegative() { | |
let type = triangleType(1, -2, 1) | |
XCTAssert(type == .NotWellFormed) | |
} | |
// Third parameter validation | |
func testMalformedIfThirdParameterIsZero() { | |
let type = triangleType(1, 1, 0) | |
XCTAssert(type == .NotWellFormed) | |
} | |
func testMalformedIfThirdParameterIsNegative() { | |
let type = triangleType(1, 1, -3) | |
XCTAssert(type == .NotWellFormed) | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
You forgot to check if sum of any two sides is bigger than the third one. For instance, a
5:1:2
triangle is according to your program scalene, whilst in fact it is malformed.