Files
allwpilib/wpilibjIntegrationTests/src/main/java/edu/wpi/first/wpilibj/PDPTest.java
2021-06-15 23:06:03 -07:00

103 lines
3.1 KiB
Java

// Copyright (c) FIRST and other WPILib contributors.
// Open Source Software; you can modify and/or share it under the terms of
// the WPILib BSD license file in the root directory of this project.
package edu.wpi.first.wpilibj;
import static org.hamcrest.Matchers.greaterThan;
import static org.hamcrest.Matchers.is;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertThat;
import edu.wpi.first.hal.can.CANMessageNotFoundException;
import edu.wpi.first.wpilibj.fixtures.MotorEncoderFixture;
import edu.wpi.first.wpilibj.test.AbstractComsSetup;
import edu.wpi.first.wpilibj.test.TestBench;
import java.util.Arrays;
import java.util.Collection;
import java.util.logging.Logger;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
/** Test that covers the {@link PowerDistributionPanel}. */
@RunWith(Parameterized.class)
public class PDPTest extends AbstractComsSetup {
private static final Logger logger = Logger.getLogger(PDPTest.class.getName());
private static PowerDistributionPanel pdp;
private static MotorEncoderFixture<?> me;
private final double m_expectedStoppedCurrentDraw;
@BeforeClass
public static void setUpBeforeClass() {
pdp = new PowerDistributionPanel();
}
@AfterClass
public static void tearDownAfterClass() {
pdp = null;
me.teardown();
me = null;
}
@SuppressWarnings("MissingJavadocMethod")
public PDPTest(MotorEncoderFixture<?> mef, Double expectedCurrentDraw) {
logger.fine("Constructor with: " + mef.getType());
if (me != null && !me.equals(mef)) {
me.teardown();
}
me = mef;
me.setup();
m_expectedStoppedCurrentDraw = expectedCurrentDraw;
}
@Parameters(name = "{index}: {0}, Expected Stopped Current Draw: {1}")
public static Collection<Object[]> generateData() {
// logger.fine("Loading the MotorList");
return Arrays.asList(new Object[][] {{TestBench.getTalonPair(), 0.0}});
}
@After
public void tearDown() {
me.reset();
}
/** Test if the current changes when the motor is driven using a talon. */
@Test
public void checkStoppedCurrentForMotorController() throws CANMessageNotFoundException {
Timer.delay(0.25);
/* The Current should be 0 */
assertEquals(
"The low current was not within the expected range.",
m_expectedStoppedCurrentDraw,
pdp.getCurrent(me.getPDPChannel()),
0.001);
}
/** Test if the current changes when the motor is driven using a talon. */
@Test
public void checkRunningCurrentForMotorController() throws CANMessageNotFoundException {
/* Set the motor to full forward */
me.getMotor().set(1.0);
Timer.delay(2);
/* The current should now be greater than the low current */
assertThat(
"The driven current is not greater than the resting current.",
pdp.getCurrent(me.getPDPChannel()),
is(greaterThan(m_expectedStoppedCurrentDraw)));
}
@Override
protected Logger getClassLogger() {
return logger;
}
}