|
| 1 | +# These tests are auto-generated with test data from: |
| 2 | +# https://github.com/exercism/problem-specifications/tree/main/exercises/triangle/canonical-data.json |
| 3 | +# File last updated on 2026-03-14 |
| 4 | + |
1 | 5 | source("./triangle.R") |
2 | 6 | library(testthat) |
3 | 7 |
|
4 | | -test_that("true if all sides are equal", { |
5 | | - expect_is(triangle(2, 2, 2), "equilateral") |
| 8 | + |
| 9 | +# equilateral triangle |
| 10 | + |
| 11 | +test_that("all sides are equal", { |
| 12 | + side <- c(2, 2, 2) |
| 13 | + expect_true("equilateral" %in% class(triangle(side[1], side[2], side[3]))) |
6 | 14 | }) |
7 | 15 |
|
8 | | -test_that("false if any side is unequal", { |
9 | | - expect_false(any("equilateral" %in% class(triangle(2, 3, 2)))) |
| 16 | +test_that("any side is unequal", { |
| 17 | + side <- c(2, 3, 2) |
| 18 | + expect_false("equilateral" %in% class(triangle(side[1], side[2], side[3]))) |
10 | 19 | }) |
11 | 20 |
|
12 | | -test_that("false if no sides are equal", { |
13 | | - expect_false(any("equilateral" %in% class(triangle(5, 4, 6)))) |
| 21 | +test_that("no sides are equal", { |
| 22 | + side <- c(5, 4, 6) |
| 23 | + expect_false("equilateral" %in% class(triangle(side[1], side[2], side[3]))) |
14 | 24 | }) |
15 | 25 |
|
16 | | -test_that("not equilateral if sides are zero", { |
17 | | - expect_error(triangle(0, 0, 0)) |
| 26 | +test_that("all zero sides is not a triangle", { |
| 27 | + side <- c(0, 0, 0) |
| 28 | + expect_error(triangle(side[1], side[2], side[3])) |
18 | 29 | }) |
19 | 30 |
|
20 | 31 | test_that("sides may be floats", { |
21 | | - expect_is(triangle(0.5, 0.5, 0.5), "equilateral") |
| 32 | + side <- c(0.5, 0.5, 0.5) |
| 33 | + expect_true("equilateral" %in% class(triangle(side[1], side[2], side[3]))) |
22 | 34 | }) |
23 | 35 |
|
24 | | -test_that("isosceles if last two sides are equal", { |
25 | | - expect_is(triangle(3, 4, 4), "isosceles") |
| 36 | + |
| 37 | +# isosceles triangle |
| 38 | + |
| 39 | +test_that("last two sides are equal", { |
| 40 | + side <- c(3, 4, 4) |
| 41 | + expect_true("isosceles" %in% class(triangle(side[1], side[2], side[3]))) |
26 | 42 | }) |
27 | 43 |
|
28 | | -test_that("isosceles if first two sides are equal", { |
29 | | - expect_is(triangle(4, 4, 3), "isosceles") |
| 44 | +test_that("first two sides are equal", { |
| 45 | + side <- c(4, 4, 3) |
| 46 | + expect_true("isosceles" %in% class(triangle(side[1], side[2], side[3]))) |
30 | 47 | }) |
31 | 48 |
|
32 | | -test_that("isosceles if first and last sides are equal", { |
33 | | - expect_is(triangle(4, 3, 4), "isosceles") |
| 49 | +test_that("first and last sides are equal", { |
| 50 | + side <- c(4, 3, 4) |
| 51 | + expect_true("isosceles" %in% class(triangle(side[1], side[2], side[3]))) |
34 | 52 | }) |
35 | 53 |
|
36 | 54 | test_that("equilateral triangles are also isosceles", { |
37 | | - expect_is(triangle(4, 4, 4), "isosceles") |
| 55 | + side <- c(4, 4, 4) |
| 56 | + expect_true("isosceles" %in% class(triangle(side[1], side[2], side[3]))) |
38 | 57 | }) |
39 | 58 |
|
40 | | -test_that("not isosceles if no sides are equal", { |
41 | | - expect_false(any("isosceles" %in% class(triangle(2, 3, 4)))) |
| 59 | +test_that("no sides are equal", { |
| 60 | + side <- c(2, 3, 4) |
| 61 | + expect_false("isosceles" %in% class(triangle(side[1], side[2], side[3]))) |
42 | 62 | }) |
43 | 63 |
|
44 | | -test_that("not isosceles if triangle inequality is violated", { |
45 | | - expect_error(triangle(1, 1, 3)) |
| 64 | +test_that("first triangle inequality violation", { |
| 65 | + side <- c(1, 1, 3) |
| 66 | + expect_error(triangle(side[1], side[2], side[3])) |
| 67 | +}) |
| 68 | + |
| 69 | +test_that("second triangle inequality violation", { |
| 70 | + side <- c(1, 3, 1) |
| 71 | + expect_error(triangle(side[1], side[2], side[3])) |
| 72 | +}) |
| 73 | + |
| 74 | +test_that("third triangle inequality violation", { |
| 75 | + side <- c(3, 1, 1) |
| 76 | + expect_error(triangle(side[1], side[2], side[3])) |
46 | 77 | }) |
47 | 78 |
|
48 | 79 | test_that("sides may be floats", { |
49 | | - expect_is(triangle(0.5, 0.4, 0.5), "isosceles") |
| 80 | + side <- c(0.5, 0.4, 0.5) |
| 81 | + expect_true("isosceles" %in% class(triangle(side[1], side[2], side[3]))) |
50 | 82 | }) |
51 | 83 |
|
52 | | -test_that("scalene if no sides are equal", { |
53 | | - expect_is(triangle(5, 4, 6), "scalene") |
| 84 | + |
| 85 | +# scalene triangle |
| 86 | + |
| 87 | +test_that("no sides are equal", { |
| 88 | + side <- c(5, 4, 6) |
| 89 | + expect_true("scalene" %in% class(triangle(side[1], side[2], side[3]))) |
54 | 90 | }) |
55 | 91 |
|
56 | | -test_that("not scalene if all sides are equal", { |
57 | | - expect_false(any("scalene" %in% class(triangle(4, 4, 4)))) |
| 92 | +test_that("all sides are equal", { |
| 93 | + side <- c(4, 4, 4) |
| 94 | + expect_false("scalene" %in% class(triangle(side[1], side[2], side[3]))) |
58 | 95 | }) |
59 | 96 |
|
60 | | -test_that("not scalene if two sides are equal", { |
61 | | - expect_false(any("scalene" %in% class(triangle(4, 4, 3)))) |
| 97 | +test_that("first and second sides are equal", { |
| 98 | + side <- c(4, 4, 3) |
| 99 | + expect_false("scalene" %in% class(triangle(side[1], side[2], side[3]))) |
62 | 100 | }) |
63 | 101 |
|
64 | | -test_that("not scalene if first and third sides are equal", { |
65 | | - expect_false(any("scalene" %in% class(triangle(3, 4, 3)))) |
| 102 | +test_that("first and third sides are equal", { |
| 103 | + side <- c(3, 4, 3) |
| 104 | + expect_false("scalene" %in% class(triangle(side[1], side[2], side[3]))) |
66 | 105 | }) |
67 | 106 |
|
68 | | -test_that("not scalene if second and third sides are equal", { |
69 | | - expect_false(any("scalene" %in% class(triangle(4, 3, 3)))) |
| 107 | +test_that("second and third sides are equal", { |
| 108 | + side <- c(4, 3, 3) |
| 109 | + expect_false("scalene" %in% class(triangle(side[1], side[2], side[3]))) |
70 | 110 | }) |
71 | 111 |
|
72 | | -test_that("not scalene if triangle inequality is violated", { |
73 | | - expect_error(triangle(7, 3, 2)) |
| 112 | +test_that("may not violate triangle inequality", { |
| 113 | + side <- c(7, 3, 2) |
| 114 | + expect_error(triangle(side[1], side[2], side[3])) |
74 | 115 | }) |
75 | 116 |
|
76 | 117 | test_that("sides may be floats", { |
77 | | - expect_is(triangle(0.5, 0.4, 0.6), "scalene") |
| 118 | + side <- c(0.5, 0.4, 0.6) |
| 119 | + expect_true("scalene" %in% class(triangle(side[1], side[2], side[3]))) |
78 | 120 | }) |
0 commit comments