Example #1
0
        public void Expect_non_frequent_candidates_to_be_pruned()
        {
            IFact <string> factA;
            IFact <string> factB;
            IFact <string> factC;
            IFact <string> factD;
            IFact <string> factE;


            //Given
            var candidateGenerator = new SelfJoinAndPruneGenerator <string>();

            factA = new MockSimpleFact("A");
            factB = new MockSimpleFact("B");
            factC = new MockSimpleFact("C");
            factD = new MockSimpleFact("D");
            factE = new MockSimpleFact("E");

            var abc = new ItemSet <IFact <string> >(new List <IFact <string> >()
            {
                factA, factB, factC
            });
            var abd = new ItemSet <IFact <string> >(new List <IFact <string> >()
            {
                factA, factB, factD
            });
            var acd = new ItemSet <IFact <string> >(new List <IFact <string> >()
            {
                factA, factC, factD
            });
            var ace = new ItemSet <IFact <string> >(new List <IFact <string> >()
            {
                factA, factC, factE
            });
            var bcd = new ItemSet <IFact <string> >(new List <IFact <string> >()
            {
                factB, factC, factD
            });

            List <ItemSet <IFact <string> > > frequentThreeItemSets = new List <ItemSet <IFact <string> > >()
            {
                abc,
                abd,
                acd,
                ace,
                bcd
            };

            //When
            var result = candidateGenerator.GenerateCandidateItemSets(frequentThreeItemSets);

            //Then
            var abcd = new ItemSet <IFact <string> >(new List <IFact <string> >()
            {
                factA, factB, factC, factD
            });

            Assert.Equal(1, result.Count);
            Assert.True(result.Any(itemSet => itemSet.Items.SequenceEqual(abcd.Items)));
        }
        public void No_duplicate_candidate_rules_should_be_returned_for_maximal_freq_itemsets_that_overlap()
        {
            //Given
            IFact <string> factA;
            IFact <string> factB;
            IFact <string> factC;
            IFact <string> factD;

            factA = new MockSimpleFact("A");
            factB = new MockSimpleFact("B");
            factC = new MockSimpleFact("C");
            factD = new MockSimpleFact("D");

            var candidateRuleGenerator = new CandidateRuleGenerator <string>();

            var freqItemSets = new List <ItemSet <IFact <string> > >()
            {
                new ItemSet <IFact <string> >(factA),
                new ItemSet <IFact <string> >(factB),
                new ItemSet <IFact <string> >(factC),
                new ItemSet <IFact <string> >(factD),
                new ItemSet <IFact <string> >(new List <IFact <string> >()
                {
                    factA, factB
                }),
                new ItemSet <IFact <string> >(new List <IFact <string> >()
                {
                    factA, factC
                }),
                new ItemSet <IFact <string> >(new List <IFact <string> >()
                {
                    factB, factC
                }),
                new ItemSet <IFact <string> >(new List <IFact <string> >()
                {
                    factB, factD
                }),
                new ItemSet <IFact <string> >(new List <IFact <string> >()
                {
                    factC, factD
                }),
                new ItemSet <IFact <string> >(new List <IFact <string> >()
                {
                    factA, factB, factC
                }),
                new ItemSet <IFact <string> >(new List <IFact <string> >()
                {
                    factB, factC, factD
                })
            };

            //When
            var result = candidateRuleGenerator.GenerateCandidateRules(freqItemSets);

            //Then
            var rule = new AssociationRule <string>(new ItemSet <IFact <string> >(factB), new ItemSet <IFact <string> >(factC));

            Assert.Equal(1, result.FindAll(x => x.Equals(rule)).Count);
        }
Example #3
0
        public void When_CompareTo_is_called_with_a_different_fact_it_should_give_the_opposite_result_to_the_equivalent_call_on_the_other_fact()
        {
            //Given
            var fact      = new MockSimpleFact("tf235");
            var otherFact = new OtherMockFact("King's Gambit");

            Assert.Equal(fact.CompareTo(otherFact), -otherFact.CompareTo(fact));
        }
Example #4
0
        public void When_CompareTo_is_called_with_two_facts_of_same_type_it_should_give_the_opposite_result_to_the_equivalent_call_on_the_other_fact()
        {
            //Given
            var fact      = new MockSimpleFact("tf235");
            var otherFact = new MockSimpleFact("tailuge");

            Assert.Equal(fact.CompareTo(otherFact), -otherFact.CompareTo(fact));
        }
Example #5
0
        public void Expect_correct_set_to_be_generated()
        {
            IFact <string> factA = new MockSimpleFact("A");
            IFact <string> factB = new MockSimpleFact("B");

            //Given
            var candidateGenerator = new SelfJoinAndPruneGenerator <string>();

            var a = new ItemSet <IFact <string> >(factA);
            var b = new ItemSet <IFact <string> >(factB);

            //When
            var result = candidateGenerator.GenerateCandidateItemSets(new List <ItemSet <IFact <string> > >()
            {
                a, b
            });

            //Then
            Assert.Equal(1, result.Count);
        }