public void Constructor_shall_not_call_within_short_timeframe_to_generate_unique_information() { using (new IndirectionsContext()) { // Arrange var seeds = new HashSet<int>(); PRandom.ConstructorInt32().Body = (@this, seed) => { IndirectionsContext.ExecuteOriginal(() => { var ctor = typeof(Random).GetConstructor(new[] { typeof(int) }); ctor.Invoke(@this, new object[] { seed }); }); seeds.Add(seed); }; new Random(); // preparing JIT seeds.Clear(); // Act var vil1 = new Village(); Thread.Sleep(TimeSpan.FromSeconds(1)); var vil2 = new Village(); // Assert Assert.AreEqual(2, seeds.Count); } }
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 Constructor_should_not_initialize_member_Roads_if_default_value_is_returned_internally() { using (new IndirectionsContext()) { // Arrange PList<FarmRoad>. ExcludeGeneric(). IncludeAddT(). DefaultBehavior = IndirectionBehaviors.DefaultValue; // Act var vil = new Village(); // Assert CollectionAssert.IsEmpty(vil.Roads); } }