/// <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); }
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()); }
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); }
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); }