public static void DateTimeRerouting() { var dt = new FDateTime(1, 2, 3); FDateTime.get_NowFake_static = () => { var hook = CastlePatchedInterceptorRegistry.TryGetStaticHook(typeof(FDateTime), 1); if (hook != null) { var results = hook(new object[0]); var retvalue = results[0]; if (!(retvalue is PassthroughPlaceholder)) { return((FDateTime)retvalue); } } return(new FDateTime(DateTime.Now.Ticks)); }; Assert.AreEqual(1, dt.Year); var dtstatic = Substitute.ForStatic <FDateTime>(); FDateTime.Now.Returns(new FDateTime(2, 3, 4)); Assert.AreEqual(2, FDateTime.Now.Year); }
public static void StringBuilderRerouting() { var sb = Substitute.ForPartsOf <FStringBuilder>(); sb.get_LengthFake = () => { var hook = CastlePatchedInterceptorRegistry.TryGetHook(sb); if (hook != null) { var results = hook(new object[0]); var retvalue = results[0]; if (!(retvalue is PassthroughPlaceholder)) { return((int)retvalue); } } var oldHook = sb.get_LengthFake; sb.get_LengthFake = null; var rv = sb.Length; sb.get_LengthFake = oldHook; return(rv); }; sb.ToStringFake = () => { var hook = CastlePatchedInterceptorRegistry.TryGetHook(sb); if (hook != null) { var results = hook(new object[0]); var retvalue = results[0]; if (!(retvalue is PassthroughPlaceholder)) { return((string)retvalue); } } var oldHook = sb.ToStringFake; sb.ToStringFake = null; var rv = sb.ToString(); sb.ToStringFake = oldHook; return(rv); }; sb.Append("abc"); sb.ToString().Returns("test"); Assert.AreEqual("test", sb.ToString()); //sb.Length.Returns(123); Assert.AreEqual(3, sb.Length); }
public void Dispose() { CastlePatchedInterceptorRegistry.UnMockStatics(_staticType); }