浏览代码

Merge pull request #951 from jackattack24/matchCanonical

Triangle: Update tests to use canonical data
Stuart Kent 9 年前
父节点
当前提交
6416232406

+ 1
- 0
exercises/triangle/.meta/.version 查看文件

@@ -0,0 +1 @@
1
+1.0.0

+ 1
- 1
exercises/triangle/.meta/src/reference/java/Triangle.java 查看文件

@@ -25,7 +25,7 @@ class Triangle {
25 25
     }
26 26
 
27 27
     boolean isIsosceles() {
28
-        return uniqueSides == 2;
28
+        return (uniqueSides == 2 || isEquilateral());
29 29
     }
30 30
 
31 31
     boolean isScalene() {

+ 59
- 40
exercises/triangle/src/test/java/TriangleTest.java 查看文件

@@ -4,6 +4,7 @@ import org.junit.Rule;
4 4
 import org.junit.rules.ExpectedException;
5 5
 
6 6
 import static org.junit.Assert.assertTrue;
7
+import static org.junit.Assert.assertFalse;
7 8
 
8 9
 public class TriangleTest {
9 10
 
@@ -19,24 +20,39 @@ public class TriangleTest {
19 20
 
20 21
     @Ignore("Remove to run test")
21 22
     @Test
22
-    public void largerEquilateralTrianglesAlsoHaveEqualSides() throws TriangleException {
23
-        Triangle triangle = new Triangle(10, 10, 10);
23
+    public void trianglesWithOneUnequalSideAreNotEquilateral() throws TriangleException {
24
+        Triangle triangle = new Triangle(2, 3, 2);
24 25
 
25
-        assertTrue(triangle.isEquilateral());
26
+        assertFalse(triangle.isEquilateral());
26 27
     }
27 28
 
28 29
     @Ignore("Remove to run test")
29 30
     @Test
30
-    public void isoscelesTrianglesHaveLastTwoSidesEqual() throws TriangleException {
31
-        Triangle triangle = new Triangle(3, 4, 4);
31
+    public void trianglesWithNoEqualSidesAreNotEquilateral() throws TriangleException {
32
+        Triangle triangle = new Triangle(5, 4, 6);
32 33
 
33
-        assertTrue(triangle.isIsosceles());
34
+        assertFalse(triangle.isEquilateral());
35
+    }
36
+    
37
+    @Ignore("Remove to run test")
38
+    @Test
39
+    public void trianglesWithNoSizeAreIllegal() throws TriangleException {
40
+        expectedException.expect(TriangleException.class);
41
+        new Triangle(0, 0, 0);
34 42
     }
35 43
 
36 44
     @Ignore("Remove to run test")
37 45
     @Test
38
-    public void isoscelesTrianglesHaveFirstAndLastSidesEqual() throws TriangleException {
39
-        Triangle triangle = new Triangle(4, 3, 4);
46
+    public void verySmallTrianglesCanBeEquilateral() throws TriangleException {
47
+        Triangle triangle = new Triangle(0.5, 0.5, 0.5);
48
+
49
+        assertTrue(triangle.isEquilateral());
50
+    }
51
+
52
+    @Ignore("Remove to run test")
53
+    @Test
54
+    public void isoscelesTrianglesHaveLastTwoSidesEqual() throws TriangleException {
55
+        Triangle triangle = new Triangle(3, 4, 4);
40 56
 
41 57
         assertTrue(triangle.isIsosceles());
42 58
     }
@@ -48,79 +64,82 @@ public class TriangleTest {
48 64
 
49 65
         assertTrue(triangle.isIsosceles());
50 66
     }
51
-
67
+    
52 68
     @Ignore("Remove to run test")
53 69
     @Test
54
-    public void isoscelesTrianglesHaveInFactExactlyTwoSidesEqual() throws TriangleException {
55
-        Triangle triangle = new Triangle(10, 10, 2);
70
+    public void isoscelesTrianglesHaveFirstAndLastSidesEqual() throws TriangleException {
71
+        Triangle triangle = new Triangle(4, 3, 4);
56 72
 
57 73
         assertTrue(triangle.isIsosceles());
58 74
     }
59 75
 
60 76
     @Ignore("Remove to run test")
61 77
     @Test
62
-    public void scaleneTrianglesHaveNoEqualSides() throws TriangleException {
63
-        Triangle triangle = new Triangle(3, 4, 5);
78
+    public void isoscelesTrianglesCanHaveAllSidesEqual() throws TriangleException {
79
+        Triangle triangle = new Triangle(4, 4, 4);
64 80
 
65
-        assertTrue(triangle.isScalene());
81
+        assertTrue(triangle.isIsosceles());
66 82
     }
67 83
 
68 84
     @Ignore("Remove to run test")
69 85
     @Test
70
-    public void scaleneTrianglesHaveNoEqualSidesAtLargerScaleEither() throws TriangleException {
71
-        Triangle triangle = new Triangle(10, 11, 12);
86
+    public void isoscelesTrianglesMustHaveAtLeastTwoEqualSides() throws TriangleException {
87
+        Triangle triangle = new Triangle(2, 3, 4);
72 88
 
73
-        assertTrue(triangle.isScalene());
89
+        assertFalse(triangle.isIsosceles());
74 90
     }
75
-
91
+    
76 92
     @Ignore("Remove to run test")
77 93
     @Test
78
-    public void scaleneTrianglesHaveNoEqualSidesInDescendingOrderEither() throws TriangleException {
79
-        Triangle triangle = new Triangle(5, 4, 2);
80
-
81
-        assertTrue(triangle.isScalene());
94
+    public void testSidesThatViolateTriangleInequalityAreNotIsoscelesEvenIfTwoAreEqual() throws TriangleException {
95
+        expectedException.expect(TriangleException.class);
96
+        new Triangle(1, 1, 3);
82 97
     }
83 98
 
84 99
     @Ignore("Remove to run test")
85 100
     @Test
86
-    public void verySmallTrianglesAreLegal() throws TriangleException {
87
-        Triangle triangle = new Triangle(0.4, 0.6, 0.3);
101
+    public void verySmallTrianglesCanBeIsosceles() throws TriangleException {
102
+        Triangle triangle = new Triangle(0.5, 0.4, 0.5);
88 103
 
89
-        assertTrue(triangle.isScalene());
104
+        assertTrue(triangle.isIsosceles());
90 105
     }
91 106
 
92 107
     @Ignore("Remove to run test")
93 108
     @Test
94
-    public void trianglesWithNoSizeAreIllegal() throws TriangleException {
95
-        expectedException.expect(TriangleException.class);
96
-        new Triangle(0, 0, 0);
109
+    public void scaleneTrianglesHaveNoEqualSides() throws TriangleException {
110
+        Triangle triangle = new Triangle(5, 4, 6);
111
+
112
+        assertTrue(triangle.isScalene());
97 113
     }
98 114
 
99 115
     @Ignore("Remove to run test")
100 116
     @Test
101
-    public void trianglesWithNegativeSidesAreIllegal() throws TriangleException {
102
-        expectedException.expect(TriangleException.class);
103
-        new Triangle(3, 4, -5);
117
+    public void trianglesWithAllSidesEqualAreNotScalene() throws TriangleException {
118
+        Triangle triangle = new Triangle(4, 4, 4);
119
+
120
+        assertFalse(triangle.isScalene());
104 121
     }
105 122
 
106 123
     @Ignore("Remove to run test")
107 124
     @Test
108
-    public void trianglesViolatingTriangleInequalityAreIllegal() throws TriangleException {
109
-        expectedException.expect(TriangleException.class);
110
-        new Triangle(1, 1, 3);
111
-    }
125
+    public void trianglesWithOneUnequalSideAreNotScalene() throws TriangleException {
126
+        Triangle triangle = new Triangle(4, 4, 3);
112 127
 
128
+        assertFalse(triangle.isScalene());
129
+    }
130
+    
113 131
     @Ignore("Remove to run test")
114 132
     @Test
115
-    public void trianglesViolatingTriangleInequalityAreIllegal2() throws TriangleException {
133
+    public void testSidesThatViolateTriangleInequalityAreNotScaleneEvenIfTheyAreAllDifferent() throws TriangleException {
116 134
         expectedException.expect(TriangleException.class);
117
-        new Triangle(2, 5, 2);
135
+        new Triangle(7, 3, 2);
118 136
     }
119 137
 
120 138
     @Ignore("Remove to run test")
121 139
     @Test
122
-    public void trianglesViolatingTriangleInequalityAreIllegal3() throws TriangleException {
123
-        expectedException.expect(TriangleException.class);
124
-        new Triangle(7, 3, 2);
140
+    public void verySmallTrianglesCanBeScalene() throws TriangleException {
141
+        Triangle triangle = new Triangle(0.5, 0.4, 0.6);
142
+
143
+        assertTrue(triangle.isScalene());
125 144
     }
126 145
 }