示例#1
0
        public void DoTestSequence(uint max)
        {
            List <uint> vals = new List <uint>();
            Dictionary <uint, object> pass1 = new Dictionary <uint, object>();
            Dictionary <uint, object> pass2 = new Dictionary <uint, object>();

            SequenceGenerator g = new SequenceGenerator(max);

            for (uint i = 1; i <= max; ++i)
            {
                uint val = g.Get(i);
                vals.Add(val);
                if (pass1.ContainsKey(val))
                {
                    Assert.Fail("Duplicate on iteration {0} of max {1}".Fmt(i, max));
                }
                pass1.Add(val, null);
            }

            for (uint i = 1; i <= max; ++i)
            {
                uint val = g.Get(vals[(int)(i - 1)]);
                if (pass2.ContainsKey(val))
                {
                    Assert.Fail("Duplicate on jumping iteration {0} ({1}) of max {2}".Fmt(i, vals[(int)(i - 1)], max));
                }
                pass2.Add(val, null);
            }

            Assert.AreEqual(pass1.Count, pass2.Count);
        }