コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
ファイル: PutnamvPloofTests.cs プロジェクト: nofuture-git/31g
        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);
        }
コード例 #4
0
        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);
        }