mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-25 01:41:43 +00:00
[wpiunits] Add Measure.divide(Measure<U2>) (#6611)
This commit is contained in:
@@ -7,7 +7,6 @@ package edu.wpi.first.units;
|
||||
import static edu.wpi.first.units.Units.Inches;
|
||||
import static edu.wpi.first.units.Units.Revolutions;
|
||||
import static edu.wpi.first.units.Units.Second;
|
||||
import static edu.wpi.first.units.Units.Value;
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
@@ -46,14 +45,14 @@ class EncoderTest {
|
||||
|
||||
@Test
|
||||
void testAsDistance() {
|
||||
var ticksPerRevolution = Value.of(2048);
|
||||
double ticksPerRevolution = 2048;
|
||||
|
||||
var encoder = new Encoder<Distance>();
|
||||
|
||||
// distance per rotation = (wheel circumference / gear ratio)
|
||||
// distance per tick = distance per rotation / ticks per rotation
|
||||
var wheelDiameter = Inches.of(6);
|
||||
var gearRatio = Value.of(10); // 10:1 ratio
|
||||
double gearRatio = 10; // 10:1 ratio
|
||||
Measure<Distance> distancePerPulse =
|
||||
wheelDiameter.times(Math.PI).divide(gearRatio).divide(ticksPerRevolution);
|
||||
encoder.setDistancePerPulse(distancePerPulse);
|
||||
@@ -74,7 +73,7 @@ class EncoderTest {
|
||||
|
||||
@Test
|
||||
void testAsRevolutions() {
|
||||
var ticksPerRevolution = Value.of(2048);
|
||||
double ticksPerRevolution = 2048;
|
||||
|
||||
var encoder = new Encoder<Angle>();
|
||||
|
||||
|
||||
@@ -162,6 +162,40 @@ class MeasureTest {
|
||||
assertEquals(exampleUnit.of(42 * 17 / (12 * 25.4)), m3.times(m4));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testDivideMeasure() {
|
||||
// Dimensionless divide
|
||||
var m1 = Units.Meters.of(6);
|
||||
var m2 = Units.Value.of(3);
|
||||
var result = m1.divide(m2);
|
||||
assertEquals(m1.divide(m2).magnitude(), 2);
|
||||
assertEquals(result.unit(), Units.Meters);
|
||||
// Velocity divide
|
||||
var m3 = Units.Meters.of(8);
|
||||
var m4 = Units.Meters.per(Units.Second).of(4);
|
||||
result = m3.divide(m4);
|
||||
assertEquals(result.magnitude(), 2);
|
||||
assertEquals(result.unit(), Units.Second);
|
||||
// Per divide
|
||||
var m5 = Units.Volts.of(6);
|
||||
var m6 = Units.Volts.per(Units.Meter).of(2);
|
||||
result = m5.divide(m6);
|
||||
assertEquals(result.magnitude(), 3);
|
||||
assertEquals(result.unit(), Units.Meter);
|
||||
// Fallthrough divide
|
||||
var m7 = Units.Seconds.of(10);
|
||||
var m8 = Units.Amps.of(2);
|
||||
result = m7.divide(m8);
|
||||
assertEquals(result.magnitude(), 5);
|
||||
assertEquals(result.unit(), Units.Seconds.per(Units.Amps));
|
||||
// Same base unit divide
|
||||
var m9 = Units.Meters.of(8);
|
||||
var m10 = Units.Meters.of(4);
|
||||
result = m9.divide(m10);
|
||||
assertEquals(result.magnitude(), 2);
|
||||
assertEquals(result.unit(), Units.Value);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testToShortString() {
|
||||
var measure = Units.Volts.of(343);
|
||||
|
||||
Reference in New Issue
Block a user