public void ExchangeT_should_be_callable_indirectly() { using (new IndirectionsContext()) { // Arrange PInterlocked.ExchangeOfTTRefT <MyData>().Body = (ref MyData location1, MyData value) => { location1 = value; return(new MyData(42)); }; // Act var data1 = new MyData(100); var data2 = new MyData(200); var actual = Interlocked.Exchange(ref data1, data2); // Assert Assert.AreEqual(200, data1.Value); Assert.AreEqual(42, actual.Value); } }
public void AutoConfiguredMoqPrigCustomization_should_not_mock_ref_parameter_method_because_it_is_used_for_returning_value_condition() { using (new IndirectionsContext()) { // Arrange var ms = new MockStorage(MockBehavior.Default); var fixture = new Fixture().Customize(new AutoConfiguredMoqPrigCustomization(ms)); PInterlocked.AddInt32RefInt32().Body = (ref int location1, int value) => 23; fixture.Create <PInterlocked>(); // Act var location = 42; var result = Interlocked.Add(ref location, int.MaxValue); // Assert Assert.AreEqual(42, location); Assert.AreEqual(23, result); } }
public void AutoConfiguredMoqPrigCustomization_should_not_mock_generic_method_because_we_cannot_determine_the_generic_argument() { using (new IndirectionsContext()) { // Arrange var ms = new MockStorage(MockBehavior.Default); var fixture = new Fixture().Customize(new AutoConfiguredMoqPrigCustomization(ms)); PInterlocked.ExchangeOfTTRefT <Version>().Body = (ref Version location1, Version value) => new Version(1, 2, 3); fixture.Create <PInterlocked>(); // Act var location = new Version(4, 5, 6); var result = Interlocked.Exchange(ref location, new Version(7, 8, 9)); // Assert Assert.AreEqual(new Version(4, 5, 6), location); Assert.AreEqual(new Version(1, 2, 3), result); } }