Exemple #1
0
        public override bool IsValid(params ILegalPerson[] persons)
        {
            var defendant = this.Defendant(persons);

            if (defendant == null)
            {
                return(false);
            }
            var title = defendant.GetLegalPersonTypeName();

            //threats for what is honestly owed is not illegal
            if (SubjectProperty?.IsEntitledTo(defendant) ?? false)
            {
                AddReasonEntry($"{title} {defendant.Name}, is entitled to " +
                               $"{SubjectProperty?.GetType().Name} " +
                               $"named '{SubjectProperty?.Name}'");
                return(false);
            }

            if (!base.IsValid(persons))
            {
                return(false);
            }

            var threatening = Threatening ?? new ByThreatening();

            if (!threatening.IsValid(persons))
            {
                AddReasonEntryRange(threatening.GetReasonEntries());
                return(false);
            }

            return(true);
        }
Exemple #2
0
 public SentimentAlert(SubjectProperty subjectProperty, Operator @operator, int value, Subject subject)
 {
     SubjectProperty = subjectProperty;
     Operator        = @operator;
     this.Value      = value;
     Subject         = subject;
 }
        public void ObservableTest()
        {
            var property = new SubjectProperty <int>();
            var observer = new TestObserver <int>();

            property.Subscribe(observer);

            Assert.AreEqual(0, observer.OnNextCount);
            property.Value = 10;

            Assert.AreEqual(1, observer.OnNextCount);
            Assert.AreEqual(10, observer.OnNextLastValue);

            property.Value = 20;
            Assert.AreEqual(2, observer.OnNextCount);
            Assert.AreEqual(20, observer.OnNextLastValue);

            var observer2 = new TestObserver <int>();

            property.Subscribe(observer2);
            Assert.AreEqual(0, observer2.OnNextCount);

            property.Value = 30;
            Assert.AreEqual(1, observer2.OnNextCount);
            Assert.AreEqual(30, observer2.OnNextLastValue);
            Assert.AreEqual(3, observer.OnNextCount);
            Assert.AreEqual(30, observer.OnNextLastValue);
        }
Exemple #4
0
        /// <summary>
        /// <![CDATA[ The property must be taken from the victim's person or presensece - meaning it was under the victims control. ]]>
        /// </summary>
        /// <param name="persons"></param>
        /// <returns></returns>
        protected virtual bool FromVictimPersonOrPresence(ILegalPerson[] persons)
        {
            if (persons == null || !persons.Any())
            {
                return(false);
            }

            var victims = persons.Victims().ToList();

            if (!victims.Any())
            {
                AddReasonEntry(
                    $"there are not victims among persons {string.Join(",", LegalPerson.GetNames(persons))}");
                return(false);
            }

            var possess = persons.FirstOrDefault(p => SubjectProperty.IsInPossessionOf(p));

            foreach (var victim in victims)
            {
                if (possess == null || possess.Equals(victim) || ReferenceEquals(possess, victim))
                {
                    return(true);
                }

                AddReasonEntry($"{victim.GetLegalPersonTypeName()} {victim.Name}, " +
                               $"is not in possession of {possess.GetType().Name} '{possess.Name}'");
            }

            return(false);
        }
        public override bool IsValid(params ILegalPerson[] persons)
        {
            var defendant = this.Defendant(persons);

            if (defendant == null)
            {
                return(false);
            }
            var title = defendant.GetLegalPersonTypeName();

            if (SubjectProperty == null)
            {
                AddReasonEntry($"{title} {defendant.Name}, {nameof(SubjectProperty)} is null");
                return(false);
            }

            if (SubjectProperty.IsEntitledTo(defendant))
            {
                AddReasonEntry($"{title} {defendant.Name}, is the owner of property {SubjectProperty}");
                return(false);
            }

            if (!WithoutConsent(persons))
            {
                return(false);
            }

            if (!PossessOrEntitle(persons))
            {
                return(false);
            }

            return(true);
        }
Exemple #6
0
        public override bool IsValid(params ILegalPerson[] persons)
        {
            var defendant = this.Defendant(persons);

            if (defendant == null)
            {
                return(false);
            }
            var title = defendant.GetLegalPersonTypeName();

            if (!WithoutConsent(persons))
            {
                return(false);
            }

            if (PropertyOwnerIsSubjectPerson(persons))
            {
                return(false);
            }

            if (!IsCauseOfDamage(defendant))
            {
                AddReasonEntry($"{title} {defendant.Name}, {nameof(IsCauseOfDamage)} is false");
                return(false);
            }

            if (!IsDamaged(SubjectProperty))
            {
                AddReasonEntry($"property {SubjectProperty?.GetType().Name}, '{SubjectProperty?.Name}', " +
                               $"{nameof(IsDamaged)} is false");
                return(false);
            }

            return(true);
        }
        public void ObserverTest()
        {
            var property = new SubjectProperty <int>();

            Assert.AreEqual(0, property.Value);

            Observable.Return(1).Subscribe(property);
            Assert.AreEqual(1, property.Value);

            Observable.Return(2).Subscribe(property);
            Assert.AreEqual(2, property.Value);
        }
Exemple #8
0
        /// <summary>
        /// Tests that <see cref="Consent"/> was not given by <see cref="SubjectProperty"/> owner
        /// </summary>
        /// <param name="persons"></param>
        /// <returns></returns>
        protected virtual bool WithoutConsent(ILegalPerson[] persons)
        {
            //is all the dependencies present
            if (SubjectProperty?.IsEntitledTo == null || Consent == null ||
                persons == null ||
                !persons.Any())
            {
                return(true);
            }

            //if all the people are licensed or invited then consent is implied by the use of type (label)
            if (persons.Where(v => !SubjectProperty.IsEntitledTo(v)).All(p => p is ILicensee))
            {
                AddReasonEntry($"all non-owner persons implement {nameof(ILicensee)} interface type");
                return(false);
            }

            //did the caller pass in any IVictim types
            var victims = persons.Victims().ToList();

            if (!victims.Any())
            {
                return(true);
            }

            //is any of our victims also the owner of the property
            var ownerVictims = victims.Where(v => SubjectProperty.IsEntitledTo(v)).ToList();

            if (!ownerVictims.Any())
            {
                AddReasonEntry($"of {nameof(IVictim)}s named " +
                               $"{string.Join(",", victims.Select(v => v.Name))}, " +
                               $"none are found {nameof(SubjectProperty.IsEntitledTo)} as true");
                return(true);
            }

            foreach (var ownerVictim in ownerVictims)
            {
                var validConsent = Consent.IsValid(ownerVictim);
                AddReasonEntryRange(Consent.GetReasonEntries());
                //did the owner victim in fact give consent
                if (validConsent != ConsentExpectedAs)
                {
                    AddReasonEntry($"owner-{ownerVictim.GetLegalPersonTypeName()} {ownerVictim.Name}, " +
                                   $"{nameof(Consent)} {nameof(IsValid)} " +
                                   $"is {validConsent}, it was expected to be {ConsentExpectedAs} " +
                                   $"for property {SubjectProperty.Name}");
                    return(false);
                }
            }

            return(true);
        }
        public void HasValueTest()
        {
            var property1 = new SubjectProperty <int>();

            Assert.AreEqual(false, property1.HasValue);

            property1.Value = 1;

            Assert.AreEqual(true, property1.HasValue);

            var property2 = new SubjectProperty <int>();

            Assert.AreEqual(false, property2.HasValue);

            property2.OnNext(2);

            Assert.AreEqual(true, property2.HasValue);
        }
Exemple #10
0
        public override bool IsValid(params ILegalPerson[] persons)
        {
            if (!base.IsValid(persons))
            {
                return(false);
            }

            var defendant = this.Defendant(persons);

            if (defendant == null)
            {
                return(false);
            }
            var title = defendant.GetLegalPersonTypeName();
            var ifi   = IsFalseImpression(defendant);
            var ipot  = IsPreventionOfTruth(defendant);
            var iftc  = IsFailureToCorrect(defendant);
            var iuli  = IsUndisclosedLegalImpediment(defendant);

            if (new[] { ifi, ipot, iftc, iuli }.All(p => p == false))
            {
                AddReasonEntry($"{title} {defendant.Name}, {nameof(IsFalseImpression)} is {ifi}");
                AddReasonEntry($"{title} {defendant.Name}, {nameof(IsPreventionOfTruth)} is {ipot}");
                AddReasonEntry($"{title} {defendant.Name}, {nameof(IsFailureToCorrect)} is {iftc}");
                AddReasonEntry($"{title} {defendant.Name}, {nameof(IsUndisclosedLegalImpediment)} is {iuli}");
                return(false);
            }

            var isPossess = SubjectProperty.IsInPossessionOf(defendant);
            var isTitle   = SubjectProperty.IsEntitledTo(defendant);

            IsLarcenyByTrick = isPossess && !isTitle;
            IsFalsePretense  = isPossess && isTitle;

            if (IsLarcenyByTrick)
            {
                AddReasonEntry($"{title} {defendant.Name}, {nameof(IsLarcenyByTrick)} is true");
            }
            if (IsFalsePretense)
            {
                AddReasonEntry($"{title} {defendant.Name}, {nameof(IsFalsePretense)} is true");
            }
            return(true);
        }
Exemple #11
0
        public override bool IsValid(params ILegalPerson[] persons)
        {
            var lessor = this.Lessor(persons);
            var lessee = this.Lessee(persons);

            if (lessor == null || lessee == null)
            {
                return(false);
            }

            var orTitle = lessor.GetLegalPersonTypeName();
            var eeTitle = lessee.GetLegalPersonTypeName();

            //landlord has no right to evict
            if (!IsLeaseExpired && !IsBreachLeaseCondition(lessee) && !IsVacated(lessee))
            {
                AddReasonEntry($"{orTitle} {lessor.Name} and {eeTitle} {lessee.Name}, {nameof(IsLeaseExpired)}, " +
                               $"{nameof(IsBreachLeaseCondition)} and {nameof(IsVacated)} are all false");
                return(false);
            }

            //lessor isn't the landlord
            if (!SubjectProperty.IsEntitledTo(lessor))
            {
                AddReasonEntry($"{orTitle} {lessor.Name}, {nameof(SubjectProperty)} {nameof(SubjectProperty.IsEntitledTo)} is false");
                return(false);
            }

            var isHome = IsResidenceHome(SubjectProperty);

            var isPeaceful = !isHome?IsPeaceableSelfHelpReentry(lessor) : IsJudicialProcessReentry(lessor);

            if (!isPeaceful)
            {
                var kindOfReentry = !isHome?nameof(IsPeaceableSelfHelpReentry) : nameof(IsJudicialProcessReentry);

                AddReasonEntry($"{orTitle} {lessor.Name}, {kindOfReentry} is false");
                return(false);
            }


            return(base.IsValid(persons));
        }
Exemple #12
0
        protected virtual bool InPossessionOfDefendant(ILegalPerson[] persons)
        {
            var defendant = this.Defendant(persons);

            if (defendant == null)
            {
                return(false);
            }
            var title   = defendant.GetLegalPersonTypeName();
            var possess = persons.FirstOrDefault(p => SubjectProperty.IsInPossessionOf(p));

            if (!defendant.Equals(possess) && !ReferenceEquals(defendant, possess))
            {
                AddReasonEntry($"{title} {defendant.Name}, does not " +
                               $"possess {SubjectProperty?.GetType().Name} " +
                               $"named {SubjectProperty?.Name} - it is possessed " +
                               $"by {possess?.Name}");
                return(false);
            }

            return(true);
        }
Exemple #13
0
 set => SetValue(SubjectProperty, value);
        public override bool IsValid(params ILegalPerson[] persons)
        {
            if (SubjectProperty?.IsEntitledTo == null)
            {
                AddReasonEntry($"{nameof(SubjectProperty)} {nameof(SubjectProperty.IsEntitledTo)} is unassigned");
                return(false);
            }

            var subj = GetSubjectPerson(persons);

            if (subj == null)
            {
                AddReasonEntry($"{nameof(GetSubjectPerson)} returned nothing");
                return(false);
            }
            var title = subj.GetLegalPersonTypeName();

            if (SubjectProperty.IsEntitledTo != null && !SubjectProperty.IsEntitledTo(subj))
            {
                AddReasonEntry($"property named '{SubjectProperty.Name}' is " +
                               $"not {nameof(SubjectProperty.IsEntitledTo)} {title} {subj.Name} ");
                return(false);
            }

            if (!IsLocatedWhereChildrenLikelyAre(SubjectProperty))
            {
                AddReasonEntry($"property '{SubjectProperty.Name}', {nameof(IsLocatedWhereChildrenLikelyAre)} is false");
                return(false);
            }

            if (!IsDangerToChildren(SubjectProperty))
            {
                AddReasonEntry($"property '{SubjectProperty.Name}', {nameof(IsDangerToChildren)} is false");
                return(false);
            }

            if (!IsDangerOutweighUse(SubjectProperty))
            {
                AddReasonEntry($"property '{SubjectProperty.Name}', {nameof(IsDangerOutweighUse)} is false");
                return(false);
            }

            if (!IsArtificialCondition(SubjectProperty))
            {
                AddReasonEntry($"property '{SubjectProperty.Name}', {nameof(IsArtificialCondition)} is false");
                return(false);
            }

            if (IsChildObliviousToDanger != null)
            {
                var children = persons.Where(p => p is IChild).Cast <IChild>().ToList();
                foreach (var child in children)
                {
                    if (!IsChildObliviousToDanger(child))
                    {
                        AddReasonEntry($"{child.GetLegalPersonTypeName()} {child.Name}, {nameof(IsChildObliviousToDanger)} is false");
                        return(false);
                    }
                }
            }

            if (!IsOwnerFailMitigateDanger(subj))
            {
                AddReasonEntry($"{title} {subj.Name}, {nameof(IsOwnerFailMitigateDanger)} is false");
                return(false);
            }

            return(true);
        }