Author: julien(a)jboss.com
Date: 2007-02-17 17:34:22 -0500 (Sat, 17 Feb 2007)
New Revision: 6328
Added:
trunk/format/src/main/org/jboss/portal/format/util/ListBrowser.java
trunk/format/src/main/org/jboss/portal/test/format/ListBrowserTestCase.java
Modified:
trunk/format/build.xml
Log:
range browser util
Modified: trunk/format/build.xml
===================================================================
--- trunk/format/build.xml 2007-02-16 23:29:59 UTC (rev 6327)
+++ trunk/format/build.xml 2007-02-17 22:34:22 UTC (rev 6328)
@@ -228,9 +228,16 @@
<target name="tests" depends="compile">
<execute-tests>
+ <x-sysproperty>
+<!--
+ <jvmarg value="-Xdebug"/>
+ <jvmarg
value="-Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=y"/>
+-->
+ </x-sysproperty>
<x-test>
<test todir="${test.reports}"
name="org.jboss.portal.test.format.BBCodeHTML2HTMLTestCase"/>
<test todir="${test.reports}"
name="org.jboss.portal.test.format.BBCodeHTML2TextTestCase"/>
+ <test todir="${test.reports}"
name="org.jboss.portal.test.format.ListBrowserTestCase"/>
</x-test>
<x-classpath>
<pathelement location="${build.classes}"/>
Added: trunk/format/src/main/org/jboss/portal/format/util/ListBrowser.java
===================================================================
--- trunk/format/src/main/org/jboss/portal/format/util/ListBrowser.java
(rev 0)
+++ trunk/format/src/main/org/jboss/portal/format/util/ListBrowser.java 2007-02-17
22:34:22 UTC (rev 6328)
@@ -0,0 +1,229 @@
+/******************************************************************************
+ * JBoss, a division of Red Hat *
+ * Copyright 2006, Red Hat Middleware, LLC, and individual *
+ * contributors as indicated by the @authors tag. See the *
+ * copyright.txt in the distribution for a full listing of *
+ * individual contributors. *
+ * *
+ * This is free software; you can redistribute it and/or modify it *
+ * under the terms of the GNU Lesser General Public License as *
+ * published by the Free Software Foundation; either version 2.1 of *
+ * the License, or (at your option) any later version. *
+ * *
+ * This software is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
+ * Lesser General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU Lesser General Public *
+ * License along with this software; if not, write to the Free *
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA *
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org. *
+ ******************************************************************************/
+package org.jboss.portal.format.util;
+
+/**
+ * @author <a href="mailto:julien@jboss.org">Julien Viet</a>
+ * @version $Revision: 1.1 $
+ */
+public class ListBrowser
+{
+
+ /** . */
+ private State state;
+
+ /** . */
+ private Range leftRange;
+
+ /** . */
+ private Range middleRange;
+
+ /** . */
+ private Range rightRange;
+
+ public ListBrowser(int from, int to, int width, int index)
+ {
+ updateState(new State(from, to, width, index));
+ }
+
+ public int getFrom()
+ {
+ return state.from;
+ }
+
+ public void setFrom(int from)
+ {
+ updateState(new State(from, state.to, state.width, state.index));
+ }
+
+ public int getTo()
+ {
+ return state.to;
+ }
+
+ public void setTo(int to)
+ {
+ updateState(new State(state.from, to, state.width, state.index));
+ }
+
+ public int getWidth()
+ {
+ return state.width;
+ }
+
+ public void setWidth(int width)
+ {
+ updateState(new State(state.from, state.to, width, state.index));
+ }
+
+ public int getIndex()
+ {
+ return state.index;
+ }
+
+ public void setIndex(int index)
+ {
+ updateState(new State(state.from, state.to, state.width, index));
+ }
+
+ private void updateState(State state)
+ {
+ this.state = state;
+
+ //
+ compute();
+ }
+
+ private void compute()
+ {
+ leftRange = middleRange = rightRange = null;
+
+ //
+ if (state.to - state.from <= state.width * 3)
+ {
+ middleRange = new Range(state.from, state.to);
+ }
+ else
+ {
+ int leftTo = state.from + state.width;
+ int rightFrom = state.to - state.width;
+ int middleFrom = state.index - (state.width - 1) / 2;
+ int middleTo = middleFrom + state.width;
+
+ //
+ if (middleFrom <= leftTo)
+ {
+ if (middleTo > leftTo)
+ {
+ leftRange = new Range(state.from, middleTo);
+ }
+ else
+ {
+ leftRange = new Range(state.from, leftTo);
+ }
+ rightRange = new Range(rightFrom, state.to);
+ }
+ else if (middleTo >= rightFrom)
+ {
+ if (middleFrom < rightFrom)
+ {
+ rightRange = new Range(middleFrom, state.to);
+ }
+ else
+ {
+ rightRange = new Range(rightFrom, state.to);
+ }
+ leftRange = new Range(state.from, leftTo);
+ }
+ else
+ {
+ leftRange = new Range(state.from, leftTo);
+ middleRange = new Range(middleFrom, middleTo);
+ rightRange = new Range(rightFrom, state.to);
+ }
+ }
+ }
+
+ public Range getLeftRange()
+ {
+ return leftRange;
+ }
+
+ public Range getMiddleRange()
+ {
+ return middleRange;
+ }
+
+ public Range getRightRange()
+ {
+ return rightRange;
+ }
+
+ public static class Range
+ {
+
+ /** . */
+ private final int from;
+
+ /** . */
+ private final int to;
+
+ public Range(int from, int to)
+ {
+ this.from = from;
+ this.to = to;
+ }
+
+ public int getFrom()
+ {
+ return from;
+ }
+
+ public int getTo()
+ {
+ return to;
+ }
+ }
+
+ private static class State
+ {
+
+ /** Lower inclusive bound. */
+ private final int from;
+
+ /** Upper exclusive bound. */
+ private final int to;
+
+ /** . */
+ private final int width;
+
+ /** . */
+ private final int index;
+
+ public State(int from, int to, int width, int index)
+ {
+ if (from > to)
+ {
+ throw new IllegalArgumentException();
+ }
+ if (index < from)
+ {
+ throw new IllegalArgumentException();
+ }
+ if (index >= to)
+ {
+ throw new IllegalArgumentException();
+ }
+ if (width < 1)
+ {
+ throw new IllegalArgumentException();
+ }
+
+ //
+ this.from = from;
+ this.to = to;
+ this.width = Math.min(width, to - from);
+ this.index = index;
+ }
+ }
+}
Added: trunk/format/src/main/org/jboss/portal/test/format/ListBrowserTestCase.java
===================================================================
--- trunk/format/src/main/org/jboss/portal/test/format/ListBrowserTestCase.java
(rev 0)
+++ trunk/format/src/main/org/jboss/portal/test/format/ListBrowserTestCase.java 2007-02-17
22:34:22 UTC (rev 6328)
@@ -0,0 +1,733 @@
+/******************************************************************************
+ * JBoss, a division of Red Hat *
+ * Copyright 2006, Red Hat Middleware, LLC, and individual *
+ * contributors as indicated by the @authors tag. See the *
+ * copyright.txt in the distribution for a full listing of *
+ * individual contributors. *
+ * *
+ * This is free software; you can redistribute it and/or modify it *
+ * under the terms of the GNU Lesser General Public License as *
+ * published by the Free Software Foundation; either version 2.1 of *
+ * the License, or (at your option) any later version. *
+ * *
+ * This software is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
+ * Lesser General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU Lesser General Public *
+ * License along with this software; if not, write to the Free *
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA *
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org. *
+ ******************************************************************************/
+package org.jboss.portal.test.format;
+
+import junit.framework.TestCase;
+import org.jboss.portal.format.util.ListBrowser;
+
+/**
+ * @author <a href="mailto:julien@jboss.org">Julien Viet</a>
+ * @version $Revision: 1.1 $
+ */
+public class ListBrowserTestCase extends TestCase
+{
+
+ public void test_3_11()
+ {
+ ListBrowser model = new ListBrowser(0, 11, 3, 0);
+
+ //
+ ListBrowser.Range leftRange = model.getLeftRange();
+ ListBrowser.Range middleRange = model.getMiddleRange();
+ ListBrowser.Range rightRange = model.getRightRange();
+ assertNotNull(leftRange);
+ assertEquals(0, leftRange.getFrom());
+ assertEquals(3, leftRange.getTo());
+ assertNull(middleRange);
+ assertNotNull(rightRange);
+ assertEquals(8, rightRange.getFrom());
+ assertEquals(11, rightRange.getTo());
+
+ //
+ model.setIndex(1);
+ leftRange = model.getLeftRange();
+ middleRange = model.getMiddleRange();
+ rightRange = model.getRightRange();
+ assertNotNull(leftRange);
+ assertEquals(0, leftRange.getFrom());
+ assertEquals(3, leftRange.getTo());
+ assertNull(middleRange);
+ assertNotNull(rightRange);
+ assertEquals(8, rightRange.getFrom());
+ assertEquals(11, rightRange.getTo());
+
+ //
+ model.setIndex(2);
+ leftRange = model.getLeftRange();
+ middleRange = model.getMiddleRange();
+ rightRange = model.getRightRange();
+ assertNotNull(leftRange);
+ assertEquals(0, leftRange.getFrom());
+ assertEquals(4, leftRange.getTo());
+ assertNull(middleRange);
+ assertNotNull(rightRange);
+ assertEquals(8, rightRange.getFrom());
+ assertEquals(11, rightRange.getTo());
+
+ //
+ model.setIndex(3);
+ leftRange = model.getLeftRange();
+ middleRange = model.getMiddleRange();
+ rightRange = model.getRightRange();
+ assertNotNull(leftRange);
+ assertEquals(0, leftRange.getFrom());
+ assertEquals(5, leftRange.getTo());
+ assertNull(middleRange);
+ assertNotNull(rightRange);
+ assertEquals(8, rightRange.getFrom());
+ assertEquals(11, rightRange.getTo());
+
+ //
+ model.setIndex(4);
+ leftRange = model.getLeftRange();
+ middleRange = model.getMiddleRange();
+ rightRange = model.getRightRange();
+ assertNotNull(leftRange);
+ assertEquals(0, leftRange.getFrom());
+ assertEquals(6, leftRange.getTo());
+ assertNull(middleRange);
+ assertNotNull(rightRange);
+ assertEquals(8, rightRange.getFrom());
+ assertEquals(11, rightRange.getTo());
+
+ //
+ model.setIndex(5);
+ leftRange = model.getLeftRange();
+ middleRange = model.getMiddleRange();
+ rightRange = model.getRightRange();
+ assertNotNull(leftRange);
+ assertEquals(0, leftRange.getFrom());
+ assertEquals(3, leftRange.getTo());
+ assertNotNull(middleRange);
+ assertEquals(4, middleRange.getFrom());
+ assertEquals(7, middleRange.getTo());
+ assertNotNull(rightRange);
+ assertEquals(8, rightRange.getFrom());
+ assertEquals(11, rightRange.getTo());
+
+ //
+ model.setIndex(6);
+ leftRange = model.getLeftRange();
+ middleRange = model.getMiddleRange();
+ rightRange = model.getRightRange();
+ assertNotNull(leftRange);
+ assertEquals(0, leftRange.getFrom());
+ assertEquals(3, leftRange.getTo());
+ assertNull(middleRange);
+ assertNotNull(rightRange);
+ assertEquals(5, rightRange.getFrom());
+ assertEquals(11, rightRange.getTo());
+
+ //
+ model.setIndex(7);
+ leftRange = model.getLeftRange();
+ middleRange = model.getMiddleRange();
+ rightRange = model.getRightRange();
+ assertNotNull(leftRange);
+ assertEquals(0, leftRange.getFrom());
+ assertEquals(3, leftRange.getTo());
+ assertNull(middleRange);
+ assertNotNull(rightRange);
+ assertEquals(6, rightRange.getFrom());
+ assertEquals(11, rightRange.getTo());
+
+ //
+ model.setIndex(8);
+ leftRange = model.getLeftRange();
+ middleRange = model.getMiddleRange();
+ rightRange = model.getRightRange();
+ assertNotNull(leftRange);
+ assertEquals(0, leftRange.getFrom());
+ assertEquals(3, leftRange.getTo());
+ assertNull(middleRange);
+ assertNotNull(rightRange);
+ assertEquals(7, rightRange.getFrom());
+ assertEquals(11, rightRange.getTo());
+
+ //
+ model.setIndex(9);
+ leftRange = model.getLeftRange();
+ middleRange = model.getMiddleRange();
+ rightRange = model.getRightRange();
+ assertNotNull(leftRange);
+ assertEquals(0, leftRange.getFrom());
+ assertEquals(3, leftRange.getTo());
+ assertNull(middleRange);
+ assertNotNull(rightRange);
+ assertEquals(8, rightRange.getFrom());
+ assertEquals(11, rightRange.getTo());
+
+ //
+ model.setIndex(10);
+ leftRange = model.getLeftRange();
+ middleRange = model.getMiddleRange();
+ rightRange = model.getRightRange();
+ assertNotNull(leftRange);
+ assertEquals(0, leftRange.getFrom());
+ assertEquals(3, leftRange.getTo());
+ assertNull(middleRange);
+ assertNotNull(rightRange);
+ assertEquals(8, rightRange.getFrom());
+ assertEquals(11, rightRange.getTo());
+ }
+
+ public void test_3_10()
+ {
+ ListBrowser model = new ListBrowser(0, 10, 3, 0);
+
+ //
+ ListBrowser.Range leftRange = model.getLeftRange();
+ ListBrowser.Range middleRange = model.getMiddleRange();
+ ListBrowser.Range rightRange = model.getRightRange();
+ assertNotNull(leftRange);
+ assertEquals(0, leftRange.getFrom());
+ assertEquals(3, leftRange.getTo());
+ assertNull(middleRange);
+ assertNotNull(rightRange);
+ assertEquals(7, rightRange.getFrom());
+ assertEquals(10, rightRange.getTo());
+
+ //
+ model.setIndex(1);
+ leftRange = model.getLeftRange();
+ middleRange = model.getMiddleRange();
+ rightRange = model.getRightRange();
+ assertNotNull(leftRange);
+ assertEquals(0, leftRange.getFrom());
+ assertEquals(3, leftRange.getTo());
+ assertNull(middleRange);
+ assertNotNull(rightRange);
+ assertEquals(7, rightRange.getFrom());
+ assertEquals(10, rightRange.getTo());
+
+ //
+ model.setIndex(2);
+ leftRange = model.getLeftRange();
+ middleRange = model.getMiddleRange();
+ rightRange = model.getRightRange();
+ assertNotNull(leftRange);
+ assertEquals(0, leftRange.getFrom());
+ assertEquals(4, leftRange.getTo());
+ assertNull(middleRange);
+ assertNotNull(rightRange);
+ assertEquals(7, rightRange.getFrom());
+ assertEquals(10, rightRange.getTo());
+
+ //
+ model.setIndex(3);
+ leftRange = model.getLeftRange();
+ middleRange = model.getMiddleRange();
+ rightRange = model.getRightRange();
+ assertNotNull(leftRange);
+ assertEquals(0, leftRange.getFrom());
+ assertEquals(5, leftRange.getTo());
+ assertNull(middleRange);
+ assertNotNull(rightRange);
+ assertEquals(7, rightRange.getFrom());
+ assertEquals(10, rightRange.getTo());
+
+ //
+ model.setIndex(4);
+ leftRange = model.getLeftRange();
+ middleRange = model.getMiddleRange();
+ rightRange = model.getRightRange();
+ assertNotNull(leftRange);
+ assertEquals(0, leftRange.getFrom());
+ assertEquals(6, leftRange.getTo());
+ assertNull(middleRange);
+ assertNotNull(rightRange);
+ assertEquals(7, rightRange.getFrom());
+ assertEquals(10, rightRange.getTo());
+
+ //
+ model.setIndex(5);
+ leftRange = model.getLeftRange();
+ middleRange = model.getMiddleRange();
+ rightRange = model.getRightRange();
+ assertNotNull(leftRange);
+ assertEquals(0, leftRange.getFrom());
+ assertEquals(3, leftRange.getTo());
+ assertNull(middleRange);
+ assertNotNull(rightRange);
+ assertEquals(4, rightRange.getFrom());
+ assertEquals(10, rightRange.getTo());
+
+ //
+ model.setIndex(6);
+ leftRange = model.getLeftRange();
+ middleRange = model.getMiddleRange();
+ rightRange = model.getRightRange();
+ assertNotNull(leftRange);
+ assertEquals(0, leftRange.getFrom());
+ assertEquals(3, leftRange.getTo());
+ assertNull(middleRange);
+ assertNotNull(rightRange);
+ assertEquals(5, rightRange.getFrom());
+ assertEquals(10, rightRange.getTo());
+
+ //
+ model.setIndex(7);
+ leftRange = model.getLeftRange();
+ middleRange = model.getMiddleRange();
+ rightRange = model.getRightRange();
+ assertNotNull(leftRange);
+ assertEquals(0, leftRange.getFrom());
+ assertEquals(3, leftRange.getTo());
+ assertNull(middleRange);
+ assertNotNull(rightRange);
+ assertEquals(6, rightRange.getFrom());
+ assertEquals(10, rightRange.getTo());
+
+ //
+ model.setIndex(8);
+ leftRange = model.getLeftRange();
+ middleRange = model.getMiddleRange();
+ rightRange = model.getRightRange();
+ assertNotNull(leftRange);
+ assertEquals(0, leftRange.getFrom());
+ assertEquals(3, leftRange.getTo());
+ assertNull(middleRange);
+ assertNotNull(rightRange);
+ assertEquals(7, rightRange.getFrom());
+ assertEquals(10, rightRange.getTo());
+
+ //
+ model.setIndex(9);
+ leftRange = model.getLeftRange();
+ middleRange = model.getMiddleRange();
+ rightRange = model.getRightRange();
+ assertNotNull(leftRange);
+ assertEquals(0, leftRange.getFrom());
+ assertEquals(3, leftRange.getTo());
+ assertNull(middleRange);
+ assertNotNull(rightRange);
+ assertEquals(7, rightRange.getFrom());
+ assertEquals(10, rightRange.getTo());
+ }
+
+ public void test_3_inf_10()
+ {
+ for (int j = 1;j < 10;j++)
+ {
+ for (int i = 0;i < j;i++)
+ {
+ ListBrowser model = new ListBrowser(0, j, 3, i);
+ ListBrowser.Range leftRange = model.getLeftRange();
+ ListBrowser.Range middleRange = model.getMiddleRange();
+ ListBrowser.Range rightRange = model.getRightRange();
+ String msg = "testing with i=" +i + " j=" + j;
+ assertNull(msg, leftRange);
+ assertNotNull(msg, middleRange);
+ assertEquals(msg, 0, middleRange.getFrom());
+ assertEquals(msg, j, middleRange.getTo());
+ assertNull(msg, rightRange);
+ }
+ }
+ }
+
+ public void test_2_8()
+ {
+ ListBrowser model = new ListBrowser(0, 8, 2, 0);
+
+ //
+ ListBrowser.Range leftRange = model.getLeftRange();
+ ListBrowser.Range middleRange = model.getMiddleRange();
+ ListBrowser.Range rightRange = model.getRightRange();
+ assertNotNull(leftRange);
+ assertEquals(0, leftRange.getFrom());
+ assertEquals(2, leftRange.getTo());
+ assertNull(middleRange);
+ assertNotNull(rightRange);
+ assertEquals(6, rightRange.getFrom());
+ assertEquals(8, rightRange.getTo());
+
+ //
+ model.setIndex(1);
+ leftRange = model.getLeftRange();
+ middleRange = model.getMiddleRange();
+ rightRange = model.getRightRange();
+ assertNotNull(leftRange);
+ assertEquals(0, leftRange.getFrom());
+ assertEquals(3, leftRange.getTo());
+ assertNull(middleRange);
+ assertNotNull(rightRange);
+ assertEquals(6, rightRange.getFrom());
+ assertEquals(8, rightRange.getTo());
+
+ //
+ model.setIndex(2);
+ leftRange = model.getLeftRange();
+ middleRange = model.getMiddleRange();
+ rightRange = model.getRightRange();
+ assertNotNull(leftRange);
+ assertEquals(0, leftRange.getFrom());
+ assertEquals(4, leftRange.getTo());
+ assertNull(middleRange);
+ assertNotNull(rightRange);
+ assertEquals(6, rightRange.getFrom());
+ assertEquals(8, rightRange.getTo());
+
+ //
+ model.setIndex(3);
+ leftRange = model.getLeftRange();
+ middleRange = model.getMiddleRange();
+ rightRange = model.getRightRange();
+ assertNotNull(leftRange);
+ assertEquals(0, leftRange.getFrom());
+ assertEquals(2, leftRange.getTo());
+ assertNotNull(middleRange);
+ assertEquals(3, middleRange.getFrom());
+ assertEquals(5, middleRange.getTo());
+ assertNotNull(rightRange);
+ assertEquals(6, rightRange.getFrom());
+ assertEquals(8, rightRange.getTo());
+
+ //
+ model.setIndex(4);
+ leftRange = model.getLeftRange();
+ middleRange = model.getMiddleRange();
+ rightRange = model.getRightRange();
+ assertNotNull(leftRange);
+ assertEquals(0, leftRange.getFrom());
+ assertEquals(2, leftRange.getTo());
+ assertNull(middleRange);
+ assertNotNull(rightRange);
+ assertEquals(4, rightRange.getFrom());
+ assertEquals(8, rightRange.getTo());
+
+ //
+ model.setIndex(5);
+ leftRange = model.getLeftRange();
+ middleRange = model.getMiddleRange();
+ rightRange = model.getRightRange();
+ assertNotNull(leftRange);
+ assertEquals(0, leftRange.getFrom());
+ assertEquals(2, leftRange.getTo());
+ assertNull(middleRange);
+ assertNotNull(rightRange);
+ assertEquals(5, rightRange.getFrom());
+ assertEquals(8, rightRange.getTo());
+
+ //
+ model.setIndex(6);
+ leftRange = model.getLeftRange();
+ middleRange = model.getMiddleRange();
+ rightRange = model.getRightRange();
+ assertNotNull(leftRange);
+ assertEquals(0, leftRange.getFrom());
+ assertEquals(2, leftRange.getTo());
+ assertNull(middleRange);
+ assertNotNull(rightRange);
+ assertEquals(6, rightRange.getFrom());
+ assertEquals(8, rightRange.getTo());
+
+ //
+ model.setIndex(7);
+ leftRange = model.getLeftRange();
+ middleRange = model.getMiddleRange();
+ rightRange = model.getRightRange();
+ assertNotNull(leftRange);
+ assertEquals(0, leftRange.getFrom());
+ assertEquals(2, leftRange.getTo());
+ assertNull(middleRange);
+ assertNotNull(rightRange);
+ assertEquals(6, rightRange.getFrom());
+ assertEquals(8, rightRange.getTo());
+ }
+
+ public void test_2_7()
+ {
+ ListBrowser model = new ListBrowser(0, 7, 2, 0);
+
+ //
+ ListBrowser.Range leftRange = model.getLeftRange();
+ ListBrowser.Range middleRange = model.getMiddleRange();
+ ListBrowser.Range rightRange = model.getRightRange();
+ assertNotNull(leftRange);
+ assertEquals(0, leftRange.getFrom());
+ assertEquals(2, leftRange.getTo());
+ assertNull(middleRange);
+ assertNotNull(rightRange);
+ assertEquals(5, rightRange.getFrom());
+ assertEquals(7, rightRange.getTo());
+
+ //
+ model.setIndex(1);
+ leftRange = model.getLeftRange();
+ middleRange = model.getMiddleRange();
+ rightRange = model.getRightRange();
+ assertNotNull(leftRange);
+ assertEquals(0, leftRange.getFrom());
+ assertEquals(3, leftRange.getTo());
+ assertNull(middleRange);
+ assertNotNull(rightRange);
+ assertEquals(5, rightRange.getFrom());
+ assertEquals(7, rightRange.getTo());
+
+ //
+ model.setIndex(2);
+ leftRange = model.getLeftRange();
+ middleRange = model.getMiddleRange();
+ rightRange = model.getRightRange();
+ assertNotNull(leftRange);
+ assertEquals(0, leftRange.getFrom());
+ assertEquals(4, leftRange.getTo());
+ assertNull(middleRange);
+ assertNotNull(rightRange);
+ assertEquals(5, rightRange.getFrom());
+ assertEquals(7, rightRange.getTo());
+
+ //
+ model.setIndex(3);
+ leftRange = model.getLeftRange();
+ middleRange = model.getMiddleRange();
+ rightRange = model.getRightRange();
+ assertNotNull(leftRange);
+ assertEquals(0, leftRange.getFrom());
+ assertEquals(2, leftRange.getTo());
+ assertNull(middleRange);
+ assertNotNull(rightRange);
+ assertEquals(3, rightRange.getFrom());
+ assertEquals(7, rightRange.getTo());
+
+ //
+ model.setIndex(4);
+ leftRange = model.getLeftRange();
+ middleRange = model.getMiddleRange();
+ rightRange = model.getRightRange();
+ assertNotNull(leftRange);
+ assertEquals(0, leftRange.getFrom());
+ assertEquals(2, leftRange.getTo());
+ assertNull(middleRange);
+ assertNotNull(rightRange);
+ assertEquals(4, rightRange.getFrom());
+ assertEquals(7, rightRange.getTo());
+
+ //
+ model.setIndex(5);
+ leftRange = model.getLeftRange();
+ middleRange = model.getMiddleRange();
+ rightRange = model.getRightRange();
+ assertNotNull(leftRange);
+ assertEquals(0, leftRange.getFrom());
+ assertEquals(2, leftRange.getTo());
+ assertNull(middleRange);
+ assertNotNull(rightRange);
+ assertEquals(5, rightRange.getFrom());
+ assertEquals(7, rightRange.getTo());
+
+ //
+ model.setIndex(6);
+ leftRange = model.getLeftRange();
+ middleRange = model.getMiddleRange();
+ rightRange = model.getRightRange();
+ assertNotNull(leftRange);
+ assertEquals(0, leftRange.getFrom());
+ assertEquals(2, leftRange.getTo());
+ assertNull(middleRange);
+ assertNotNull(rightRange);
+ assertEquals(5, rightRange.getFrom());
+ assertEquals(7, rightRange.getTo());
+ }
+
+ public void test_2_inf_7()
+ {
+ for (int j = 1;j < 7;j++)
+ {
+ for (int i = 0;i < j;i++)
+ {
+ ListBrowser model = new ListBrowser(0, j, 2, i);
+ ListBrowser.Range leftRange = model.getLeftRange();
+ ListBrowser.Range middleRange = model.getMiddleRange();
+ ListBrowser.Range rightRange = model.getRightRange();
+ String msg = "testing with i=" +i + " j=" + j;
+ assertNull(msg, leftRange);
+ assertNotNull(msg, middleRange);
+ assertEquals(msg, 0, middleRange.getFrom());
+ assertEquals(msg, j, middleRange.getTo());
+ assertNull(msg, rightRange);
+ }
+ }
+ }
+
+ public void test_1_5()
+ {
+ ListBrowser model = new ListBrowser(0, 5, 1, 0);
+
+ //
+ ListBrowser.Range leftRange = model.getLeftRange();
+ ListBrowser.Range middleRange = model.getMiddleRange();
+ ListBrowser.Range rightRange = model.getRightRange();
+ assertNotNull(leftRange);
+ assertEquals(0, leftRange.getFrom());
+ assertEquals(1, leftRange.getTo());
+ assertNull(middleRange);
+ assertNotNull(rightRange);
+ assertEquals(4, rightRange.getFrom());
+ assertEquals(5, rightRange.getTo());
+
+ //
+ model.setIndex(1);
+ leftRange = model.getLeftRange();
+ middleRange = model.getMiddleRange();
+ rightRange = model.getRightRange();
+ assertNotNull(leftRange);
+ assertEquals(0, leftRange.getFrom());
+ assertEquals(2, leftRange.getTo());
+ assertNull(middleRange);
+ assertNotNull(rightRange);
+ assertEquals(4, rightRange.getFrom());
+ assertEquals(5, rightRange.getTo());
+
+ //
+ model.setIndex(2);
+ leftRange = model.getLeftRange();
+ middleRange = model.getMiddleRange();
+ rightRange = model.getRightRange();
+ assertNotNull(leftRange);
+ assertEquals(0, leftRange.getFrom());
+ assertEquals(1, leftRange.getTo());
+ assertNotNull(middleRange);
+ assertEquals(2, middleRange.getFrom());
+ assertEquals(3, middleRange.getTo());
+ assertNotNull(rightRange);
+ assertEquals(4, rightRange.getFrom());
+ assertEquals(5, rightRange.getTo());
+
+ //
+ model.setIndex(3);
+ leftRange = model.getLeftRange();
+ middleRange = model.getMiddleRange();
+ rightRange = model.getRightRange();
+ assertNotNull(leftRange);
+ assertEquals(0, leftRange.getFrom());
+ assertEquals(1, leftRange.getTo());
+ assertNull(middleRange);
+ assertNotNull(rightRange);
+ assertEquals(3, rightRange.getFrom());
+ assertEquals(5, rightRange.getTo());
+
+ //
+ model.setIndex(4);
+ leftRange = model.getLeftRange();
+ middleRange = model.getMiddleRange();
+ rightRange = model.getRightRange();
+ assertNotNull(leftRange);
+ assertEquals(0, leftRange.getFrom());
+ assertEquals(1, leftRange.getTo());
+ assertNull(middleRange);
+ assertNotNull(rightRange);
+ assertEquals(4, rightRange.getFrom());
+ assertEquals(5, rightRange.getTo());
+ }
+
+ public void test_1_4()
+ {
+ ListBrowser model = new ListBrowser(0, 4, 1, 0);
+
+ //
+ ListBrowser.Range leftRange = model.getLeftRange();
+ ListBrowser.Range middleRange = model.getMiddleRange();
+ ListBrowser.Range rightRange = model.getRightRange();
+ assertNotNull(leftRange);
+ assertEquals(0, leftRange.getFrom());
+ assertEquals(1, leftRange.getTo());
+ assertNull(middleRange);
+ assertNotNull(rightRange);
+ assertEquals(3, rightRange.getFrom());
+ assertEquals(4, rightRange.getTo());
+
+ //
+ model.setIndex(1);
+ leftRange = model.getLeftRange();
+ middleRange = model.getMiddleRange();
+ rightRange = model.getRightRange();
+ assertNotNull(leftRange);
+ assertEquals(0, leftRange.getFrom());
+ assertEquals(2, leftRange.getTo());
+ assertNull(middleRange);
+ assertNotNull(rightRange);
+ assertEquals(3, rightRange.getFrom());
+ assertEquals(4, rightRange.getTo());
+
+ //
+ model.setIndex(2);
+ leftRange = model.getLeftRange();
+ middleRange = model.getMiddleRange();
+ rightRange = model.getRightRange();
+ assertNotNull(leftRange);
+ assertEquals(0, leftRange.getFrom());
+ assertEquals(1, leftRange.getTo());
+ assertNull(middleRange);
+ assertNotNull(rightRange);
+ assertEquals(2, rightRange.getFrom());
+ assertEquals(4, rightRange.getTo());
+
+ //
+ model.setIndex(3);
+ leftRange = model.getLeftRange();
+ middleRange = model.getMiddleRange();
+ rightRange = model.getRightRange();
+ assertNotNull(leftRange);
+ assertEquals(0, leftRange.getFrom());
+ assertEquals(1, leftRange.getTo());
+ assertNull(middleRange);
+ assertNotNull(rightRange);
+ assertEquals(3, rightRange.getFrom());
+ assertEquals(4, rightRange.getTo());
+ }
+
+ public void test_1_inf_4()
+ {
+ for (int j = 1;j < 4;j++)
+ {
+ for (int i = 0;i < j;i++)
+ {
+ ListBrowser model = new ListBrowser(0, j, 1, i);
+ ListBrowser.Range leftRange = model.getLeftRange();
+ ListBrowser.Range middleRange = model.getMiddleRange();
+ ListBrowser.Range rightRange = model.getRightRange();
+ String msg = "testing with i=" +i + " j=" + j;
+ assertNull(msg, leftRange);
+ assertNotNull(msg, middleRange);
+ assertEquals(msg, 0, middleRange.getFrom());
+ assertEquals(msg, j, middleRange.getTo());
+ assertNull(msg, rightRange);
+ }
+ }
+ }
+
+ public void testThrowIAE()
+ {
+ contructionFail(0, 0, 1, 0);
+
+ //
+ contructionFail(0, 1, 1, -1);
+ contructionFail(0, 1, 1, 2);
+
+ //
+ contructionFail(0, 1, 0, 0);
+ }
+
+ private void contructionFail(int from, int to, int width, int index)
+ {
+ try
+ {
+ new ListBrowser(from, to, width, index);
+ fail("Was expecting failure for from=" + from + "to=" + to +
" width=" + width + " index=" + index);
+ }
+ catch (IllegalArgumentException expected)
+ {
+ }
+ }
+}