blob: 2585ec8612cf937a7e490cd105817d913d967a8c [file] [log] [blame]
/*
* 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.DynamicTableModel;
import com.androidplot.ui.TableModel;
import com.androidplot.ui.TableOrder;
import mockit.*;
import org.junit.Before;
import org.junit.Test;
import java.util.Iterator;
import static junit.framework.Assert.assertEquals;
public class DynamicTableModelTest {
@Before
public void setUp() throws Exception {
Mockit.setUpMocks(MockRectF.class);
}
@Test
public void testConstructor() throws Exception {
TableModel model = new DynamicTableModel(5, 5, TableOrder.COLUMN_MAJOR);
// TODO
}
@Test
public void testGetCellRect() throws Exception {
// square table, both rows and columns defined:
DynamicTableModel model = new DynamicTableModel(5, 5);
RectF tableRect = new RectF(0, 0, 1000, 2000);
RectF cellRect = model.getCellRect(tableRect, 10);
assertEquals(200f, cellRect.width());
// only rows defined:
model = new DynamicTableModel(5, 0);
cellRect = model.getCellRect(tableRect, 10);
assertEquals(200f, cellRect.width());
// only columns defined:
model = new DynamicTableModel(0, 5);
cellRect = model.getCellRect(tableRect, 10);
assertEquals(400f, cellRect.height());
}
@Test public void testIterator() throws Exception {
TableModel model = new DynamicTableModel(2, 2);
RectF tableRect = new RectF(0, 0, 1000, 2000);
// should stop at 4 iterations since the table can only hold that many:
Iterator<RectF> it = model.getIterator(tableRect, 10);
int iterations = 0;
while(it.hasNext()) {
it.next();
iterations++;
}
assertEquals(4, iterations);
// now set a dynamic number of columns. iterations should equal however
// many elements we throw at it:
model = new DynamicTableModel(2, 0);
it = model.getIterator(tableRect, 10);
iterations = 0;
while(it.hasNext()) {
it.next();
iterations++;
}
assertEquals(10, iterations);
}
@Test
public void testRowMajorIteration() throws Exception {
// square table, both rows and columns defined:
TableModel model = new DynamicTableModel(2, 2);
RectF tableRect = new RectF(0, 0, 1000, 2000);
int createdCells = 4;
Iterator<RectF> it = model.getIterator(tableRect, createdCells);
// 2x2:
// cell 0 (top-left
RectF cellRect = it.next();
assertEquals(500f, cellRect.width());
assertEquals(1000f, cellRect.height());
assertEquals(0f, cellRect.left);
assertEquals(0f, cellRect.top);
assertEquals(500f, cellRect.right);
assertEquals(1000f, cellRect.bottom);
// cell 1 (top-right)
cellRect = it.next();
assertEquals(500f, cellRect.width());
assertEquals(1000f, cellRect.height());
assertEquals(500f, cellRect.left);
assertEquals(0f, cellRect.top);
assertEquals(1000f, cellRect.right);
assertEquals(1000f, cellRect.bottom);
// cell 2 (bottom-left)
cellRect = it.next();
assertEquals(500f, cellRect.width());
assertEquals(1000f, cellRect.height());
assertEquals(0f, cellRect.left);
assertEquals(1000f, cellRect.top);
assertEquals(500f, cellRect.right);
assertEquals(2000f, cellRect.bottom);
// cell 3 (bottom-right)
cellRect = it.next();
assertEquals(500f, cellRect.width());
assertEquals(1000f, cellRect.height());
assertEquals(500f, cellRect.left);
assertEquals(1000f, cellRect.top);
assertEquals(1000f, cellRect.right);
assertEquals(2000f, cellRect.bottom);
// 2xN:
/*model = new DynamicTableModel(2, 0);
tableRect = new RectF(0, 0, 1000, 2000);
createdCells = 4;
it = model.getIterator(tableRect, createdCells);*/
}
@Test
public void testColumnMajorIteration() throws Exception {
// square table, both rows and columns defined:
TableModel model = new DynamicTableModel(2, 2, TableOrder.COLUMN_MAJOR);
RectF tableRect = new RectF(0, 0, 1000, 2000);
int createdCells = 4;
Iterator<RectF> it = model.getIterator(tableRect, createdCells);
// 2x2 fixed:
// cell 0 (top-left
RectF cellRect = it.next();
assertEquals(500f, cellRect.width());
assertEquals(1000f, cellRect.height());
assertEquals(0f, cellRect.left);
assertEquals(0f, cellRect.top);
assertEquals(500f, cellRect.right);
assertEquals(1000f, cellRect.bottom);
// cell 1 (bottom-left)
cellRect = it.next();
assertEquals(500f, cellRect.width());
assertEquals(1000f, cellRect.height());
assertEquals(0f, cellRect.left);
assertEquals(1000f, cellRect.top);
assertEquals(500f, cellRect.right);
assertEquals(2000f, cellRect.bottom);
// cell 2 (bottom-left)
cellRect = it.next();
assertEquals(500f, cellRect.width());
assertEquals(1000f, cellRect.height());
assertEquals(500f, cellRect.left);
assertEquals(0f, cellRect.top);
assertEquals(1000f, cellRect.right);
assertEquals(1000f, cellRect.bottom);
// cell 3 (bottom-right)
cellRect = it.next();
assertEquals(500f, cellRect.width());
assertEquals(1000f, cellRect.height());
assertEquals(500f, cellRect.left);
assertEquals(1000f, cellRect.top);
assertEquals(1000f, cellRect.right);
assertEquals(2000f, cellRect.bottom);
}
@Test
public void testSingleRowIteration() throws Exception {
// square table, both rows and columns defined:
TableModel model = new DynamicTableModel(0, 1);
RectF tableRect = new RectF(0, 0, 1000, 1000);
int createdCells = 4;
Iterator<RectF> it = model.getIterator(tableRect, createdCells);
// 2x2 fixed:
// cell 0 (top-left
RectF cellRect = it.next();
assertEquals(250f, cellRect.width());
assertEquals(1000f, cellRect.height());
assertEquals(0f, cellRect.left);
assertEquals(0f, cellRect.top);
assertEquals(250f, cellRect.right);
assertEquals(1000f, cellRect.bottom);
// cell 1
cellRect = it.next();
assertEquals(250f, cellRect.width());
assertEquals(1000f, cellRect.height());
assertEquals(250f, cellRect.left);
assertEquals(0f, cellRect.top);
assertEquals(500f, cellRect.right);
assertEquals(1000f, cellRect.bottom);
// cell 2
cellRect = it.next();
assertEquals(250f, cellRect.width());
assertEquals(1000f, cellRect.height());
assertEquals(500f, cellRect.left);
assertEquals(0f, cellRect.top);
assertEquals(750f, cellRect.right);
assertEquals(1000f, cellRect.bottom);
// cell 3
cellRect = it.next();
assertEquals(250f, cellRect.width());
assertEquals(1000f, cellRect.height());
assertEquals(750f, cellRect.left);
assertEquals(0f, cellRect.top);
assertEquals(1000f, cellRect.right);
assertEquals(1000f, cellRect.bottom);
}
}