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