-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCircleTests.java
More file actions
130 lines (104 loc) · 3.75 KB
/
Copy pathCircleTests.java
File metadata and controls
130 lines (104 loc) · 3.75 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
package lab5;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
public class CircleTests {
private Circle circle;
private Point center;
@BeforeEach
public void setUp() {
center = new Point(0, 0); // center at origin
circle = new Circle(center, 5.0); // radius of 5.0
}
@Test
public void testConstructor_validParameters() {
assertNotNull(circle);
assertEquals(center, circle.center);
assertEquals(5.0, circle.radius);
}
@Test
public void testConstructor_invalidRadius() {
IllegalArgumentException exception = assertThrows(IllegalArgumentException.class, () -> {
new Circle(center, -5.0); // invalid radius
});
assertEquals("Radius must be positive", exception.getMessage());
// other possible way to test the exception.
// try {
// new Circle(center, -5.0); // invalid radius
// fail("Expected IllegalArgumentException for non-positive radius");
// //fail(...) makes sure that even though in the case where Circle(center, -0.5) didn't throw exception, it makes sure the it failed.
// } catch (IllegalArgumentException e) {
// assertEquals("Radius must be positive", e.getMessage());
// }
}
@Test
public void testConstructor_nullCenter() {
IllegalArgumentException exception = assertThrows(IllegalArgumentException.class, () -> {
new Circle(null, 5.0); // null center
});
assertEquals("Center point cannot be null", exception.getMessage());
// other possible way to test the exception .
// try {
// new Circle(null, 5.0);
// fail("Expected IllegalArgumentException for null center");
// } catch (IllegalArgumentException e) {
// assertEquals("Center point cannot be null", e.getMessage());
// }
}
@Test
public void testComputeArea() {
assertEquals(Math.PI * 25.0, circle.computeArea(), 1e-6); // area should be PI * r^2
}
@Test
public void testComputePerimeter() {
assertEquals(Math.PI * 10.0, circle.computePerimeter(), 1e-6); // perimeter should be 2 * PI * r
}
@Test
public void testPointInCircle_pointInside() {
Point p = new Point(3, 4); // inside the circle (3^2 + 4^2 = 25)
assertTrue(circle.pointInCircle(p));
}
@Test
public void testPointInCircle_pointOnBoundary() {
Point p = new Point(5, 0); // on the boundary of the circle
assertTrue(circle.pointInCircle(p));
}
@Test
public void testPointInCircle_pointOutside() {
Point p = new Point(6, 0); // outside the circle
assertFalse(circle.pointInCircle(p));
}
@Test
public void testEquals_sameCircle() {
Circle anotherCircle = new Circle(center, 5.0);
assertEquals(circle, anotherCircle);
}
@Test
public void testEquals_differentCenter() {
Circle anotherCircle = new Circle(new Point(1, 1), 5.0);
assertNotEquals(circle, anotherCircle);
}
@Test
public void testEquals_differentRadius() {
Circle anotherCircle = new Circle(center, 4.9);
assertNotEquals(circle, anotherCircle);
}
@Test
public void testEqualCircleItself() {
assertEquals(circle, circle);
}
@Test
public void testEqualCircleNull() {
assertNotEquals(circle, null);
}
@Test
public void testEqualCircleNotanInstance() {
String test = "Hello world";
assertNotEquals(circle, test);
}
@Test
public void testHashCode() {
Circle anotherCircle = new Circle(center, 5.0);
assertEquals(circle.hashCode(), anotherCircle.hashCode());
}
}