public void ShouldNotSetEvidencesOnEmptyQuery()
        {
            var query = Fix.CreateDefaultQuery();

            _uut.Query(query);

            var actual = _network.GetAllNodes().All(id => !_network.IsEvidence(id));

            Assert.IsTrue(actual);
        }
        public void ShouldRemoveStoredCallsFromPreviousQueries()
        {
            // place a query that includes a call...
            var query = Fix.CreateDefaultQuery();

            query.sites.Add(CallSites.CreateReceiverCallSite("LType.Execute()LVoid;"));
            _uut.Query(query);

            // ...then fall back to a default case
            ShouldProduceOrderedProposals();
        }
        public void ShouldSetEvidenceOnCallSite()
        {
            var query = Fix.CreateDefaultQuery();

            query.sites.Add(CallSites.CreateReceiverCallSite("LType.Init()LVoid;"));

            _uut.Query(query);

            var actual = _network.GetEvidenceId(SmilePBNRecommender.ConvertToLegalSmileName("C_LType.Init()LVoid;"));

            Assert.AreEqual(Constants.StateTrue, actual);
        }
        public void ShouldNotProduceAnyProposalsIfAllMethodsAreAlreadyCalled()
        {
            var query = Fix.CreateDefaultQuery();

            query.sites.Add(CallSites.CreateReceiverCallSite("LType.Init()LVoid;"));
            query.sites.Add(CallSites.CreateReceiverCallSite("LType.Execute()LVoid;"));
            query.sites.Add(CallSites.CreateReceiverCallSite("LType.Finish()LVoid;"));

            var expected = new CoReProposal[] { };
            var actual   = _uut.Query(query);

            CollectionAssert.AreEquivalent(expected, actual);
        }
        public void ShouldSetEvidenceOnDefinitionSite()
        {
            var query = Fix.CreateDefaultQuery();

            query.definition = DefinitionSites.CreateDefinitionByReturn("LType.Create()LType;");

            _uut.Query(query);

            var expected = SmilePBNRecommender.ConvertToLegalSmileName("RETURN:LType.Create()LType;");
            var actual   = _network.GetEvidenceId(Constants.DefinitionTitle);

            Assert.AreEqual(expected, actual);
        }
        public void ShouldSetEvidenceOnMethodContext()
        {
            var query = Fix.CreateDefaultQuery();

            query.methodCtx = new CoReMethodName("LType.M()LVoid;");

            _uut.Query(query);

            var expected = SmilePBNRecommender.ConvertToLegalSmileName("LType.M()LVoid;");
            var actual   = _network.GetEvidenceId(Constants.MethodContextTitle);

            Assert.AreEqual(expected, actual);
        }
        public void ShouldNotSetEvidencesOnNotMatchingQuery()
        {
            var query = Fix.CreateDefaultQuery();

            query.definition = DefinitionSites.CreateDefinitionByReturn("LStrangeType.M()LType;");
            query.sites.Add(CallSites.CreateReceiverCallSite("LStrangeType.M()LType;"));

            _uut.Query(query);

            var actual = _network.GetAllNodes().All(id => !_network.IsEvidence(id));

            Assert.IsTrue(actual);
        }
        public void ShouldProduceOrderedProposals()
        {
            var query = Fix.CreateDefaultQuery();

            var expected = new[]
            {
                new CoReProposal(new CoReMethodName("LType.Execute()LVoid;"), 0.815),
                new CoReProposal(new CoReMethodName("LType.Finish()LVoid;"), 0.445),
                new CoReProposal(new CoReMethodName("LType.Init()LVoid;"), 0.37)
            };

            var actual = _uut.Query(query);

            CollectionAssert.AreEquivalent(expected, actual);
        }
        public void ShouldProduceAdaptedPropertiesIfCallSiteIsSet()
        {
            var query = Fix.CreateDefaultQuery();

            query.sites.Add(CallSites.CreateReceiverCallSite("LType.Init()LVoid;"));

            var expected = new[]
            {
                new CoReProposal(new CoReMethodName("LType.Execute()LVoid;"), 0.682),
                new CoReProposal(new CoReMethodName("LType.Finish()LVoid;"), 0.164)
            };

            var actual = _uut.Query(query);

            CollectionAssert.AreEquivalent(expected, actual);
        }
        public void ShouldProduceAllProposalsIfNoMethodIsAlreadyCalled()
        {
            var query = Fix.CreateDefaultQuery();

            var expected = new[]
            {
                new CoReMethodName("LType.Init()LVoid;"),
                new CoReMethodName("LType.Execute()LVoid;"),
                new CoReMethodName("LType.Finish()LVoid;")
            };

            var proposals = _uut.Query(query);
            var actual    = proposals.Select(p => p.Name);

            CollectionAssert.AreEquivalent(expected, actual);
        }
        public void ShouldProduceAdaptedPropertiesIfContextsAreSet()
        {
            var query = Fix.CreateDefaultQuery();

            query.classCtx   = new CoReTypeName("LType");
            query.methodCtx  = new CoReMethodName("LType.M()LVoid;");
            query.definition = DefinitionSites.CreateDefinitionByField("LType.object;LType");

            var expected = new[]
            {
                new CoReProposal(new CoReMethodName("LType.Execute()LVoid;"), 0.803),
                new CoReProposal(new CoReMethodName("LType.Init()LVoid;"), 0.453),
                new CoReProposal(new CoReMethodName("LType.Finish()LVoid;"), 0.37)
            };

            var actual = _uut.Query(query);

            CollectionAssert.AreEquivalent(expected, actual);
        }