public void FindFirstCommonSuccessorTest()
        {
            var eventLog = EventLogExample.ComplexEventLogVanDerAalst();
            var field    = new Field {
                EventLog = eventLog
            };
            var miner = new HeuristicMiner(field);

            var event1 = eventLog.Cases[0].EventList[0];
            var event2 = eventLog.Cases[0].EventList[1];
            var event3 = eventLog.Cases[0].EventList[2];

            var eventNode1 = new EventNode(event1, 0.8, new List <EventNode> {
                new EventNode(event2, 0.8, new List <EventNode> {
                    new EventNode(event3, 0.8)
                })
            });
            var eventNode2 = new EventNode(event1, 0.8, new List <EventNode> {
                new EventNode(event2, 0.8, new List <EventNode> {
                    new EventNode(event3, 0.8)
                })
            });

            var actual = miner.FindFirstCommonSuccessor(new List <EventNode> {
                eventNode1, eventNode2
            });

            Assert.AreEqual("C", actual);
        }
        public void CreateDependencyGraphTest()
        {
            var field = new Field {
                EventLog = EventLogExample.ThreeCaseEventLog()
            };
            var miner     = new HeuristicMiner(field);
            var event1    = new Event("A");
            var event2    = new Event("B");
            var event3    = new Event("C");
            var eventList = new List <Event> {
                event1, event2, event3
            };
            var matrix = new[, ] {
                { 0.0, 0.8, 0.0 }, { 0.0, 0.0, 0.8 }, { 0.0, 0.0, 0.0 }
            };

            var actual = miner.CreateDependencyGraph(eventList, matrix, 0.5, 0.0, 0, 10);

            var expected = new EventNode(event1, 0.8, new List <EventNode> {
                new EventNode(event2, 0.8, new List <EventNode> {
                    new EventNode(event3, 0.8)
                })
            });

            Assert.AreEqual(expected.InnerEvent, actual.InnerEvent);
            Assert.AreEqual(expected.ListOfFollowers[0].InnerEvent, actual.ListOfFollowers[0].InnerEvent);
            Assert.AreEqual(expected.ListOfFollowers[0].ListOfFollowers[0].InnerEvent, actual.ListOfFollowers[0].ListOfFollowers[0].InnerEvent);
        }
        public void ReplayTestFail()
        {
            var petriNet = PetriNetExample.OneTwoThreeFourFive();
            var eventLog = EventLogExample.OneTwoThreeFourFiveWithErrors();
            var actual   = TokenReplayAlgorithm.Replay(petriNet, eventLog);

            Assert.AreEqual(3, actual.NumberOfCases);
            Assert.AreEqual(1, actual.SuccessfulReplays);
            Assert.AreEqual(1, actual.FailedCasesTransitionNotEnabled.Count);
            Assert.AreEqual(1, actual.FailedCasesTransitionNotFound.Count);
        }
        public void GetAdjacencyTest()
        {
            var field = new Field {
                EventLog = EventLogExample.ThreeCaseEventLog()
            };
            var miner  = new HeuristicMiner(field);
            var event1 = new Event("A");
            var event2 = new Event("B");

            var actual = miner.GetAdjacency(event1, event2, field.EventLog);

            Assert.AreEqual(0.5, actual);
        }
        public void CalculateStandardDeviationTest()
        {
            var field = new Field {
                EventLog = EventLogExample.ThreeCaseEventLog()
            };
            var miner  = new HeuristicMiner(field);
            var values = new List <double> {
                0.2, 0.4, 0.6, 0.8
            };

            var actual = miner.CalculateStandardDeviation(values);

            Assert.AreEqual(0.258, actual);
        }
        public void MineTest2()
        {
            MinerSettings.AddOrUpdateKey("AdjacencyThresholdSlider", 51);
            MinerSettings.AddOrUpdateKey("MaximumRecursionDepthSlider", 10);
            var field = new Field {
                EventLog = EventLogExample.ComplexEventLogVanDerAalst()
            };
            var      miner  = new HeuristicMiner(field);
            PetriNet actual = (PetriNet)miner.Mine();

            Assert.AreEqual(33, actual.Transitions.Count);
            Assert.AreEqual("D", actual.Transitions[2].Name);
            Assert.AreEqual(44, actual.Places.Count);
            //   Assert.AreEqual("End", actual.Places[].Name);
        }
        public void IsAndRelationTest()
        {
            var eventLog = EventLogExample.ComplexEventLogVanDerAalst();
            var field    = new Field {
                EventLog = eventLog
            };
            var miner  = new HeuristicMiner(field);
            var event1 = eventLog.Cases[0].EventList[0];
            var event2 = eventLog.Cases[0].EventList[1];
            var event3 = eventLog.Cases[0].EventList[2];

            var actual = miner.IsAndRelation(event1, event2, event3, eventLog);

            Assert.IsTrue(actual);
        }
        public void MineTest1()
        {
            MinerSettings.AddOrUpdateKey("AdjacencyThresholdSlider", 51);
            MinerSettings.AddOrUpdateKey("MaximumRecursionDepthSlider", 10);
            var field = new Field {
                EventLog = EventLogExample.ThreeCaseEventLog()
            };
            var      miner  = new HeuristicMiner(field);
            PetriNet actual = (PetriNet)miner.Mine();

            Assert.AreEqual(1, actual.Transitions.Count);
            Assert.AreEqual("A", actual.Transitions[0].Name);
            Assert.AreEqual(2, actual.Places.Count);
            Assert.AreEqual("End", actual.Places[1].Name);
        }
        public void CreateAdjacencyMatrixTest()
        {
            var field = new Field {
                EventLog = EventLogExample.ThreeCaseEventLog()
            };
            var miner  = new HeuristicMiner(field);
            var actual = miner.CreateAdjacencyMatrix(field);

            var expected = new[, ] {
                { 0.0, 0.5, 0.5, 0.0, 0.5 }, { -0.5, 0.0, 0.0, 0.5, 0.0 }, { -0.5, 0.0, 0.0, 0.5, 0.0 }, { 0.0, -0.5, -0.5, 0.0, -0.5 }, { -0.5, 0.0, 0.0, 0.5, 0.0 }
            };

            for (var i = 0; i < 5; i++)
            {
                for (var j = 0; j < 5; j++)
                {
                    Assert.AreEqual(expected[i, j], actual[i, j]);
                }
            }
        }