public void testUpdateIncapsulatedDataSeries() throws Exception {
    BarsDataSeriesFunction function = new BarsDataSeriesFunction();
    IDataSeries dataSeries = function.getSeries();

    assertEquals(0, dataSeries.getValues().length);

    Bar bar = new Bar(new Date(), TimeSpan.days(1), 10.0, 11.0, 9.0, 10.0, 1000L);
    function.append(bar);

    assertEquals(1, dataSeries.getValues().length);
    assertEquals(bar, dataSeries.getValues()[0]);
  }
  public void testNotifyListeners() throws Exception {
    PropertyChangeListener listener = EasyMock.createMock(PropertyChangeListener.class);
    listener.propertyChange(EasyMock.isA(PropertyChangeEvent.class));
    EasyMock.replay(listener);

    BarsDataSeriesFunction function = new BarsDataSeriesFunction();
    function.addPropertyChangeListener(BarsDataSeriesFunction.PROP_BARS, listener);

    Bar bar = new Bar(new Date(), TimeSpan.days(1), 10.0, 11.0, 9.0, 10.0, 1000L);
    function.append(bar);

    EasyMock.verify(listener);
  }
  public void testAppend() throws Exception {
    ScriptableObject scope = new ImporterTopLevel(cx);
    ScriptableObject.defineClass(scope, BarsDataSeriesFunction.class);

    BarsDataSeriesFunction function =
        (BarsDataSeriesFunction) cx.newObject(scope, BarsDataSeriesFunction.FUNCTION_NAME);
    ScriptableObject.putProperty(scope, JavaScriptEngineInstrument.PROPERTY_BARS, function);

    Bar bar = new Bar(new Date(), TimeSpan.days(1), 10.0, 11.0, 9.0, 10.0, 1000L);
    function.append(bar);

    Object result = cx.evaluateString(scope, "bars.first();", "Test", 0, null);

    assertEquals(bar, result);
  }