Beispiel #1
0
        public void NoItemsTest()
        {
            var solver = new ZeroOneDPKnapsackSolver();
            IEnumerable<int> seq = Enumerable.Range(10, 10);
            IEnumerable<IItem> items = seq.Select(item => new IntItem(item));
            IEnumerable<IItem> knapsack = solver.Solve(items, 0);

            Assert.AreEqual(0, knapsack.Count());
        }
Beispiel #2
0
        public void SomeItemsTest()
        {
            var solver = new ZeroOneDPKnapsackSolver();
            IEnumerable<int> seq = new[] { 2, 3, 4 };
            IEnumerable<IItem> items = seq.Select(item => new IntItem(item));
            IEnumerable<IItem> knapsack = solver.Solve(items, 5);

            Assert.AreEqual(2, knapsack.Count());

            var twoQuery = from result in knapsack
                                where result.Weight == 2 && result.Value == 2
                                select result;

            var threeQuery = from result in knapsack
                                  where result.Weight == 3 && result.Value == 3
                                  select result;

            Assert.IsTrue(twoQuery.Any());
            Assert.IsTrue(threeQuery.Any());
        }
Beispiel #3
0
        public void AllItemsTest()
        {
            var solver = new ZeroOneDPKnapsackSolver();
            IEnumerable<int> seq = Enumerable.Range(1, 5);
            IEnumerable<IItem> items = seq.Select(item => new IntItem(item));
            IEnumerable<IItem> knapsack = solver.Solve(items, 15);

            Assert.AreEqual(5, knapsack.Count());

            var itemSet = new HashSet<IItem>(items);

            foreach(var item in itemSet)
            {
                var query = from result in knapsack
                                where result.Value == item.Value && result.Weight == item.Weight
                                select result;

                //Make sure we have the item in the result set
                Assert.IsTrue(query.Any());
            }
        }