16224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala/*
26224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala * Copyright 2012 AndroidPlot.com
36224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala *
46224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala *    Licensed under the Apache License, Version 2.0 (the "License");
56224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala *    you may not use this file except in compliance with the License.
66224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala *    You may obtain a copy of the License at
76224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala *
86224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala *        http://www.apache.org/licenses/LICENSE-2.0
96224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala *
106224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala *    Unless required by applicable law or agreed to in writing, software
116224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala *    distributed under the License is distributed on an "AS IS" BASIS,
126224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
136224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala *    See the License for the specific language governing permissions and
146224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala *    limitations under the License.
156224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala */
166224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
176224eda509d436a575f801942337da92a6c18767Eino-Ville Talvalapackage com.androidplot.xy;
186224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
196224eda509d436a575f801942337da92a6c18767Eino-Ville Talvalaimport android.content.Context;
206224eda509d436a575f801942337da92a6c18767Eino-Ville Talvalaimport android.graphics.*;
216224eda509d436a575f801942337da92a6c18767Eino-Ville Talvalaimport android.os.Handler;
226224eda509d436a575f801942337da92a6c18767Eino-Ville Talvalaimport android.util.Log;
236224eda509d436a575f801942337da92a6c18767Eino-Ville Talvalaimport android.util.Pair;
246224eda509d436a575f801942337da92a6c18767Eino-Ville Talvalaimport android.view.View;
256224eda509d436a575f801942337da92a6c18767Eino-Ville Talvalaimport com.androidplot.Plot;
266224eda509d436a575f801942337da92a6c18767Eino-Ville Talvalaimport com.androidplot.mock.*;
276224eda509d436a575f801942337da92a6c18767Eino-Ville Talvalaimport com.androidplot.ui.SeriesRenderer;
286224eda509d436a575f801942337da92a6c18767Eino-Ville Talvalaimport com.androidplot.ui.SizeMetric;
296224eda509d436a575f801942337da92a6c18767Eino-Ville Talvalaimport com.androidplot.ui.SizeMetrics;
306224eda509d436a575f801942337da92a6c18767Eino-Ville Talvalaimport com.androidplot.ui.widget.TextLabelWidget;
316224eda509d436a575f801942337da92a6c18767Eino-Ville Talvalaimport com.androidplot.ui.widget.Widget;
326224eda509d436a575f801942337da92a6c18767Eino-Ville Talvalaimport com.androidplot.util.FontUtils;
336224eda509d436a575f801942337da92a6c18767Eino-Ville Talvalaimport com.androidplot.util.PixelUtils;
346224eda509d436a575f801942337da92a6c18767Eino-Ville Talvalaimport com.androidplot.util.ValPixConverter;
356224eda509d436a575f801942337da92a6c18767Eino-Ville Talvalaimport mockit.*;
366224eda509d436a575f801942337da92a6c18767Eino-Ville Talvalaimport org.junit.After;
376224eda509d436a575f801942337da92a6c18767Eino-Ville Talvalaimport org.junit.Before;
386224eda509d436a575f801942337da92a6c18767Eino-Ville Talvalaimport org.junit.Test;
396224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
406224eda509d436a575f801942337da92a6c18767Eino-Ville Talvalaimport java.util.Arrays;
416224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
426224eda509d436a575f801942337da92a6c18767Eino-Ville Talvalaimport static junit.framework.Assert.assertEquals;
436224eda509d436a575f801942337da92a6c18767Eino-Ville Talvalaimport static org.junit.Assert.fail;
446224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
456224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala@UsingMocksAndStubs({Log.class,View.class,Handler.class,Paint.class,Color.class, Rect.class,
466224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        FontUtils.class, Paint.FontMetrics.class,Bitmap.class, Pair.class})
476224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
486224eda509d436a575f801942337da92a6c18767Eino-Ville Talvalapublic class XYLegendWidgetTest {
496224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
506224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    @MockClass(realClass = Context.class)
516224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    public static class MockContext {}
526224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
536224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    @MockClass(realClass = TextLabelWidget.class)
546224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    public static class MockTextLabelWidget {
556224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        @Mock
566224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        public void doOnDraw(Canvas canvas, RectF widgetRect) {}
576224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    }
586224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
596224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    @Before
606224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    public void setUp() throws Exception {
616224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        Mockit.setUpMocks(MockCanvas.class, MockRectF.class, MockSizeMetrics.class,
626224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala                MockPointF.class, MockLooper.class, MockPixelUtils.class, MockTextLabelWidget.class);
636224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    }
646224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
656224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    @After
666224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    public void tearDown() throws Exception {
676224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
686224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    }
696224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
706224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
716224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    @Test
726224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    public void testDoOnDraw() throws Exception {
736224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        Context context = Mockit.setUpMock(new MockContext());
746224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        XYPlot plot = new XYPlot(context, "Test", Plot.RenderMode.USE_MAIN_THREAD);
756224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
766224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        SimpleXYSeries s1 = new SimpleXYSeries((Arrays.asList(1, 2, 3)),
776224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala                SimpleXYSeries.ArrayFormat.Y_VALS_ONLY, "s1");
786224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
796224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        plot.addSeries(s1, new LineAndPointFormatter(
806224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala                Color.RED, Color.GREEN, Color.BLUE, (PointLabelFormatter)null));
816224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
826224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        assertEquals(1, plot.getSeriesSet().size());
836224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
846224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        Deencapsulation.invoke(plot, "onSizeChanged", 100, 100, 100, 100);
856224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        plot.redraw();
866224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        // have to manually invoke this because the invalidate()
876224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        // invoked by redraw() is a stub and will not result in onDraw being called.
886224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        Deencapsulation.invoke(plot, "onDraw", new Canvas());
896224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
906224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        plot.removeSeries(s1);
916224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        assertEquals(0, plot.getSeriesSet().size());
926224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        plot.addSeries(s1, new BarFormatter(Color.RED, Color.GREEN));
936224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        plot.redraw();
946224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
956224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        // throws NullPointerException before fix
966224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        // for ANDROIDPLOT-166 was applied.
976224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        Deencapsulation.invoke(plot, "onDraw", new Canvas());
986224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
996224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    }
1006224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
1016224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala}
102