diff --git a/src/main/java/org/firstinspires/ftc/teamcode/subsystems/chute/MockCRServo.java b/src/main/java/org/firstinspires/ftc/teamcode/mock/MockCRServo.java similarity index 78% rename from src/main/java/org/firstinspires/ftc/teamcode/subsystems/chute/MockCRServo.java rename to src/main/java/org/firstinspires/ftc/teamcode/mock/MockCRServo.java index d4dbe42..db8068e 100644 --- a/src/main/java/org/firstinspires/ftc/teamcode/subsystems/chute/MockCRServo.java +++ b/src/main/java/org/firstinspires/ftc/teamcode/mock/MockCRServo.java @@ -1,13 +1,16 @@ -package org.firstinspires.ftc.teamcode.subsystems.chute; +package org.firstinspires.ftc.teamcode.mock; /** * Mock continuous rotation servo for testing. * Mirrors the override pattern of {@link FtcCRServo} without requiring the FTC SDK. * - *
Extends MockDCMotor and overrides {@code setPower()} to track commanded values, + *
Extends MockMotor and overrides {@code setPower()} to track commanded values, * letting tests verify that ChuteController correctly routes through a subclassed motor. + * + * @see FtcCRServo + * @see MockDCMotor */ -public class MockCRServo extends MockDCMotor { +public class MockCRServo extends MockMotor { private double lastCommandedPower = 0.0; private int setPowerCallCount = 0; diff --git a/src/main/java/org/firstinspires/ftc/teamcode/mock/MockDCMotor.java b/src/main/java/org/firstinspires/ftc/teamcode/mock/MockDCMotor.java new file mode 100644 index 0000000..be54eb6 --- /dev/null +++ b/src/main/java/org/firstinspires/ftc/teamcode/mock/MockDCMotor.java @@ -0,0 +1,12 @@ +package org.firstinspires.ftc.teamcode.mock; + +/** + * Mock DC motor for testing. + * Provides type identity for DC motor-specific code paths while + * inheriting all simulation behavior from {@link MockMotor}. + * + * @see FtcDCMotor + * @see MockCRServo + */ +public class MockDCMotor extends MockMotor { +} \ No newline at end of file diff --git a/src/main/java/org/firstinspires/ftc/teamcode/subsystems/chute/MockDCMotor.java b/src/main/java/org/firstinspires/ftc/teamcode/mock/MockMotor.java similarity index 86% rename from src/main/java/org/firstinspires/ftc/teamcode/subsystems/chute/MockDCMotor.java rename to src/main/java/org/firstinspires/ftc/teamcode/mock/MockMotor.java index 37b4a33..f617ca2 100644 --- a/src/main/java/org/firstinspires/ftc/teamcode/subsystems/chute/MockDCMotor.java +++ b/src/main/java/org/firstinspires/ftc/teamcode/mock/MockMotor.java @@ -1,14 +1,14 @@ -package org.firstinspires.ftc.teamcode.subsystems.chute; +package org.firstinspires.ftc.teamcode.mock; /** * Simple mock motor. */ -public class MockDCMotor { +public class MockMotor { private double power; private double position; private double speed = 1.0; // rad/s at full power - public MockDCMotor() { + public MockMotor() { this.power = 0.0; this.position = 0.0; } diff --git a/src/main/java/org/firstinspires/ftc/teamcode/subsystems/chute/MockPotentiometer.java b/src/main/java/org/firstinspires/ftc/teamcode/mock/MockPotentiometer.java similarity index 94% rename from src/main/java/org/firstinspires/ftc/teamcode/subsystems/chute/MockPotentiometer.java rename to src/main/java/org/firstinspires/ftc/teamcode/mock/MockPotentiometer.java index a86dd2e..a52c299 100644 --- a/src/main/java/org/firstinspires/ftc/teamcode/subsystems/chute/MockPotentiometer.java +++ b/src/main/java/org/firstinspires/ftc/teamcode/mock/MockPotentiometer.java @@ -1,4 +1,4 @@ -package org.firstinspires.ftc.teamcode.subsystems.chute; +package org.firstinspires.ftc.teamcode.mock; /** * Simple mock potentiometer with configurable wraparound. diff --git a/src/main/java/org/firstinspires/ftc/teamcode/opmodes/ChuteOpMode.java b/src/main/java/org/firstinspires/ftc/teamcode/opmodes/ChuteOpMode.java index 69ac091..8f0b43f 100644 --- a/src/main/java/org/firstinspires/ftc/teamcode/opmodes/ChuteOpMode.java +++ b/src/main/java/org/firstinspires/ftc/teamcode/opmodes/ChuteOpMode.java @@ -11,7 +11,7 @@ import org.firstinspires.ftc.teamcode.subsystems.chute.FtcCRServo; import org.firstinspires.ftc.teamcode.subsystems.chute.FtcDCMotor; import org.firstinspires.ftc.teamcode.subsystems.chute.FtcPotentiometer; import org.firstinspires.ftc.teamcode.subsystems.chute.ChuteController; -import org.firstinspires.ftc.teamcode.subsystems.chute.MockDCMotor; +import org.firstinspires.ftc.teamcode.subsystems.chute.MockMotor; /** * Example OpMode demonstrating chute control with real hardware. @@ -46,7 +46,7 @@ public class ChuteOpMode extends LinearOpMode { FtcPotentiometer pot = new FtcPotentiometer(chutePot, POT_WRAP_AMOUNT); // Create motor adapter — either DcMotor or CRServo - MockDCMotor motor; + MockMotor motor; if (USE_SERVO) { CRServo chuteServo = hardwareMap.get(CRServo.class, "chute_servo"); motor = new FtcCRServo(chuteServo); diff --git a/src/main/java/org/firstinspires/ftc/teamcode/subsystems/chute/Chute.java b/src/main/java/org/firstinspires/ftc/teamcode/subsystems/chute/Chute.java index ec928eb..77262a4 100644 --- a/src/main/java/org/firstinspires/ftc/teamcode/subsystems/chute/Chute.java +++ b/src/main/java/org/firstinspires/ftc/teamcode/subsystems/chute/Chute.java @@ -1,5 +1,9 @@ package org.firstinspires.ftc.teamcode.subsystems.chute; +import org.firstinspires.ftc.teamcode.mock.MockMotor; +import org.firstinspires.ftc.teamcode.mock.MockDCMotor; +import org.firstinspires.ftc.teamcode.mock.MockPotentiometer; + /** * Main entry point for chute control system. * @@ -28,7 +32,7 @@ package org.firstinspires.ftc.teamcode.subsystems.chute; * ChuteController controller = new ChuteController(motor, pot, 4 * Math.PI); * Chute chute = new Chute(controller, motor, pot); * - * // With a CRServo: + * // With a CRServo (drop-in replacement): * FtcCRServo motor = new FtcCRServo(hardwareMap.get(CRServo.class, "chute_servo")); * FtcPotentiometer pot = new FtcPotentiometer(hardwareMap.get(AnalogInput.class, "chute_pot")); * ChuteController controller = new ChuteController(motor, pot, 4 * Math.PI); @@ -45,13 +49,14 @@ package org.firstinspires.ftc.teamcode.subsystems.chute; * * * @see ChuteController + * @see FtcDCMotor * @see FtcCRServo * @see MockPotentiometer * @see FtcPotentiometer */ public class Chute { private final ChuteController controller; - private final MockDCMotor motor; + private final MockMotor motor; private final MockPotentiometer pot; /** @@ -82,12 +87,13 @@ public class Chute { * Use this constructor in actual FTC OpModes with hardware from hardwareMap. * * @param controller Pre-configured controller with real hardware - * @param motor FtcDCMotor adapter wrapping DcMotor + * @param motor Motor adapter (FtcDCMotor or FtcCRServo) * @param pot FtcPotentiometer adapter wrapping AnalogInput * @see FtcDCMotor + * @see FtcCRServo * @see FtcPotentiometer */ - public Chute(ChuteController controller, MockDCMotor motor, MockPotentiometer pot) { + public Chute(ChuteController controller, MockMotor motor, MockPotentiometer pot) { this.controller = controller; this.motor = motor; this.pot = pot; @@ -168,9 +174,9 @@ public class Chute { /** * Gets motor instance for testing. * - * @return MockDCMotor instance used by this chute + * @return MockMotor instance used by this chute */ - public MockDCMotor getMotor() { return motor; } + public MockMotor getMotor() { return motor; } /** * Gets potentiometer instance for testing. diff --git a/src/main/java/org/firstinspires/ftc/teamcode/subsystems/chute/ChuteController.java b/src/main/java/org/firstinspires/ftc/teamcode/subsystems/chute/ChuteController.java index 44a230e..ebf55cb 100644 --- a/src/main/java/org/firstinspires/ftc/teamcode/subsystems/chute/ChuteController.java +++ b/src/main/java/org/firstinspires/ftc/teamcode/subsystems/chute/ChuteController.java @@ -1,10 +1,13 @@ package org.firstinspires.ftc.teamcode.subsystems.chute; +import org.firstinspires.ftc.teamcode.mock.MockMotor; +import org.firstinspires.ftc.teamcode.mock.MockPotentiometer; + /** * Simple chute controller with homing and position control. */ public class ChuteController { - private final MockDCMotor motor; + private final MockMotor motor; private final MockPotentiometer pot; private final double maxExtension; private final double wrapAmount; @@ -29,7 +32,7 @@ public class ChuteController { * @param pot Potentiometer that measures position * @param maxExtension Maximum extension from home in radians */ - public ChuteController(MockDCMotor motor, MockPotentiometer pot, double maxExtension) { + public ChuteController(MockMotor motor, MockPotentiometer pot, double maxExtension) { this.motor = motor; this.pot = pot; this.maxExtension = maxExtension; diff --git a/src/main/java/org/firstinspires/ftc/teamcode/subsystems/chute/FtcCRServo.java b/src/main/java/org/firstinspires/ftc/teamcode/subsystems/chute/FtcCRServo.java index 7645007..966f7ff 100644 --- a/src/main/java/org/firstinspires/ftc/teamcode/subsystems/chute/FtcCRServo.java +++ b/src/main/java/org/firstinspires/ftc/teamcode/subsystems/chute/FtcCRServo.java @@ -3,7 +3,7 @@ package org.firstinspires.ftc.teamcode.subsystems.chute; import com.qualcomm.robotcore.hardware.CRServo; /** - * Adapter that wraps a real FTC CRServo and makes it look like a MockDCMotor. + * Adapter that wraps a real FTC CRServo and makes it look like a MockCRServo. * Drop-in replacement for FtcDCMotor when the chute is driven by a continuous * rotation servo instead of a DC motor. * @@ -19,7 +19,7 @@ import com.qualcomm.robotcore.hardware.CRServo; * * @see FtcDCMotor */ -public class FtcCRServo extends MockDCMotor { +public class FtcCRServo extends MockCRServo { private final CRServo servo; /** @@ -42,4 +42,4 @@ public class FtcCRServo extends MockDCMotor { // Real servo updates itself — still call parent for mock position tracking super.update(dt); } -} +} \ No newline at end of file diff --git a/src/main/java/org/firstinspires/ftc/teamcode/subsystems/chute/FtcDCMotor.java b/src/main/java/org/firstinspires/ftc/teamcode/subsystems/chute/FtcDCMotor.java index 0d7abac..ac2e629 100644 --- a/src/main/java/org/firstinspires/ftc/teamcode/subsystems/chute/FtcDCMotor.java +++ b/src/main/java/org/firstinspires/ftc/teamcode/subsystems/chute/FtcDCMotor.java @@ -5,6 +5,8 @@ import com.qualcomm.robotcore.hardware.DcMotor; /** * Adapter that wraps a real FTC DcMotor and makes it look like a MockDCMotor. * Use this to connect the chute controller to actual hardware. + * + * @see FtcCRServo */ public class FtcDCMotor extends MockDCMotor { private final DcMotor motor; diff --git a/src/test/java/org/firstinspires/ftc/teamcode/subsystems/chute/ChuteTest.java b/src/test/java/org/firstinspires/ftc/teamcode/subsystems/chute/ChuteTest.java index 058382c..83aa137 100644 --- a/src/test/java/org/firstinspires/ftc/teamcode/subsystems/chute/ChuteTest.java +++ b/src/test/java/org/firstinspires/ftc/teamcode/subsystems/chute/ChuteTest.java @@ -1,5 +1,7 @@ package org.firstinspires.ftc.teamcode.subsystems.chute; +import org.firstinspires.ftc.teamcode.mock.MockCRServo; +import org.firstinspires.ftc.teamcode.mock.MockPotentiometer; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.*;