public void AFailingKoanReturnsAFailureMessage() { var result = new KoanContainer().RunKoans(new FailureContainer()).First(); Assert.AreEqual("FailureKoan has damaged your karma.", result.Message); Assert.AreEqual("expected failure", (result as Failure).Exception.Message); }
public void AFailingKoanReturnsItsException() { var container = new KoanContainer(); var result = container.RunKoans(new FailureContainer()).First(); Assert.AreEqual("FailureKoan has damaged your karma.", result.Message); }
private KoanResult executeContainer(KoanContainer container) { var name = container.GetType().Name; var lineOne = string.Format("When contemplating {0}:", name); var koanResults = new KoanContainer().RunKoans(container); var returnValue = koanResults.Aggregate <KoanResult, KoanResult>(new Success(lineOne), combineLinesUnlessFailed); return(returnValue); }
private KoanResult getKoanResult(KoanContainer container, MethodInfo m) { try{ m.Invoke(container, new object[] { }); return(new Success(m.Name + " has expanded your awareness.")); } catch (Exception e) { return(new Failure(m.Name + " has damaged your karma.", e.InnerException)); } }
private KoanResult executeContainer(KoanContainer container) { var name = container.GetType().Name; var lineOne = string.Format("When contemplating {0}:", name); var koanResults = new KoanContainer().RunKoans(container); var returnValue = koanResults.Aggregate<KoanResult, KoanResult>(new Success(lineOne), combineLinesUnlessFailed); return returnValue; }
private KoanResult getKoanResult(KoanContainer container, MethodInfo m) { try{ m.Invoke(container, new object[] { }); return new Success(m.Name + " has expanded your awareness."); } catch(Exception e) { return new Failure(m.Name + " has damaged your karma.", e.InnerException); } }
public void TheOutcomeOfAllSuccessfulKoansIsReturned() { var result = new KoanContainer().RunKoans(new SomeSuccesses()).Select(x => x.Message).Aggregate((x, y) => x + System.Environment.NewLine + y); var expected = "One has expanded your awareness." + System.Environment.NewLine + "Two has expanded your awareness."; Assert.AreEqual(expected, result); }
public void ASuccessfulKoanReturnsASuccessMessage() { var result = new KoanContainer().RunKoans(new SuccessContainer()).First(); Assert.AreEqual("SuccessKoan has expanded your awareness.", result.Message); }
////might want to change this behavior public void FailedKoansDontStopTheEnumeration() { var result = new KoanContainer().RunKoans(new MixedBag()).Select(x => x.Message).Aggregate((x, y) => x + System.Environment.NewLine + y); var expected = "One has damaged your karma." + System.Environment.NewLine + "Two has expanded your awareness."; Assert.AreEqual(expected, result); }
private IList<string> GetKoanNames(KoanContainer container) { var names = from x in KoanContainer.FindKoanMethods(container) select x.Name; return names.ToList(); }
public IEnumerable <KoanResult> RunKoans(KoanContainer container) { return(from k in FindKoanMethods(container) select getKoanResult(container, k)); }
public static IEnumerable <MethodInfo> FindKoanMethods(KoanContainer container) { return(container.GetType().GetMethods().Where(m => hasKoanAttribute(m))); }
public IEnumerable<KoanResult> RunKoans(KoanContainer container) { return from k in FindKoanMethods(container) select getKoanResult(container, k); }
public static IEnumerable<MethodInfo> FindKoanMethods(KoanContainer container) { return container.GetType().GetMethods().Where(m => hasKoanAttribute(m)); }