Example #1
0
  /** Test of getInstance method, of class ScriptingContainer. */
  @Test
  public void testGetInstance() {
    System.out.println("getInstance");
    Object receiver = null;
    Class<Object> clazz = null;
    ScriptingContainer instance = new ScriptingContainer();
    Object expResult = null;
    Object result = instance.getInstance(receiver, clazz);
    assertEquals(expResult, result);

    // calculates Plutonium decay
    instance.put("$h", 24100.0); // half-life of Plutonium is 24100 years.
    String filename = "org/jruby/embed/ruby/radioactive_decay.rb";
    receiver = instance.runScriptlet(PathType.CLASSPATH, filename);
    result = instance.getInstance(receiver, RadioActiveDecay.class);
    double initial = 10.0; // 10.0 g
    double years = 1000; // 1000 years
    double amount_left = ((RadioActiveDecay) result).amountAfterYears(initial, years);
    assertEquals(9.716483752784367, amount_left, 0.00000000001);
    amount_left = 1.0;
    years = ((RadioActiveDecay) result).yearsToAmount(initial, amount_left);
    assertEquals(80058.46708678544, years, 0.00000000001);

    // calculates position and velocity after some seconds have past
    instance.put("initial_velocity", 16.0);
    instance.put("initial_height", 32.0);
    instance.put("system", "english");
    filename = "org/jruby/embed/ruby/position_function.rb";
    receiver = instance.runScriptlet(PathType.CLASSPATH, filename);
    result = instance.getInstance(receiver, PositionFunction.class);
    double time = 2.0;
    double position = ((PositionFunction) result).getPosition(time);
    assertEquals(0.0, position, 0.01);
    double velocity = ((PositionFunction) result).getVelocity(time);
    assertEquals(-48.0, velocity, 0.01);
    List<String> units = ((PositionFunction) result).getUnits();
    assertEquals("ft./sec", units.get(0));
    assertEquals("ft.", units.get(1));
  }