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