Skip to content

Commit 6606516

Browse files
authored
Merge pull request #43 from HighOakRobotics/dev
Dev
2 parents aec2d0c + ebd6957 commit 6606516

4 files changed

Lines changed: 152 additions & 4 deletions

File tree

src/main/java/com/ftc11392/sequoia/task/Scheduler.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@
44
import com.ftc11392.sequoia.util.Clock;
55
import com.ftc11392.sequoia.util.OpModeState;
66
import com.qualcomm.robotcore.hardware.HardwareMap;
7-
//import org.apache.logging.log4j.LogManager;
8-
//import org.apache.logging.log4j.Logger;
97
import org.firstinspires.ftc.robotcore.external.Telemetry;
108

119
import java.util.*;

src/main/java/com/ftc11392/sequoia/task/SequentialTaskBundle.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,15 @@ public void addTasks(Task... tasks) {
2525
registerBundledTasks(tasks);
2626

2727
for (Task task : tasks) {
28+
System.out.println("Registering new " + task.getClass());
2829
this.tasks.add(task);
2930
subsystems.addAll(task.getSubsystems());
3031
}
3132
}
3233

3334
@Override
3435
public void init() {
36+
System.out.println("Init loop called");
3537
currentTaskIndex = 0;
3638

3739
if (!tasks.isEmpty()) {
@@ -41,6 +43,7 @@ public void init() {
4143

4244
@Override
4345
public void loop() {
46+
System.out.println("Loop method called");
4447
if (tasks.isEmpty()) {
4548
return;
4649
}
@@ -60,6 +63,7 @@ public void loop() {
6063

6164
@Override
6265
public void stop(boolean interrupted) {
66+
System.out.println("Stop method called");
6367
if (interrupted && !tasks.isEmpty() && currentTaskIndex > -1 && currentTaskIndex < tasks.size()) {
6468
tasks.get(currentTaskIndex).stop(true);
6569
}
Lines changed: 146 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,146 @@
1+
package com.ftc11392.sequoia.task;
2+
3+
import com.ftc11392.sequoia.subsystem.Subsystem;
4+
import com.ftc11392.sequoia.util.OpModeState;
5+
import org.firstinspires.ftc.robotcore.external.Telemetry;
6+
import org.firstinspires.ftc.robotcore.internal.opmode.TelemetryImpl;
7+
import org.junit.jupiter.api.DisplayName;
8+
import org.junit.jupiter.api.Test;
9+
10+
import static org.junit.jupiter.api.Assertions.*;
11+
import static org.mockito.ArgumentMatchers.anyString;
12+
import static org.mockito.Mockito.*;
13+
14+
public class ParallelTaskBundleTest {
15+
16+
@DisplayName("Test Parallel Task Bundle")
17+
@Test
18+
public void TestParallelTaskBundle() {
19+
Scheduler.getInstance().cancelAll();
20+
Scheduler.getInstance().clearSubsystems();
21+
Scheduler.getInstance().clearBehaviors();
22+
23+
TelemetryImpl fakeTele = mock(TelemetryImpl.class);
24+
25+
when(fakeTele.log()).thenReturn(mock(Telemetry.Log.class));
26+
when(fakeTele.addLine(anyString())).thenReturn(mock(Telemetry.Line.class, RETURNS_DEEP_STUBS));
27+
28+
Scheduler.getInstance().init(fakeTele);
29+
30+
Subsystem mockedSubsystem = mock(Subsystem.class);
31+
Subsystem mockedSubsystem2 = mock(Subsystem.class);
32+
33+
Scheduler.getInstance().initSubsystems(null);
34+
Scheduler.getInstance().loop(OpModeState.INIT_LOOP);
35+
36+
Task testTask = new Task() {
37+
@Override
38+
public void init() {
39+
running = true;
40+
addSubsystems(mockedSubsystem);
41+
}
42+
43+
@Override
44+
public void loop() {
45+
}
46+
47+
@Override
48+
public void stop(boolean interrupted) {
49+
running = false;
50+
}
51+
};
52+
53+
Task testTask2 = new Task() {
54+
55+
@Override
56+
public void init() {
57+
running = true;
58+
addSubsystems(mockedSubsystem2);
59+
}
60+
61+
@Override
62+
public void loop() {
63+
}
64+
65+
@Override
66+
public void stop(boolean interrupted) {
67+
running = false;
68+
}
69+
};
70+
71+
ParallelTaskBundle testParallelTaskBundle = new ParallelTaskBundle(testTask, testTask2);
72+
73+
Scheduler.getInstance().schedule(testParallelTaskBundle);
74+
Scheduler.getInstance().loop(OpModeState.RUN_LOOP);
75+
76+
assertTrue(testTask.isRunning());
77+
78+
Scheduler.getInstance().cancelAll();
79+
Scheduler.getInstance().loop(OpModeState.RUN_LOOP);
80+
81+
assertFalse(testTask.isRunning());
82+
}
83+
84+
@DisplayName("Test Parallel Task Bundle Same Subsystem")
85+
@Test
86+
public void TestSameSubsystem() {
87+
Scheduler.getInstance().cancelAll();
88+
Scheduler.getInstance().clearSubsystems();
89+
Scheduler.getInstance().clearBehaviors();
90+
91+
TelemetryImpl fakeTele = mock(TelemetryImpl.class);
92+
93+
when(fakeTele.log()).thenReturn(mock(Telemetry.Log.class));
94+
when(fakeTele.addLine(anyString())).thenReturn(mock(Telemetry.Line.class, RETURNS_DEEP_STUBS));
95+
96+
Scheduler.getInstance().init(fakeTele);
97+
98+
Subsystem mockedSubsystem = mock(Subsystem.class);
99+
100+
Scheduler.getInstance().initSubsystems(null);
101+
Scheduler.getInstance().loop(OpModeState.INIT_LOOP);
102+
103+
Task testTask = new Task() {
104+
@Override
105+
public void init() {
106+
running = true;
107+
}
108+
109+
@Override
110+
public void loop() {
111+
}
112+
113+
@Override
114+
public void stop(boolean interrupted) {
115+
running = false;
116+
}
117+
};
118+
119+
testTask.addSubsystems(mockedSubsystem);
120+
121+
Task testTask2 = new Task() {
122+
123+
@Override
124+
public void init() {
125+
running = true;
126+
}
127+
128+
@Override
129+
public void loop() {
130+
}
131+
132+
@Override
133+
public void stop(boolean interrupted) {
134+
running = false;
135+
}
136+
};
137+
138+
testTask2.addSubsystems(mockedSubsystem);
139+
140+
assertEquals(testTask.getSubsystems().toArray()[0], testTask2.getSubsystems().toArray()[0]);
141+
Throwable thrownException = assertThrows(TaskException.class, () -> {
142+
ParallelTaskBundle testParallelTaskBundle = new ParallelTaskBundle(testTask, testTask2);
143+
});
144+
assertEquals(thrownException.getMessage(), "Multiple tasks in a parallel bundle cannot require the same subsystems");
145+
}
146+
}

src/test/java/com/ftc11392/sequoia/task/TaskTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,9 +65,9 @@ public void stop(boolean interrupted) {
6565
assertFalse(testTask.isRunning());
6666
}
6767

68-
@DisplayName("Test Task Timeout")
68+
@DisplayName("Test Task With Timeout")
6969
@Test
70-
public void testTaskTimeout() {
70+
public void testTaskWithTimeout() {
7171
int timeoutCount = 4;
7272

7373
Scheduler.getInstance().cancelAll();

0 commit comments

Comments
 (0)