コード例 #1
0
        /// <summary>
        /// Tests if probable cause is both valid and is of considered an emergency exception
        /// </summary>
        protected internal virtual bool IsProbableCauseExigentCircumstances(ILegalPerson[] persons)
        {
            var police = this.LawEnforcement(persons, GetLawEnforcement);

            if (police == null)
            {
                return(false);
            }

            var policeTitle = police.GetLegalPersonTypeName();

            ProbableCause = ProbableCause ?? Warrant?.ProbableCause;
            if (ProbableCause == null)
            {
                AddReasonEntry($"{nameof(ProbableCause)} is unassigned");
                return(false);
            }

            var isExigentCircumstances = ProbableCause is ExigentCircumstances;

            if (isExigentCircumstances && ProbableCause.IsValid(persons))
            {
                AddReasonEntry($"{policeTitle} {police.Name}, {nameof(ProbableCause)} " +
                               $"is type {nameof(ExigentCircumstances)}");
                AddReasonEntryRange(ProbableCause.GetReasonEntries());
                return(true);
            }

            return(false);
        }
コード例 #2
0
        public void TestProbableCauseIsValid00()
        {
            var testSubject = new ProbableCause
            {
                IsFactsConcludeToCriminalActivity = lp => lp is ExampleLawEnforcement
            };

            var testResult = testSubject.IsValid(new ExampleSuspect(), new ExampleLawEnforcement());

            Assert.IsTrue(testResult);
            Console.WriteLine(testSubject.ToString());
        }
コード例 #3
0
ファイル: WarrantBase.cs プロジェクト: nofuture-git/31g
        public override bool IsValid(params ILegalPerson[] persons)
        {
            if (ProbableCause == null)
            {
                AddReasonEntry($"{nameof(ProbableCause)} is unassigned");
                return(false);
            }

            if (!ProbableCause.IsValid(persons))
            {
                AddReasonEntry($"{nameof(ProbableCause)} {nameof(IsValid)} is false");
                AddReasonEntryRange(ProbableCause.GetReasonEntries());
                return(false);
            }

            var magistrate = GetIssuerOfWarrant(persons);

            if (magistrate == null)
            {
                AddReasonEntry($"{nameof(GetIssuerOfWarrant)} returned nothing");
                return(false);
            }

            var magistrateTitle = magistrate.GetAllKindsOfNames();

            var isCourtOfficial = magistrate is ICourtOfficial;

            if (!isCourtOfficial)
            {
                AddReasonEntry($"{magistrateTitle} {magistrate.Name}, is not of " +
                               $"type {nameof(ICourtOfficial)}");
                return(false);
            }

            if (!IsIssuerNeutralAndDetached(magistrate))
            {
                AddReasonEntry($"{magistrateTitle} {magistrate.Name}, " +
                               $"{nameof(IsIssuerNeutralAndDetached)} is false");
                return(false);
            }

            if (!IsIssuerCapableDetermineProbableCause(magistrate))
            {
                AddReasonEntry($"{magistrateTitle} {magistrate.Name}, " +
                               $"{nameof(IsIssuerCapableDetermineProbableCause)} is false");
                return(false);
            }

            return(true);
        }
コード例 #4
0
        public void TestProbableCauseIsValid02()
        {
            var testSubject = new ProbableCause
            {
                GetInformationSource = lps => lps.FirstOrDefault(lp => lp is IInformant),
                IsFactsConcludeToCriminalActivity = lp => lp is ExampleLawEnforcement
            };

            var testResult = testSubject.IsValid(
                new ExampleSuspect(),
                new ExampleInformant {
                IsInformationSufficientlyReliable = true, IsPersonSufficientlyCredible = false
            },
                new ExampleLawEnforcement());

            Console.WriteLine(testSubject.ToString());
            Assert.IsFalse(testResult);
        }