コード例 #1
0
        public void TestBadTiming()
        {
            var yyyy      = DateTime.Today.Year;
            var testCrime = new Felony
            {
                ActusReus = new ManslaughterVoluntary
                {
                    IsCorpusDelicti = JoseRagerEg.IsKilledWife
                },
                MensRea = new AdequateProvocation
                {
                    IsReasonableToInciteKilling = lp => lp is JoseRagerEg,
                    IsDefendantActuallyProvoked = lp => lp is JoseRagerEg,
                    IsVictimSourceOfIncite      = lp => lp is JoseRagerEg,
                    Inception = new DateTime(yyyy, 3, 15, 14, 0, 0),
                    Terminus  = new DateTime(yyyy, 3, 15, 14, 5, 0),
                    //heat of passion doesn't work over time
                    TimeOfTheDeath = new DateTime(yyyy, 3, 16, 6, 0, 0),
                }
            };

            var testResult = testCrime.IsValid(new JoseRagerEg());

            Console.WriteLine(testCrime.ToString());
            Assert.IsFalse(testResult);
        }
コード例 #2
0
        public void ExampleMistakeOfLaw()
        {
            var testCrime = new Felony
            {
                ActusReus = new ActusReus
                {
                    IsAction    = lp => lp is ShelbyEg,
                    IsVoluntary = lp => lp is ShelbyEg,
                },
                MensRea = new GeneralIntent
                {
                    IsIntentOnWrongdoing = lp => lp is ShelbyEg,
                }
            };

            var testResult = testCrime.IsValid(new ShelbyEg());

            Assert.IsTrue(testResult);

            var testSubject = new MistakeOfLaw
            {
                IsRelianceOnStatementOfLaw = lp => lp is ShelbyEg,
                IsStatementOfLawNowInvalid = lp => lp is ShelbyEg
            };

            testResult = testSubject.IsValid(new ShelbyEg());
            Console.WriteLine(testSubject.ToString());
            Assert.IsTrue(testResult);
        }
コード例 #3
0
        public void StatevHornsby()
        {
            var testCrime = new Felony
            {
                ActusReus = new ActusReus
                {
                    IsAction    = lp => lp is Hornsby,
                    IsVoluntary = lp => lp is Hornsby,
                },
                MensRea = new GeneralIntent
                {
                    IsKnowledgeOfWrongdoing = lp => lp is Hornsby,
                    IsIntentOnWrongdoing    = lp => lp is Hornsby,
                }
            };

            var testResult = testCrime.IsValid(new Hornsby());

            Assert.IsTrue(testResult);

            var testSubject = new MNaghten
            {
                IsMentalDefect = lp => lp is Hornsby,
            };

            testResult = testSubject.IsValid(new Hornsby());
            Console.WriteLine(testSubject.ToString());
            Assert.IsFalse(testResult);
        }
コード例 #4
0
        public void ExampleMNaghtenFake()
        {
            var testCrime = new Felony
            {
                ActusReus = new ActusReus
                {
                    IsVoluntary = lp => lp is SusanEg,
                    IsAction    = lp => lp is SusanEg
                },
                MensRea = new MaliceAforethought
                {
                    IsIntentOnWrongdoing = lp => lp is SusanEg
                }
            };

            var testResult = testCrime.IsValid(new SusanEg());

            Assert.IsTrue(testResult);

            var testSubject = new MNaghten
            {
                IsMentalDefect = lp => true,
                //by attempting to coverup action, insanity fails
                IsWrongnessOfAware = lp => true
            };

            testResult = testSubject.IsValid(new SusanEg());
            Console.WriteLine(testSubject.ToString());
            Assert.IsFalse(testResult);
        }
コード例 #5
0
        public void BurkevState()
        {
            var testCrime = new Felony
            {
                ActusReus = new Stalking
                {
                    IsApparentAbility = lp => lp is Burke,
                    Occasions         = new IAgitate[]
                    {
                        new Harass
                        {
                            IsSubstantialEmotionalDistress = lp => lp is Burke
                        },
                        //this is not illegal
                        new DeclareLove
                        {
                            IsCauseToFearSafety = lp => lp is Burke
                        }
                    }
                },
                MensRea = new Purposely
                {
                    IsIntentOnWrongdoing = lp => lp is Burke
                }
            };

            var testResult = testCrime.IsValid(new Burke());

            Console.WriteLine(testCrime.ToString());
            Assert.IsFalse(testResult);
        }
コード例 #6
0
        public void ExamplePolicePower()
        {
            var testCrime = new Felony
            {
                ActusReus = new ActusReus
                {
                    IsVoluntary = lp => lp is OfficerColinEg,
                    IsAction    = lp => lp is OfficerColinEg
                },
                MensRea = new GeneralIntent
                {
                    IsKnowledgeOfWrongdoing = lp => lp is OfficerColinEg,
                    IsIntentOnWrongdoing    = lp => lp is OfficerColinEg
                }
            };
            var testResult = testCrime.IsValid(new OfficerColinEg());

            Assert.IsTrue(testResult);

            var testSubject = new PolicePower
            {
                IsAgentOfTheState = lp => lp is OfficerColinEg,
                //example has officer shooting out window drive-by stlye on a fleeing person
                IsReasonableUseOfForce = lp => false
            };

            testResult = testSubject.IsValid(new OfficerColinEg(), new LindaEg());
            Console.WriteLine(testSubject.ToString());
            Assert.IsFalse(testResult);
        }
コード例 #7
0
        public void ExampeMidemeanorManslaughter()
        {
            var testInputCrime = new Misdemeanor
            {
                ActusReus = new ActusReus
                {
                    IsVoluntary = lp => lp is RobertaBrandishEg,
                    IsAction    = lp => lp is RobertaBrandishEg
                },
                MensRea = new Negligently
                {
                    IsUnjustifiableRisk = lp => lp is RobertaBrandishEg,
                    IsUnawareOfRisk     = lp => lp is RobertaBrandishEg
                }
            };

            var testResult = testInputCrime.IsValid(new RobertaBrandishEg());

            Console.WriteLine(testInputCrime);
            Assert.IsTrue(testResult);

            var testCrime = new Felony
            {
                ActusReus = new HomicideInOther(testInputCrime)
                {
                    IsCorpusDelicti = lp => lp is RobertaBrandishEg
                },
                MensRea = testInputCrime.MensRea
            };

            testResult = testCrime.IsValid(new RobertaBrandishEg());
            Console.WriteLine(testCrime.ToString());
            Assert.IsTrue(testResult);
        }
コード例 #8
0
        public void ExampleInfancyDefense()
        {
            var testCrime = new Felony
            {
                ActusReus = new ActusReus
                {
                    IsAction    = lp => lp is MarioEg,
                    IsVoluntary = lp => lp is MarioEg,
                },
                MensRea = new GeneralIntent
                {
                    IsKnowledgeOfWrongdoing = lp => lp is MarioEg,
                }
            };

            var testResult = testCrime.IsValid(new MarioEg());

            Assert.IsTrue(testResult);

            var testSubject = new Infancy();

            testResult = testSubject.IsValid(new MarioEg());
            Console.WriteLine(testSubject.ToString());
            Assert.IsTrue(testResult);
        }
コード例 #9
0
        public void GarnettvState()
        {
            var testCrime = new Felony
            {
                ActusReus = new ActusReus
                {
                    IsVoluntary = lp => lp is Garnett,
                    IsAction    = lp => lp is Garnett
                },
                MensRea = StrictLiability.Value
            };

            var testResult = testCrime.IsValid(new Garnett());

            Assert.IsTrue(testResult);

            var testSubject = new MistakeOfFact
            {
                IsBeliefNegateIntent = lp => lp is Garnett,
                IsStrictLiability    = testCrime.MensRea is StrictLiability
            };

            testResult = testSubject.IsValid(new Garnett());
            Console.WriteLine(testSubject.ToString());
            Assert.IsFalse(testResult);
        }
コード例 #10
0
        public void TestConsentDefense()
        {
            var testCrime = new Felony
            {
                ActusReus = new Rape
                {
                    IsSexualIntercourse = lp => lp is AlexGamerEg,
                    IsOneOfTwo          = lp => lp is AlexGamerEg,
                    Consent             = new VictimConsent
                    {
                        //assented
                        IsApprovalExpressed = lp => true,
                        IsCapableThereof    = lp => ((lp as BrandySisterEg)?.Age ?? 18) >= 16,
                    }
                },
                MensRea = new Purposely
                {
                    IsIntentOnWrongdoing = lp => lp is AlexGamerEg
                }
            };

            var testResult = testCrime.IsValid(new AlexGamerEg(), new BrandySisterEg()
            {
                Age = 21
            });

            Console.WriteLine(testCrime.ToString());
            Assert.IsFalse(testResult);
        }
コード例 #11
0
        public void BullockvDelaware()
        {
            var testSubject = new Felony
            {
                ActusReus = new ActusReus
                {
                    IsVoluntary = lp => lp is Bullock,
                    IsAction    = lp => lp is Bullock
                },
                MensRea = new Recklessly
                {
                    IsDisregardOfRisk = lp =>
                    {
                        lp.AddReasonEntry("reckless causation was nonetheless not established");
                        return(false);
                    },
                    IsUnjustifiableRisk = lp => lp is Bullock
                }
            };

            var testResult = testSubject.IsValid(new Bullock());

            Console.WriteLine(testSubject.ToString());
            Assert.IsFalse(testResult);
        }
コード例 #12
0
        public void CommonwealthvHenson()
        {
            var testCrime = new Felony
            {
                ActusReus = new ThreatenedBattery
                {
                    //the fake gun fired only blanks so it was no real threat
                    IsPresentAbility = lp => false,
                    //it looked and felt real to the victim
                    IsApparentAbility    = lp => lp is Henson,
                    IsByThreatOfViolence = lp => lp is Henson,
                    Imminence            = new Imminence {
                        IsImmediatePresent = ts => true
                    }
                },
                MensRea = new Purposely
                {
                    IsIntentOnWrongdoing = lp => lp is Henson
                }
            };

            var testResult = testCrime.IsValid(new Henson());

            Console.WriteLine(testCrime.ToString());
            Assert.IsTrue(testResult);
        }
コード例 #13
0
        public void TestProstitution()
        {
            var testCrime = new Felony
            {
                ActusReus = new Prostitution
                {
                    Acceptance = sex => new LegalProperty("money")
                    {
                        PropertyValue = dt => 500m
                    },
                    Assent = new Deal
                    {
                        IsApprovalExpressed = lp => lp is JohnPayerEg || lp is SueProstitueEg
                    },
                    Offer = new SexBilateral()
                    {
                        IsSexualIntercourse = lp => true,
                        IsOneOfTwo          = lp => lp is JohnPayerEg || lp is SueProstitueEg
                    }
                },
                MensRea = new Purposely
                {
                    IsKnowledgeOfWrongdoing = lp => lp is JohnPayerEg || lp is SueProstitueEg
                }
            };
            var testResult = testCrime.IsValid(new SueProstitueEg());

            Console.WriteLine(testCrime.ToString());
            Assert.IsTrue(testResult);

            testResult = testCrime.IsValid(new JohnPayerEg());
            Console.WriteLine(testCrime.ToString());
            Assert.IsTrue(testResult);
        }
コード例 #14
0
        public void ExampleSubstantialStepsTest()
        {
            var testCrime = new Felony
            {
                MensRea = new GeneralIntent
                {
                    IsIntentOnWrongdoing    = lp => lp is KevinEg,
                    IsKnowledgeOfWrongdoing = lp => lp is KevinEg,
                },
                ActusReus = new Attempt
                {
                    SubstantialSteps = new SubstantialSteps
                    {
                        IsInvestigatingPotentialScene = lp => (lp as KevinEg)?.IsCasingBank ?? false,
                        IsLyingInWait             = lp => (lp as KevinEg)?.IsWaitingInAlley ?? false,
                        IsPossessCriminalMaterial = lp => (lp as KevinEg)?.IsWrittenPlan ?? false
                    }
                }
            };

            var testResult = testCrime.IsValid(new KevinEg());

            Console.WriteLine(testCrime.ToString());
            Assert.IsTrue(testResult);
        }
コード例 #15
0
        public void StatevHolbach()
        {
            var testCrime = new Felony
            {
                ActusReus = new Stalking
                {
                    IsApparentAbility = lp => lp is Holbach,
                    Occasions         = new IAgitate[]
                    {
                        new ThreateningWords
                        {
                            IsCauseToFearSafety = lp => lp is Holbach,
                        },
                        new ThreateningWords
                        {
                            IsCauseToFearSafety = lp => lp is Holbach
                        }
                    }
                },
                MensRea = new Purposely
                {
                    IsKnowledgeOfWrongdoing = lp => lp is Holbach
                }
            };

            var testResult = testCrime.IsValid(new Holbach());

            Console.WriteLine(testCrime.ToString());
            Assert.IsTrue(testResult);
        }
コード例 #16
0
        public void ExampleEntrapment01()
        {
            var testCrime = new Felony
            {
                ActusReus = new ActusReus
                {
                    IsAction    = lp => lp is WinifredEg,
                    IsVoluntary = lp => lp is WinifredEg,
                },
                MensRea = new GeneralIntent
                {
                    IsIntentOnWrongdoing = lp => lp is WinifredEg,
                }
            };

            var testResult = testCrime.IsValid(new WinifredEg());

            Assert.IsTrue(testResult);

            var testSubject = new Entrapment(testCrime)
            {
                GetOriginatorOfIntent           = rea => new WinifredEg(),
                IsPredisposedToParticularIntent = lp => !(lp is WinifredEg)
            };

            testResult = testSubject.IsValid(new WinifredEg());
            Console.WriteLine(testSubject.ToString());
            Assert.IsFalse(testResult);
        }
コード例 #17
0
        public void PeoplevRegister()
        {
            var testCrime = new Felony
            {
                ActusReus = new ActusReus
                {
                    IsAction    = lp => lp is Register,
                    IsVoluntary = lp => lp is Register,
                },
                MensRea = new GeneralIntent
                {
                    IsKnowledgeOfWrongdoing = lp => lp is Register,
                }
            };

            var testResult = testCrime.IsValid(new Register());

            Assert.IsTrue(testResult);

            var testSubject = new Intoxication
            {
                IsIntoxicated = lp => lp is Register,
                IsInvoluntary = lp => !(lp is Register),
            };

            testResult = testSubject.IsValid(new Register());
            Console.WriteLine(testSubject.ToString());
            Assert.IsFalse(testResult);
        }
コード例 #18
0
        public void StatevRobertson()
        {
            var testCrime = new Felony
            {
                ActusReus = new Robbery
                {
                    SubjectProperty = new LegalProperty("purse")
                    {
                        IsEntitledTo     = lp => lp is MsDover,
                        IsInPossessionOf = lp => lp is MsDover
                    },
                    IsAsportation     = lp => lp is Robertson,
                    IsTakenPossession = lp => lp is Robertson,
                    //court rules this is false, snatching is larceny not robbery
                    IsByViolence = lp => false,
                },
                MensRea = new Purposely
                {
                    IsIntentOnWrongdoing = lp => lp is Robertson
                }
            };
            var testResult = testCrime.IsValid(new Robertson(), new MsDover());

            Console.WriteLine(testCrime.ToString());
            Assert.IsFalse(testResult);
        }
コード例 #19
0
        public void ExampleFelonyMurder()
        {
            var testFirstCrime = new Felony
            {
                ActusReus = new ActusReus
                {
                    IsVoluntary = lp => lp is JouquinBurnerEg,
                    IsAction    = lp => lp is JouquinBurnerEg
                },
                MensRea = new Recklessly
                {
                    IsUnjustifiableRisk = lp => lp is JouquinBurnerEg,
                    IsDisregardOfRisk   = lp => lp is JouquinBurnerEg
                }
            };

            var testResult = testFirstCrime.IsValid(new JouquinBurnerEg());

            Console.WriteLine(testFirstCrime.ToString());
            Assert.IsTrue(testResult);

            var testCrime = new Felony
            {
                ActusReus = new HomicideInOther(testFirstCrime)
                {
                    IsCorpusDelicti = lp => lp is JouquinBurnerEg
                },
                MensRea = testFirstCrime.MensRea
            };

            testResult = testCrime.IsValid(new JouquinBurnerEg());
            Console.WriteLine(testCrime.ToString());
            Assert.IsTrue(testResult);
        }
コード例 #20
0
        public void InTheMatterOfVcc()
        {
            var testCrime = new Felony
            {
                ActusReus = new Arson
                {
                    IsBurned        = p => p?.Name == "Metzger Middle School",
                    IsFireStarter   = lp => lp is MinorVvc,
                    SubjectProperty = new LegalProperty("Metzger Middle School"),
                },
                MensRea = new GeneralIntent
                {
                    IsKnowledgeOfWrongdoing = lp => lp is MinorVvc
                }
            };
            var testResult = testCrime.IsValid(new MinorVvc());

            Console.WriteLine(testCrime.ToString());
            Assert.IsTrue(testResult);

            var testDefense = new Technicality
            {
                AssertedFact = new InSanAntonio(),
                ActualFact   = new NotInSanAntoino(),
                IsMistaken   = (t1, t2) => true
            };

            testResult = testDefense.IsValid();
            Console.WriteLine(testDefense.ToString());
            Assert.IsTrue(testResult);
        }
コード例 #21
0
        public void StatevGuido()
        {
            var testCrime = new Felony
            {
                ActusReus = new ActusReus
                {
                    IsVoluntary = lp => lp is Guido,
                    IsAction    = lp => lp is Guido,
                },
                MensRea = new MaliceAforethought
                {
                    IsKnowledgeOfWrongdoing = lp => lp is Guido,
                }
            };

            var testResult = testCrime.IsValid(new Guido());

            Assert.IsTrue(testResult);

            var testSubject = new MNaghten
            {
                IsMentalDefect     = lp => lp is Guido,
                IsWrongnessOfAware = lp => !(lp is Guido),
            };

            testResult = testSubject.IsValid(new Guido());
            Console.WriteLine(testSubject.ToString());
            Assert.IsTrue(testResult);
        }
コード例 #22
0
        public void KarlaCrosbyvOregon()
        {
            var recklessly = new Recklessly
            {
                IsUnjustifiableRisk = lp => lp is KarlaCrosby,
                IsDisregardOfRisk   = lp => lp is KarlaCrosby,
            };
            var testSubject = new Felony
            {
                ActusReus = new ActusReus
                {
                    IsAction    = lp => lp is KarlaCrosby,
                    IsVoluntary = lp => lp is KarlaCrosby
                },
                MensRea = recklessly
            };

            var testResult = testSubject.IsValid(new KarlaCrosby());

            Assert.IsTrue(testResult);

            //the oregon supreme court found that the wording given to the jury made this false
            recklessly.IsDisregardOfRisk = lp => false;
            testResult = testSubject.IsValid(new KarlaCrosby());
            Console.WriteLine(testSubject.ToString());
            Assert.IsFalse(testResult);
        }
コード例 #23
0
        public void ExampleMNaghtenReal()
        {
            var testCrime = new Felony
            {
                ActusReus = new ActusReus
                {
                    IsVoluntary = lp => lp is AndreaEg,
                    IsAction    = lp => lp is AndreaEg
                },
                MensRea = new MaliceAforethought
                {
                    IsIntentOnWrongdoing = lp => lp is AndreaEg
                }
            };

            var testResult = testCrime.IsValid(new AndreaEg());

            Assert.IsTrue(testResult);

            var testSubject = new MNaghten
            {
                IsMentalDefect         = lp => true,
                IsNatureQualityOfAware = lp => false,
                IsWrongnessOfAware     = lp => false
            };

            testResult = testSubject.IsValid(new AndreaEg());
            Console.WriteLine(testSubject.ToString());
            Assert.IsTrue(testResult);
        }
コード例 #24
0
        public void ExampleIrrImpulseFake()
        {
            var testCrime = new Felony
            {
                ActusReus = new ActusReus
                {
                    IsAction    = lp => lp is JoleneEg,
                    IsVoluntary = lp => lp is JoleneEg,
                },
                MensRea = new GeneralIntent
                {
                    IsIntentOnWrongdoing = lp => lp is JoleneEg,
                }
            };

            var testResult = testCrime.IsValid(new JoleneEg());

            Assert.IsTrue(testResult);

            var testSubject = new IrresistibleImpulse
            {
                IsMentalDefect = lp => lp is JoleneEg,
                //having not acted on in one case is obvious is volitional
                IsVolitional = lp => true
            };

            testResult = testSubject.IsValid(new JoleneEg());
            Console.WriteLine(testSubject.ToString());
            Assert.IsFalse(testResult);
        }
コード例 #25
0
        public void ExampleDefenseOfHabitation()
        {
            var testCrime = new Felony
            {
                ActusReus = new ActusReus
                {
                    IsAction    = lp => lp is BobEg,
                    IsVoluntary = lp => lp is BobEg
                },
                MensRea = new GeneralIntent
                {
                    IsKnowledgeOfWrongdoing = lp => lp is BobEg,
                    IsIntentOnWrongdoing    = lp => lp is BobEg
                }
            };
            var testResult = testCrime.IsValid(new BobEg());

            Assert.IsTrue(testResult);

            var testSubject = new DefenseOfHabitation
            {
                IsIntruderEnterResidence = lp => true,
                IsOccupiedResidence      = lp => true,
            };

            testResult = testSubject.IsValid(new NateEg(), new NateEg());
            Console.WriteLine(testSubject.ToString());
            Assert.IsTrue(testResult);
        }
コード例 #26
0
        public void ExampleSubstantialCapacity()
        {
            var testCrime = new Felony
            {
                ActusReus = new ActusReus
                {
                    IsVoluntary = lp => lp is LoreenEg,
                    IsAction    = lp => lp is LoreenEg,
                },
                MensRea = new GeneralIntent
                {
                    IsKnowledgeOfWrongdoing = lp => lp is LoreenEg,
                }
            };

            var testResult = testCrime.IsValid(new LoreenEg());

            Assert.IsTrue(testResult);

            var testSubject = new SubstantialCapacity
            {
                IsMentalDefect           = lp => lp is LoreenEg,
                IsMostlyWrongnessOfAware = lp => !(lp is LoreenEg),
                IsMostlyVolitional       = lp => !(lp is LoreenEg)
            };

            testResult = testSubject.IsValid(new LoreenEg());
            Console.WriteLine(testSubject.ToString());
            Assert.IsTrue(testResult);
        }
コード例 #27
0
        public void HaroldStaplesvUs()
        {
            var testSubject = new Felony
            {
                ActusReus = new ActusReus
                {
                    IsAction    = lp => lp is HaroldStaples,
                    IsVoluntary = lp => lp is HaroldStaples
                },
                MensRea = null
            };

            //mens rea is not needed for Fed Statute intended to regulate
            //for example ownership of hand gernades was a crime without mens rea
            var testResult = testSubject.IsValid(new HaroldStaples());

            Console.WriteLine(testSubject.ToString());
            Assert.IsTrue(testResult);

            //for this case, gun ownership is not the same thing
            testSubject.MensRea = new GeneralIntent();
            testResult          = testSubject.IsValid(new HaroldStaples());
            Console.WriteLine(testSubject.ToString());
            Assert.IsFalse(testResult);
        }
コード例 #28
0
        public void ExampleIntoxication()
        {
            var testCrime = new Felony
            {
                ActusReus = new ActusReus
                {
                    IsAction    = lp => lp is DelilahEg,
                    IsVoluntary = lp => lp is DelilahEg,
                },
                MensRea = new GeneralIntent
                {
                    IsIntentOnWrongdoing = lp => lp is DelilahEg,
                }
            };

            var testResult = testCrime.IsValid(new DelilahEg());

            Assert.IsTrue(testResult);

            var testSubject = new Intoxication
            {
                //the ruffee is taken unknowingly
                IsInvoluntary = lp => lp is DelilahEg,
                IsIntoxicated = lp => lp is DelilahEg
            };

            testResult = testSubject.IsValid(new DelilahEg());
            Console.WriteLine(testSubject.ToString());
            Assert.IsTrue(testResult);
        }
コード例 #29
0
        public void ExampleKidnappingWithConsent()
        {
            var testCrime = new Felony
            {
                ActusReus = new Kidnapping
                {
                    IsConfineVictim = lp => lp is ThomasHitchhikerEg,
                    IsAsportation   = lp => lp is ThomasHitchhikerEg,
                    Consent         = new VictimConsent
                    {
                        IsCapableThereof    = lp => lp is ShawnaHitchinhikenEg,
                        IsApprovalExpressed = lp => false,
                    }
                },
                MensRea = new Purposely
                {
                    IsIntentOnWrongdoing    = lp => false,
                    IsKnowledgeOfWrongdoing = lp => false
                },
            };

            var testResult = testCrime.IsValid(new ThomasHitchhikerEg(), new ShawnaHitchinhikenEg());

            Console.WriteLine(testCrime.ToString());
            Assert.IsFalse(testResult);
        }
コード例 #30
0
        public void ExampleRenunciation()
        {
            var testCrime = new Felony
            {
                ActusReus = new Conspiracy
                {
                    IsAgreementToCommitCrime = lp => lp is ShellyDriverEg
                },
                MensRea = new SpecificIntent
                {
                    IsKnowledgeOfWrongdoing = lp => lp is ShellyDriverEg,
                    IsIntentOnWrongdoing    = lp => lp is ShellyDriverEg
                }
            };
            var testResult = testCrime.IsValid(new ShellyDriverEg());

            Assert.IsTrue(testResult);

            var testSubject = new Renunciation(testCrime)
            {
                IsCompletely          = lp => lp is ShellyDriverEg,
                IsResultCrimeThwarted = lp => lp is ShellyDriverEg,
                IsVoluntarily         = lp => lp is ShellyDriverEg
            };

            testResult = testSubject.IsValid(new ShellyDriverEg());
            Console.WriteLine(testSubject.ToString());
            Assert.IsTrue(testResult);
        }