public void CatchWithTaskTest() { //arrange Exception realEception = null; IPandaTask nextTask = new PandaTask(); IPandaTask NextTaskCallback(Exception ex) { realEception = ex; return(nextTask); } Exception excpectException = new Exception(); _task.Reject(excpectException); //act IPandaTask rejectTask = _task.Catch(NextTaskCallback); var castedTask = rejectTask as ContinuationTaskFromPandaTask; var callback = RuntimeReflection.GetValue <Func <IPandaTask>, ContinuationTaskFromPandaTask>(@"_nextActionDelegate", castedTask); IPandaTask realTask = callback(); //assert Assert.NotNull(castedTask); Assert.True(castedTask.FromCatch); Assert.AreEqual(realTask, nextTask); Assert.AreEqual(excpectException, realEception); }
public void ThenWithTaskTest() { //arrange Func <IPandaTask> expectedCallback = () => null; //act IPandaTask newtask = _task.Then(expectedCallback); var castedTask = newtask as ContinuationTaskFromPandaTask; var realCallback = RuntimeReflection.GetValue <Func <IPandaTask>, ContinuationTaskFromPandaTask>(@"_nextActionDelegate", castedTask); //assert Assert.NotNull(castedTask); Assert.False(castedTask.FromCatch); Assert.AreEqual(expectedCallback, realCallback); }
public static void ChapterTwo() { #region [ Create types ] CreateTypes createTypes = new CreateTypes(); //createTypes.StructAndClasses(); //createTypes.Aliens(); //createTypes.MyStackGeneric(); //createTypes.ThisConstructor(); //createTypes.DestoryAlien(); //createTypes.SummaryOfCh1to2_1(); #endregion #region [ Consume types ] ConsumeTypes consumeTypes = new ConsumeTypes(); //consumeTypes.BoxingAndUnboxing(); //consumeTypes.ImplicitExplicitOperator(); //consumeTypes.UsingDynamic(); #endregion #region [ Class hierarchies ] ClassHierarchy ch = new ClassHierarchy(); //ch.DepositInMyBank(20); //ch.ComparePricesInMyBank(); #endregion #region [ Reflection ] #region [ Attributes, Methods Invoke, Load Assemblies] RuntimeReflection reflection = new RuntimeReflection(); //reflection.TestConditional(); //reflection.CheckAttribute(); //reflection.CheckCustomAttribute(); //reflection.IdentityMembersInClass(); //reflection.CallMethodUsingReflection(); //reflection.ScanAssembly(); #endregion #region [ Code DOM , Expression Trees and Reflection ] #region [ CodeDOM ] CodeDOMExample cde = new CodeDOMExample(); //cde.GenerateCodDOM(); #endregion #region [ Expression Trees ] ExpressionTrees et = new ExpressionTrees(); //et.ExpressionTreeMultiply(); //et.ExpressionTreeModifyToAdd(); //et.IsAdultFemale(); #endregion #region [ More Reflection ] Assemblies assemblies = new Assemblies(); //assemblies.DisplayAssemblyInfo(); //assemblies.GetPropertyInfo(); //assemblies.GetMethodInfo(); #endregion #endregion #endregion #region [ Manipulate strings ] ManipulateStrings manipulateStrings = new ManipulateStrings(); //manipulateStrings.StringInterning(); //manipulateStrings.StringWriter(); //manipulateStrings.StringReader(); //manipulateStrings.SearchStrings(); //manipulateStrings.StringComparisonAndCulture(); //manipulateStrings.FormatString(); //manipulateStrings.FormattableString(); //manipulateStrings.MusicTrackFormatter(); #endregion }