@echo off REM Generate DriveTest.java setlocal set "PROJECT_DIR=%~1" ( echo package robot.subsystems; echo. echo import org.junit.jupiter.api.Test; echo import static org.junit.jupiter.api.Assertions.*; echo. echo /** echo * Unit tests for Drive subsystem. echo * Uses inline mock - no FTC SDK required. echo */ echo class DriveTest { echo. echo /** echo * Simple mock implementation of Drive.Hardware. echo * Captures method calls for verification in tests. echo */ echo static class MockHardware implements Drive.Hardware { echo double lastForward = 0; echo double lastStrafe = 0; echo double lastRotate = 0; echo double heading = 0; echo int setPowersCallCount = 0; echo. echo @Override echo public double getHeading^(^) { echo return heading; echo } echo. echo @Override echo public void setPowers^(double forward, double strafe, double rotate^) { echo this.lastForward = forward; echo this.lastStrafe = strafe; echo this.lastRotate = rotate; echo this.setPowersCallCount++; echo } echo } echo. echo @Test echo void testDriveCallsSetPowers^(^) { echo MockHardware mock = new MockHardware^(^); echo Drive drive = new Drive^(mock^); echo. echo drive.drive^(0.5, 0.3, 0.1^); echo. echo assertEquals^(1, mock.setPowersCallCount, "setPowers should be called once"^); echo } echo. echo @Test echo void testStopSetsZeroPower^(^) { echo MockHardware mock = new MockHardware^(^); echo Drive drive = new Drive^(mock^); echo. echo drive.stop^(^); echo. echo assertEquals^(0.0, mock.lastForward, 0.001^); echo assertEquals^(0.0, mock.lastStrafe, 0.001^); echo assertEquals^(0.0, mock.lastRotate, 0.001^); echo } echo. echo @Test echo void testGetPoseReturnsNonNull^(^) { echo MockHardware mock = new MockHardware^(^); echo Drive drive = new Drive^(mock^); echo. echo assertNotNull^(drive.getPose^(^), "Pose should never be null"^); echo } echo } ) > "%PROJECT_DIR%\src\test\java\robot\subsystems\DriveTest.java" endlocal exit /b 0