public void GetShortestRoute_should_consider_routes_in_order_from_small_distance() { using (new IndirectionsContext()) { // Arrange var slot = 0; var numAndDistances = new[] { 4, 2, 4, 3, 1, 6, 7 }; PRandom.NextInt32().Body = (@this, maxValue) => numAndDistances[slot++]; var vil = new Village(); var considerations = new List <RicePaddy>(); PList <RicePaddy> .AddT().Body = (@this, item) => { IndirectionsContext.ExecuteOriginal(() => { considerations.Add(item); @this.Add(item); }); }; // Act var result = vil.GetShortestRoute(vil.RicePaddies.ElementAt(2), vil.RicePaddies.ElementAt(0)); // Assert Assert.AreEqual(3, result.TotalDistance); Assert.AreEqual(4, considerations.Count); Assert.AreEqual(2, considerations[0].Identifier); Assert.AreEqual(1, considerations[1].Identifier); Assert.AreEqual(0, considerations[2].Identifier); Assert.AreEqual(3, considerations[3].Identifier); } }
public void Add_should_be_callable_indirectly() { using (new IndirectionsContext()) { // Arrange var actual = default(int); PList <int> .AddT().Body = (@this, item) => actual = item; // Act var list = new List <int>(); list.Add(42); // Assert Assert.AreEqual(0, list.Count); Assert.AreEqual(42, actual); } }