77 lines
2.3 KiB
Batchfile
77 lines
2.3 KiB
Batchfile
@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 |