public void PeoplevLovercamp() { var testCrime = new Felony { ActusReus = new ActusReus { IsAction = lp => lp is Lovercamp || lp is MsWynashe, IsVoluntary = lp => lp is Lovercamp || lp is MsWynashe }, MensRea = new GeneralIntent { IsKnowledgeOfWrongdoing = lp => lp is Lovercamp || lp is MsWynashe, IsIntentOnWrongdoing = lp => lp is Lovercamp || lp is MsWynashe, }, }; var testResult = testCrime.IsValid(new Lovercamp()); Assert.IsTrue(testResult); var testSubject = new NecessityDefense <ITermCategory> { Imminence = new Imminence(ExtensionMethods.Defendant) { GetResponseTime = lp => Imminence.NormalReactionTimeToDanger }, IsMultipleInHarm = lp => lp is Lovercamp || lp is MsWynashe, Proportionality = new ChoiceThereof <ITermCategory>(ExtensionMethods.Defendant) { GetChoice = lp => { if (lp is Lovercamp || lp is MsWynashe) { return(new EscCamp()); } if (lp is LesbianInmates) { return(new SeriousBodilyInjury()); } return(null); }, GetOtherPossibleChoices = lp => new List <ITermCategory> { new SeriousBodilyInjury(), new DeadlyForce() } }, }; testResult = testSubject.IsValid(new Lovercamp(), new LesbianInmates()); Console.WriteLine(testSubject.ToString()); Assert.IsTrue(testResult); }
public void ButlervFlorida() { var testCrime = new Felony { ActusReus = new CriminalTrespass { IsTangibleEntry = lp => lp is Butler, SubjectProperty = new LegalProperty("Thelma Harvey house") { IsEntitledTo = lp => lp is ThelmaHarvey, IsInPossessionOf = lp => lp is ThelmaHarvey } }, MensRea = new GeneralIntent { IsKnowledgeOfWrongdoing = lp => lp is Butler } }; var testResult = testCrime.IsValid(new Butler(), new ThelmaHarvey()); Console.WriteLine(testCrime.ToString()); Assert.IsTrue(testResult); var testDefense = new NecessityDefense <ITermCategory> { //according to Butler - was being chased IsMultipleInHarm = lp => lp is Butler, //no one else saw the defendant being chased Imminence = new Imminence(ExtensionMethods.Defendant) { IsImmediatePresent = ts => false, }, Proportionality = new ChoiceThereof <ITermCategory>(ExtensionMethods.Defendant) { IsProportional = (t1, t2) => false }, //court finds that he went to a party were he knew this may happen IsResponsibleForSituationArise = lp => lp is Butler }; testResult = testDefense.IsValid(new Butler(), new ThelmaHarvey()); Console.WriteLine(testDefense.ToString()); Assert.IsFalse(testResult); }
public void PutnamvPloof() { var test = new NecessityDefense <ITermCategory>(ExtensionMethods.Tortfeasor) { IsMultipleInHarm = lp => true, IsResponsibleForSituationArise = lp => false, Proportionality = new ChoiceThereof <ITermCategory>(ExtensionMethods.Tortfeasor) { GetChoice = lp => new MoorTheSloop(), GetOtherPossibleChoices = lp => new ITermCategory[] { new SeriousBodilyInjury(), }, } }; var testResult = test.IsValid(new Putnam(), new Ploof()); Console.WriteLine(test.ToString()); Assert.IsTrue(testResult); }
public void ExampleNecessityDefense() { var testCrime = new Felony { ActusReus = new ActusReus { IsAction = lp => lp is TamaraEg, IsVoluntary = lp => lp is TamaraEg }, MensRea = new GeneralIntent { IsIntentOnWrongdoing = lp => lp is TamaraEg, IsKnowledgeOfWrongdoing = lp => lp is TamaraEg } }; var testResult = testCrime.IsValid(new TamaraEg()); Assert.IsTrue(testResult); var testSubject = new NecessityDefense <ITermCategory> { Imminence = new Imminence(ExtensionMethods.Defendant) { GetResponseTime = lp => Imminence.NormalReactionTimeToDanger }, IsMultipleInHarm = lp => lp is TamaraEg, Proportionality = new ChoiceThereof <ITermCategory>(ExtensionMethods.Defendant) { GetChoice = lp => new NondeadlyForce(), GetOtherPossibleChoices = lp => new ITermCategory[] { new SeriousBodilyInjury(), new DeadlyForce(), new Death() } } }; testResult = testSubject.IsValid(new TamaraEg()); Console.WriteLine(testSubject.ToString()); Assert.IsTrue(testResult); }