示例#1
0
        public void SelectItemTest()
        {
            int[] weights = new[] { 2, 3, 5, 7 };
            WeightedSelection <int> ws = new WeightedSelection <int>(
                weights.ToList(),
                i => i);

            Assert.AreEqual(17, ws.TotalWeights);
            CollectionAssert.AreEquivalent(weights, ws.Items);
            CollectionAssert.AreEquivalent(new[] { 2, 5, 10, 17 }, ws.WeightCDF);

            Assert.AreEqual(2, ws.SelectItem(1));
            Assert.AreEqual(2, ws.SelectItem(2));

            Assert.AreEqual(3, ws.SelectItem(3));
            Assert.AreEqual(3, ws.SelectItem(4));
            Assert.AreEqual(3, ws.SelectItem(5));

            Assert.AreEqual(5, ws.SelectItem(6));
            Assert.AreEqual(5, ws.SelectItem(7));
            Assert.AreEqual(5, ws.SelectItem(8));
            Assert.AreEqual(5, ws.SelectItem(9));
            Assert.AreEqual(5, ws.SelectItem(10));

            Assert.AreEqual(7, ws.SelectItem(11));
            Assert.AreEqual(7, ws.SelectItem(12));
            Assert.AreEqual(7, ws.SelectItem(13));
            Assert.AreEqual(7, ws.SelectItem(14));
            Assert.AreEqual(7, ws.SelectItem(15));
            Assert.AreEqual(7, ws.SelectItem(16));
            Assert.AreEqual(7, ws.SelectItem(17));

            Assert.Catch <ArgumentOutOfRangeException>(() => ws.SelectItem(18));
        }