Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,10 @@ public class MockSparkBase extends MockedMotorBase {
private final SparkPIDController pidController;
private final MockedSparkMaxPIDController pidControllerImpl;
private SparkAbsoluteEncoder absoluteEncoder = null;
private MockedEncoder absoluteEncoderImpl = null;
private MockedEncoder alternateEncoder = null;
private SparkAnalogSensor analogSensor = null;
private MockedEncoder analogSensorImpl = null;
private final String name;

/**
Expand Down Expand Up @@ -183,6 +185,18 @@ public double getBusVoltage() {
@Override
public void close() {
controllers.remove(port);
if (encoder != null) {
encoder.close();
}
if (absoluteEncoderImpl != null) {
absoluteEncoderImpl.close();
}
if (analogSensorImpl != null) {
analogSensorImpl.close();
}
if (alternateEncoder != null) {
alternateEncoder.close();
}
super.close();
}

Expand All @@ -196,7 +210,7 @@ public void close() {
*/
public synchronized SparkAbsoluteEncoder getAbsoluteEncoder(SparkAbsoluteEncoder.Type encoderType) {
if(absoluteEncoder == null) {
MockedEncoder absoluteEncoderImpl = new MockedEncoder(
absoluteEncoderImpl = new MockedEncoder(
SimDevice.create("CANDutyCycle:" + name, port), 0, false,
true, true);
absoluteEncoder = Mocks.createMock(SparkAbsoluteEncoder.class, absoluteEncoderImpl, new REVLibErrorAnswer());
Expand Down Expand Up @@ -243,7 +257,8 @@ public synchronized RelativeEncoder getAlternateEncoder(SparkMaxAlternateEncoder
*/
public synchronized SparkAnalogSensor getAnalog(SparkAnalogSensor.Mode mode) {
if(analogSensor == null) {
MockedEncoder analogSensorImpl = new MockedEncoder(SimDevice.create("CANAIn:" + name, port), 0, true, true);
analogSensorImpl = new MockedEncoder(
SimDevice.create("CANAIn:" + name, port), 0, true, true);
analogSensor = Mocks.createMock(SparkAnalogSensor.class, analogSensorImpl, new REVLibErrorAnswer());
}
return analogSensor;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,22 @@ public void testHasEncoder() {
assertNotNull(simPosition);
}

@Test
public void testCanRecreateIfClosed() {
for (int i = 0; i < 2; i++) {
try (var mockSpark = new MockSparkMax(0, MotorType.kBrushless)) {
SimDeviceSim simSpark =
new SimDeviceSim("CANMotor:CANSparkMax", 0);
assertNotNull(simSpark);
SimDeviceSim simEncoder =
new SimDeviceSim("CANEncoder:CANSparkMax", 0);
assertNotNull(simEncoder);
SimDouble simPosition = simEncoder.getDouble("position");
assertNotNull(simPosition);
}
}
}

@Test
public void testGetOutputCurrent() {
var mockSpark = new MockSparkMax(0, MotorType.kBrushless);
Expand Down