@ContinuousIntegrationTest(estimatedDuration = 0.0)
  @Test(timeout = 300000)
  public void testGetIntegerValue() {
    IntegerYoVariable integerVariable = new IntegerYoVariable("integerVariable", registry);
    integerVariable.set(5);

    assertEquals(integerVariable.getIntegerValue(), 5);
  }
 public int getCollisionCount() {
   return collisionCount.getIntegerValue();
 }
  public void performUpdate() {
    boolean positionChanged = rawTicks.getIntegerValue() != previousRawTicks.getIntegerValue();

    if (positionChanged) doStateTransitions();

    doStateActionsForPosition(positionChanged);

    if (positionChanged) {
      double positionChange =
          processedTicks.getDoubleValue() - previousProcessedTicks.getIntegerValue();
      int positionChangeInt = (int) positionChange;
      double timeChange = time.getDoubleValue() - previousTime.getDoubleValue();

      //       int positionChangeInt = processedTicks.getIntegerValue() -
      // previousProcessedTicksTwoBack.getIntegerValue();
      //       double positionChange = (double) positionChangeInt;
      //       double timeChange = time.getDoubleValue() - previousTimeTwoBack.getDoubleValue();

      if (positionChangeInt >= 2) {
        timeChange =
            dt; // If there were multiple time ticks and multiple position ticks, then can assume
        // only one time tick!

        minPriorRate.set((positionChange - 1.0) / timeChange);
        maxPriorRate.set((positionChange + 1.0) / timeChange);
        averagePriorRate.set(positionChange / timeChange);
      } else if (positionChangeInt <= -2) {
        timeChange =
            dt; // If there were multiple time ticks and multiple position ticks, then can assume
        // only one time tick!

        minPriorRate.set((positionChange + 1.0) / timeChange);
        maxPriorRate.set((positionChange - 1.0) / timeChange);
        averagePriorRate.set(positionChange / timeChange);
      } else if (timeChange > 1.5 * dt) {
        minPriorRate.set(positionChange / (timeChange + dt));
        maxPriorRate.set(positionChange / (timeChange - dt));
        averagePriorRate.set(positionChange / timeChange);
      } else if (positionChangeInt == 1) {
        minPriorRate.set(positionChange / (timeChange + dt));
        maxPriorRate.set((positionChange + 1.0) / timeChange);
        averagePriorRate.set(positionChange / timeChange);
      } else if (positionChangeInt == -1) {
        minPriorRate.set(positionChange / (timeChange + dt));
        maxPriorRate.set((positionChange - 1.0) / timeChange);
        averagePriorRate.set(positionChange / timeChange);
      } else if (positionChangeInt == 0) {
        maxPriorRate.set((positionChange + 1.0) / timeChange);
        minPriorRate.set((positionChange - 1.0) / timeChange);
        averagePriorRate.set(positionChange / timeChange);
      } else {
        System.err.println("Should never get here!");
        System.err.println("positionChangeInt = " + positionChangeInt);
        System.err.println("timeChange = " + timeChange);

        //          throw new RuntimeException("Should never get here!");
      }
    }

    doStateActionsForVelocity(positionChanged);

    if (positionChanged) {
      this.previousProcessedTicksTwoBack.set(this.previousProcessedTicks.getIntegerValue());
      this.previousProcessedTicks.set((int) processedTicks.getDoubleValue());
      this.previousRawTicksTwoBack.set(previousRawTicks.getIntegerValue());
      this.previousRawTicks.set(rawTicks.getIntegerValue());

      this.previousTimeTwoBack.set(this.previousTime.getDoubleValue());
      this.previousTime.set(this.time.getDoubleValue());
    }
  }
 public boolean isDone() {
   return (numberBlindStepsInPlace.getIntegerValue() >= 2);
 }