1/* 2 * Copyright 2012 AndroidPlot.com 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17package com.androidplot.ui; 18 19import android.graphics.RectF; 20import com.androidplot.mock.MockRectF; 21import com.androidplot.ui.FixedTableModel; 22import com.androidplot.ui.TableOrder; 23import mockit.*; 24import org.junit.Before; 25import org.junit.Test; 26 27import java.util.Iterator; 28 29import static junit.framework.Assert.*; 30 31public class FixedTableModelTest { 32 @Before 33 public void setUp() throws Exception { 34 Mockit.setUpMocks(MockRectF.class); 35 } 36 37 @Test 38 public void testConstructor() throws Exception { 39 FixedTableModel model = new FixedTableModel(100, 100, null); 40 // TODO 41 } 42 43 @Test 44 public void testIterator() throws Exception { 45 FixedTableModel model = new FixedTableModel(100, 100, TableOrder.COLUMN_MAJOR); 46 47 RectF tableRect = new RectF(0, 0, 1000, 2000); 48 49 Iterator<RectF> it = model.getIterator(tableRect, 5); 50 51 assertTrue(it.hasNext()); 52 RectF cellRect = it.next(); 53 54 assertTrue(it.hasNext()); 55 cellRect = it.next(); 56 57 assertTrue(it.hasNext()); 58 cellRect = it.next(); 59 60 assertTrue(it.hasNext()); 61 cellRect = it.next(); 62 63 assertTrue(it.hasNext()); 64 cellRect = it.next(); 65 66 assertFalse(it.hasNext()); 67 try { 68 cellRect = it.next(); 69 fail("Expected IndexOutOfBoundsException"); 70 } catch(IndexOutOfBoundsException ex) { 71 // this was expected 72 } 73 } 74 75 @Test 76 public void testColumnMajor() throws Exception { 77 FixedTableModel model = new FixedTableModel(300, 500, TableOrder.COLUMN_MAJOR); 78 79 RectF tableRect = new RectF(0, 0, 1000, 2000); 80 81 // test the numElement limit: 82 Iterator<RectF> it = model.getIterator(tableRect, 5); 83 assertTrue(it.hasNext()); 84 RectF cellRect = it.next(); 85 assertEquals(0f, cellRect.left); 86 assertEquals(0f, cellRect.top); 87 assertEquals(300f, cellRect.right); 88 assertEquals(500f, cellRect.bottom); 89 90 assertTrue(it.hasNext()); 91 cellRect = it.next(); 92 assertEquals(300f, cellRect.left); 93 assertEquals(0f, cellRect.top); 94 assertEquals(600f, cellRect.right); 95 assertEquals(500f, cellRect.bottom); 96 97 assertTrue(it.hasNext()); 98 cellRect = it.next(); 99 assertEquals(600f, cellRect.left); 100 assertEquals(0f, cellRect.top); 101 assertEquals(900f, cellRect.right); 102 assertEquals(500f, cellRect.bottom); 103 104 assertTrue(it.hasNext()); 105 cellRect = it.next(); 106 assertEquals(0f, cellRect.left); 107 assertEquals(500f, cellRect.top); 108 assertEquals(300f, cellRect.right); 109 assertEquals(1000f, cellRect.bottom); 110 111 assertTrue(it.hasNext()); 112 cellRect = it.next(); 113 assertEquals(300f, cellRect.left); 114 assertEquals(500f, cellRect.top); 115 assertEquals(600f, cellRect.right); 116 assertEquals(1000f, cellRect.bottom); 117 118 assertFalse(it.hasNext()); 119 120 // test border limit: 121 it = model.getIterator(tableRect, 25); 122 assertTrue(it.hasNext()); 123 cellRect = it.next(); 124 assertEquals(0f, cellRect.left); 125 assertEquals(0f, cellRect.top); 126 assertEquals(300f, cellRect.right); 127 assertEquals(500f, cellRect.bottom); 128 129 assertTrue(it.hasNext()); 130 cellRect = it.next(); 131 assertEquals(300f, cellRect.left); 132 assertEquals(0f, cellRect.top); 133 assertEquals(600f, cellRect.right); 134 assertEquals(500f, cellRect.bottom); 135 136 assertTrue(it.hasNext()); 137 cellRect = it.next(); 138 assertEquals(600f, cellRect.left); 139 assertEquals(0f, cellRect.top); 140 assertEquals(900f, cellRect.right); 141 assertEquals(500f, cellRect.bottom); 142 143 assertTrue(it.hasNext()); 144 cellRect = it.next(); 145 assertEquals(0f, cellRect.left); 146 assertEquals(500f, cellRect.top); 147 assertEquals(300f, cellRect.right); 148 assertEquals(1000f, cellRect.bottom); 149 150 assertTrue(it.hasNext()); 151 cellRect = it.next(); 152 assertEquals(300f, cellRect.left); 153 assertEquals(500f, cellRect.top); 154 assertEquals(600f, cellRect.right); 155 assertEquals(1000f, cellRect.bottom); 156 157 assertTrue(it.hasNext()); 158 cellRect = it.next(); 159 assertEquals(600f, cellRect.left); 160 assertEquals(500f, cellRect.top); 161 assertEquals(900f, cellRect.right); 162 assertEquals(1000f, cellRect.bottom); 163 164 assertTrue(it.hasNext()); 165 cellRect = it.next(); 166 assertEquals(0f, cellRect.left); 167 assertEquals(1000f, cellRect.top); 168 assertEquals(300f, cellRect.right); 169 assertEquals(1500f, cellRect.bottom); 170 171 assertTrue(it.hasNext()); 172 cellRect = it.next(); 173 assertEquals(300f, cellRect.left); 174 assertEquals(1000f, cellRect.top); 175 assertEquals(600f, cellRect.right); 176 assertEquals(1500f, cellRect.bottom); 177 178 assertTrue(it.hasNext()); 179 cellRect = it.next(); 180 assertEquals(600f, cellRect.left); 181 assertEquals(1000f, cellRect.top); 182 assertEquals(900f, cellRect.right); 183 assertEquals(1500f, cellRect.bottom); 184 185 assertTrue(it.hasNext()); 186 cellRect = it.next(); 187 assertEquals(0f, cellRect.left); 188 assertEquals(1500f, cellRect.top); 189 assertEquals(300f, cellRect.right); 190 assertEquals(2000f, cellRect.bottom); 191 192 assertTrue(it.hasNext()); 193 cellRect = it.next(); 194 assertEquals(300f, cellRect.left); 195 assertEquals(1500f, cellRect.top); 196 assertEquals(600f, cellRect.right); 197 assertEquals(2000f, cellRect.bottom); 198 199 assertTrue(it.hasNext()); 200 cellRect = it.next(); 201 assertEquals(600f, cellRect.left); 202 assertEquals(1500f, cellRect.top); 203 assertEquals(900f, cellRect.right); 204 assertEquals(2000f, cellRect.bottom); 205 206 //we've reached the limit 207 assertFalse(it.hasNext()); 208 } 209 210 @Test 211 public void testRowMajor() throws Exception { 212 FixedTableModel model = new FixedTableModel(300, 500, TableOrder.ROW_MAJOR); 213 214 RectF tableRect = new RectF(0, 0, 1000, 2000); 215 216 // test the numElement limit: 217 Iterator<RectF> it = model.getIterator(tableRect, 5); 218 assertTrue(it.hasNext()); 219 RectF cellRect = it.next(); 220 assertEquals(0f, cellRect.left); 221 assertEquals(0f, cellRect.top); 222 assertEquals(300f, cellRect.right); 223 assertEquals(500f, cellRect.bottom); 224 225 assertTrue(it.hasNext()); 226 cellRect = it.next(); 227 assertEquals(0f, cellRect.left); 228 assertEquals(500f, cellRect.top); 229 assertEquals(300f, cellRect.right); 230 assertEquals(1000f, cellRect.bottom); 231 232 assertTrue(it.hasNext()); 233 cellRect = it.next(); 234 assertEquals(0f, cellRect.left); 235 assertEquals(1000f, cellRect.top); 236 assertEquals(300f, cellRect.right); 237 assertEquals(1500f, cellRect.bottom); 238 239 assertTrue(it.hasNext()); 240 cellRect = it.next(); 241 assertEquals(0f, cellRect.left); 242 assertEquals(1500f, cellRect.top); 243 assertEquals(300f, cellRect.right); 244 assertEquals(2000f, cellRect.bottom); 245 246 // next column over 247 assertTrue(it.hasNext()); 248 cellRect = it.next(); 249 assertEquals(300f, cellRect.left); 250 assertEquals(0f, cellRect.top); 251 assertEquals(600f, cellRect.right); 252 assertEquals(500f, cellRect.bottom); 253 } 254}