Sha256: 30de3500a786300baebf676b8af73ad138b868cc00e33c928738ff1583c3328e

Contents?: true

Size: 2 KB

Versions: 133

Compression:

Stored size: 2 KB

Contents

@Grab('org.spockframework:spock-core:1.0-groovy-2.4')
import spock.lang.*

class TriangleSpec extends Specification {

    def 'returns true if the triangle is equilateral'() {
        expect: 'true if all sides are equal'
        Triangle.isEquilateral(2, 2, 2)

        and: 'false if any side is unequal'
        !Triangle.isEquilateral(2, 3, 2)

        and: 'false if no sides are equal'
        !Triangle.isEquilateral(5, 4, 6)
        
        and: 'all zero sides are illegal, so the triangle is not equilateral' 
        !Triangle.isEquilateral(0, 0, 0)
    } 

    def 'returns true if the triangle is isosceles'() {
        expect: 'true if last two sides are equal'
        Triangle.isIsosceles(3, 4, 4)

        and: 'true if first two sides are equal'
        Triangle.isIsosceles(4, 4, 3)

        and: 'true if first and last sides are equal'
        Triangle.isIsosceles(4, 3, 4)

        and: 'equilateral triangles are also isosceles'
        Triangle.isIsosceles(4, 4, 4)

        and: 'false if no sides are equal'
        !Triangle.isIsosceles(2, 3, 4)

        and: 'sides that violate triangle inequality are not isosceles, even if two sides are equal'
        !Triangle.isIsosceles(1, 1, 3)
    }

    def 'returns true if the triangle is scalene'() {
        expect: 'true if no sides are equal'
        Triangle.isScalene(5, 4, 6)

        and: 'false if all sides are equal'
        !Triangle.isScalene(4, 4, 4)

        and: 'false if two sides are equal'
        !Triangle.isScalene(4, 4, 3)

        and: 'sides that violate triangle inequality are not scalene, even if they are all different'
        !Triangle.isScalene(7, 3, 2)
    }

    @Ignore
    def 'sides may be non-integral'() {
        expect: 'equilateral triangle sides may be non-integral'
        Triangle.isEquilateral(0.5, 0.5, 0.5)

        and: 'isosceles triangle sides may be non-integral'
        Triangle.isIsosceles(0.5, 0.4, 0.5)

        and: 'scalene triangle sides may be non-integral'
        Triangle.isScalene(0.5, 0.4, 0.6)
    }

}

Version data entries

133 entries across 133 versions & 1 rubygems

Version Path
trackler-2.2.1.180 tracks/groovy/exercises/triangle/TriangleSpec.groovy
trackler-2.2.1.179 tracks/groovy/exercises/triangle/TriangleSpec.groovy
trackler-2.2.1.178 tracks/groovy/exercises/triangle/TriangleSpec.groovy
trackler-2.2.1.177 tracks/groovy/exercises/triangle/TriangleSpec.groovy
trackler-2.2.1.176 tracks/groovy/exercises/triangle/TriangleSpec.groovy
trackler-2.2.1.175 tracks/groovy/exercises/triangle/TriangleSpec.groovy
trackler-2.2.1.174 tracks/groovy/exercises/triangle/TriangleSpec.groovy
trackler-2.2.1.173 tracks/groovy/exercises/triangle/TriangleSpec.groovy
trackler-2.2.1.172 tracks/groovy/exercises/triangle/TriangleSpec.groovy
trackler-2.2.1.171 tracks/groovy/exercises/triangle/TriangleSpec.groovy
trackler-2.2.1.170 tracks/groovy/exercises/triangle/TriangleSpec.groovy
trackler-2.2.1.169 tracks/groovy/exercises/triangle/TriangleSpec.groovy
trackler-2.2.1.167 tracks/groovy/exercises/triangle/TriangleSpec.groovy
trackler-2.2.1.166 tracks/groovy/exercises/triangle/TriangleSpec.groovy
trackler-2.2.1.165 tracks/groovy/exercises/triangle/TriangleSpec.groovy
trackler-2.2.1.164 tracks/groovy/exercises/triangle/TriangleSpec.groovy
trackler-2.2.1.163 tracks/groovy/exercises/triangle/TriangleSpec.groovy
trackler-2.2.1.162 tracks/groovy/exercises/triangle/TriangleSpec.groovy
trackler-2.2.1.161 tracks/groovy/exercises/triangle/TriangleSpec.groovy
trackler-2.2.1.160 tracks/groovy/exercises/triangle/TriangleSpec.groovy