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); }