public void testDef()
        {
            JDFIntegerRangeList rangeList = null;

            try
            {
                rangeList = new JDFIntegerRangeList("0 ~-1");
                rangeList.setDef(20);
                Assert.AreEqual(20, rangeList.getElementCount());
            }
            catch (FormatException)
            {
                Assert.Fail("FormatException");
            }

            try
            {
                rangeList = new JDFIntegerRangeList("2 ~ -6 -3 -2 -1 ");
                rangeList.setDef(10);

                Assert.AreEqual("2 ~ 4 7 8 9", rangeList.ToString());
                rangeList.normalize(false);
                Assert.AreEqual("2 ~ 4 7 ~ 9", rangeList.ToString());
                rangeList = new JDFIntegerRangeList("1 3 5 2 4 6 ~ 22");
                rangeList.normalize(true);
                Assert.AreEqual("1 ~ 22", rangeList.ToString());
            }
            catch (FormatException)
            {
                Assert.Fail("FormatException");
            }
        }
        public virtual void testgetElementCount()
        {
            JDFIntegerRangeList irl = new JDFIntegerRangeList("0 ~ 5");

            Assert.AreEqual(6, irl.getElementCount());
            irl = new JDFIntegerRangeList("0 ~ -1");
            Assert.AreEqual(-1, irl.getElementCount());
            irl = new JDFIntegerRangeList("0 ~ INF");
            Assert.IsTrue(irl.getElementCount() < 0);
            irl = new JDFIntegerRangeList("1 ~ 2 0 ~ INF");
            Assert.IsTrue(irl.getElementCount() < 0);
            irl = new JDFIntegerRangeList("1 ~ 2 5");
            Assert.AreEqual(3, irl.getElementCount());

            irl = new JDFIntegerRangeList("1 ~ 2 -2");
            irl.setDef(4);
            Assert.AreEqual(3, irl.getElementCount());
            irl.setDef(1);
            Assert.AreEqual(-1, irl.getElementCount());
        }
        public void testConstruct()
        {
            JDFIntegerRangeList rangeList;

            try
            {
                rangeList = new JDFIntegerRangeList((string)null);
                Assert.AreEqual(0, rangeList.getElementCount());
                rangeList = new JDFIntegerRangeList("");
                Assert.AreEqual(0, rangeList.getElementCount());
            }
            catch (FormatException)
            {
                Assert.Fail("snafu");
            }
        }
        public void testJDFIntegerRangeListXDef()
        {
            JDFIntegerRange r  = new JDFIntegerRange(1, 2);
            JDFIntegerRange r2 = new JDFIntegerRange(3, -1, 16); // 16 elements

            // element(-1) =
            // 15, range =
            // 3~15

            Assert.IsTrue(r.getElementCount() == 2, "Bad construction of ranges: Range:" + r.ToString());
            Assert.IsTrue(r2.getElementCount() == 13, "Bad construction of ranges with setDef: Range:" + r.ToString());

            JDFIntegerRangeList r3 = new JDFIntegerRangeList(" 1 ~ 2 3 ~ -1 ", 16);

            Assert.IsTrue(r3.getElementCount() == 15, "Bad construction of ranges with setDef: Range:" + r.ToString());
        }
        public void testGetIntegerList()
        {
            try
            {
                JDFIntegerRangeList rangeList = new JDFIntegerRangeList("0 1~2 3~6 8 ~ 7");
                JDFIntegerList      list      = rangeList.getIntegerList();
                // list must be equal the string "0 1 2 3 4 5 6"
                Assert.AreEqual("0 1 2 3 4 5 6 8 7", list.ToString(), "Bad getIntegerList: " + list);

                // now some performance
                for (int i = 0; i < 1000; i++)
                {
                    rangeList.Append(i * 10, i * 10 + 5);
                }

                int n = 0;
                for (int i = 0; i < rangeList.getElementCount(); i++)
                {
                    int j = rangeList.getElement(i);
                    n += j;
                }

                list = rangeList.getIntegerList();
                int m = 0;
                for (int i = 0; i < list.Count; i++)
                {
                    int j = (int)list.elementAt(i);
                    m += j;
                }

                Assert.AreEqual(n, m);
            }
            catch (FormatException)
            {
                Assert.Fail("FormatException");
            }
        }