Adds JNI Simulator interface and updated Sim API (#1002)

The simulator was generated by https://github.com/ThadHouse/SimulatorGenerator
This commit is contained in:
Thad House
2018-05-11 12:38:23 -07:00
committed by Peter Johnson
parent 1046371349
commit 337e89cf6e
96 changed files with 8204 additions and 26 deletions

View File

@@ -0,0 +1,45 @@
/*----------------------------------------------------------------------------*/
/* Copyright (c) 2018 FIRST. All Rights Reserved. */
/* Open Source Software - may be modified and shared by FRC teams. The code */
/* must be accompanied by the FIRST BSD license file in the root directory of */
/* the project. */
/*----------------------------------------------------------------------------*/
package edu.wpi.first.hal.sim;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import org.junit.Test;
import edu.wpi.first.wpilibj.hal.AccelerometerJNI;
import edu.wpi.first.wpilibj.hal.HAL;
import edu.wpi.first.wpilibj.sim.AccelerometerSim;
import edu.wpi.first.wpilibj.sim.CallbackStore;
public class AccelerometerSimTest {
static class TriggeredStore {
public boolean wasTriggered = false;
public boolean setValue = true;
}
@Test
public void testCallbacks() {
HAL.initialize(500, 0);
AccelerometerSim sim = new AccelerometerSim();
sim.resetData();
TriggeredStore store = new TriggeredStore();
try (CallbackStore cb = sim.registerActiveCallback((s, v) -> {
store.wasTriggered = true;
store.setValue = v.getBoolean();
}, false)) {
assertFalse(store.wasTriggered);
AccelerometerJNI.setAccelerometerActive(true);
assertTrue(store.wasTriggered);
assertTrue(store.setValue);
}
}
}

View File

@@ -0,0 +1,42 @@
/*----------------------------------------------------------------------------*/
/* Copyright (c) 2018 FIRST. All Rights Reserved. */
/* Open Source Software - may be modified and shared by FRC teams. The code */
/* must be accompanied by the FIRST BSD license file in the root directory of */
/* the project. */
/*----------------------------------------------------------------------------*/
#include "HAL/Accelerometer.h"
#include "HAL/HAL.h"
#include "Simulation/AccelerometerSim.h"
#include "gtest/gtest.h"
using namespace frc::sim;
namespace hal {
TEST(AcclerometerSimTests, TestActiveCallback) {
HAL_Initialize(500, 0);
AccelerometerSim sim{0};
sim.ResetData();
bool wasTriggered = false;
bool lastValue = false;
auto cb = sim.RegisterActiveCallback(
[&](wpi::StringRef name, const HAL_Value* value) {
wasTriggered = true;
lastValue = value->data.v_boolean;
},
false);
EXPECT_FALSE(wasTriggered);
HAL_SetAccelerometerActive(true);
EXPECT_TRUE(wasTriggered);
EXPECT_TRUE(lastValue);
}
} // namespace hal