/* * Copyright 2012 AndroidPlot.com * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.androidplot.ui; import android.graphics.RectF; import com.androidplot.mock.MockRectF; import com.androidplot.ui.FixedTableModel; import com.androidplot.ui.TableOrder; import mockit.*; import org.junit.Before; import org.junit.Test; import java.util.Iterator; import static junit.framework.Assert.*; public class FixedTableModelTest { @Before public void setUp() throws Exception { Mockit.setUpMocks(MockRectF.class); } @Test public void testConstructor() throws Exception { FixedTableModel model = new FixedTableModel(100, 100, null); // TODO } @Test public void testIterator() throws Exception { FixedTableModel model = new FixedTableModel(100, 100, TableOrder.COLUMN_MAJOR); RectF tableRect = new RectF(0, 0, 1000, 2000); Iterator<RectF> it = model.getIterator(tableRect, 5); assertTrue(it.hasNext()); RectF cellRect = it.next(); assertTrue(it.hasNext()); cellRect = it.next(); assertTrue(it.hasNext()); cellRect = it.next(); assertTrue(it.hasNext()); cellRect = it.next(); assertTrue(it.hasNext()); cellRect = it.next(); assertFalse(it.hasNext()); try { cellRect = it.next(); fail("Expected IndexOutOfBoundsException"); } catch(IndexOutOfBoundsException ex) { // this was expected } } @Test public void testColumnMajor() throws Exception { FixedTableModel model = new FixedTableModel(300, 500, TableOrder.COLUMN_MAJOR); RectF tableRect = new RectF(0, 0, 1000, 2000); // test the numElement limit: Iterator<RectF> it = model.getIterator(tableRect, 5); assertTrue(it.hasNext()); RectF cellRect = it.next(); assertEquals(0f, cellRect.left); assertEquals(0f, cellRect.top); assertEquals(300f, cellRect.right); assertEquals(500f, cellRect.bottom); assertTrue(it.hasNext()); cellRect = it.next(); assertEquals(300f, cellRect.left); assertEquals(0f, cellRect.top); assertEquals(600f, cellRect.right); assertEquals(500f, cellRect.bottom); assertTrue(it.hasNext()); cellRect = it.next(); assertEquals(600f, cellRect.left); assertEquals(0f, cellRect.top); assertEquals(900f, cellRect.right); assertEquals(500f, cellRect.bottom); assertTrue(it.hasNext()); cellRect = it.next(); assertEquals(0f, cellRect.left); assertEquals(500f, cellRect.top); assertEquals(300f, cellRect.right); assertEquals(1000f, cellRect.bottom); assertTrue(it.hasNext()); cellRect = it.next(); assertEquals(300f, cellRect.left); assertEquals(500f, cellRect.top); assertEquals(600f, cellRect.right); assertEquals(1000f, cellRect.bottom); assertFalse(it.hasNext()); // test border limit: it = model.getIterator(tableRect, 25); assertTrue(it.hasNext()); cellRect = it.next(); assertEquals(0f, cellRect.left); assertEquals(0f, cellRect.top); assertEquals(300f, cellRect.right); assertEquals(500f, cellRect.bottom); assertTrue(it.hasNext()); cellRect = it.next(); assertEquals(300f, cellRect.left); assertEquals(0f, cellRect.top); assertEquals(600f, cellRect.right); assertEquals(500f, cellRect.bottom); assertTrue(it.hasNext()); cellRect = it.next(); assertEquals(600f, cellRect.left); assertEquals(0f, cellRect.top); assertEquals(900f, cellRect.right); assertEquals(500f, cellRect.bottom); assertTrue(it.hasNext()); cellRect = it.next(); assertEquals(0f, cellRect.left); assertEquals(500f, cellRect.top); assertEquals(300f, cellRect.right); assertEquals(1000f, cellRect.bottom); assertTrue(it.hasNext()); cellRect = it.next(); assertEquals(300f, cellRect.left); assertEquals(500f, cellRect.top); assertEquals(600f, cellRect.right); assertEquals(1000f, cellRect.bottom); assertTrue(it.hasNext()); cellRect = it.next(); assertEquals(600f, cellRect.left); assertEquals(500f, cellRect.top); assertEquals(900f, cellRect.right); assertEquals(1000f, cellRect.bottom); assertTrue(it.hasNext()); cellRect = it.next(); assertEquals(0f, cellRect.left); assertEquals(1000f, cellRect.top); assertEquals(300f, cellRect.right); assertEquals(1500f, cellRect.bottom); assertTrue(it.hasNext()); cellRect = it.next(); assertEquals(300f, cellRect.left); assertEquals(1000f, cellRect.top); assertEquals(600f, cellRect.right); assertEquals(1500f, cellRect.bottom); assertTrue(it.hasNext()); cellRect = it.next(); assertEquals(600f, cellRect.left); assertEquals(1000f, cellRect.top); assertEquals(900f, cellRect.right); assertEquals(1500f, cellRect.bottom); assertTrue(it.hasNext()); cellRect = it.next(); assertEquals(0f, cellRect.left); assertEquals(1500f, cellRect.top); assertEquals(300f, cellRect.right); assertEquals(2000f, cellRect.bottom); assertTrue(it.hasNext()); cellRect = it.next(); assertEquals(300f, cellRect.left); assertEquals(1500f, cellRect.top); assertEquals(600f, cellRect.right); assertEquals(2000f, cellRect.bottom); assertTrue(it.hasNext()); cellRect = it.next(); assertEquals(600f, cellRect.left); assertEquals(1500f, cellRect.top); assertEquals(900f, cellRect.right); assertEquals(2000f, cellRect.bottom); //we've reached the limit assertFalse(it.hasNext()); } @Test public void testRowMajor() throws Exception { FixedTableModel model = new FixedTableModel(300, 500, TableOrder.ROW_MAJOR); RectF tableRect = new RectF(0, 0, 1000, 2000); // test the numElement limit: Iterator<RectF> it = model.getIterator(tableRect, 5); assertTrue(it.hasNext()); RectF cellRect = it.next(); assertEquals(0f, cellRect.left); assertEquals(0f, cellRect.top); assertEquals(300f, cellRect.right); assertEquals(500f, cellRect.bottom); assertTrue(it.hasNext()); cellRect = it.next(); assertEquals(0f, cellRect.left); assertEquals(500f, cellRect.top); assertEquals(300f, cellRect.right); assertEquals(1000f, cellRect.bottom); assertTrue(it.hasNext()); cellRect = it.next(); assertEquals(0f, cellRect.left); assertEquals(1000f, cellRect.top); assertEquals(300f, cellRect.right); assertEquals(1500f, cellRect.bottom); assertTrue(it.hasNext()); cellRect = it.next(); assertEquals(0f, cellRect.left); assertEquals(1500f, cellRect.top); assertEquals(300f, cellRect.right); assertEquals(2000f, cellRect.bottom); // next column over assertTrue(it.hasNext()); cellRect = it.next(); assertEquals(300f, cellRect.left); assertEquals(0f, cellRect.top); assertEquals(600f, cellRect.right); assertEquals(500f, cellRect.bottom); } }