Esempio n. 1
0
        public void MakeEvaluation()
        {
            // Set up data for test.
            var wf = Cache.ServiceLocator.GetInstance <IWfiWordformFactory>().Create();
            var wa = Cache.ServiceLocator.GetInstance <IWfiAnalysisFactory>().Create();

            wf.AnalysesOC.Add(wa);
            var parserAgent = Cache.LanguageProject.DefaultParserAgent;

            Assert.AreEqual(Opinions.noopinion, wa.GetAgentOpinion(parserAgent), "Wrong initial opinion in new analysis.");

            parserAgent.SetEvaluation(wa, Opinions.approves);
            Assert.AreEqual(Opinions.approves, wa.GetAgentOpinion(parserAgent), "Evaluation not set.");

            parserAgent.SetEvaluation(wa, Opinions.disapproves);
            Cache.ActionHandlerAccessor.BreakUndoTask("undo", "redo");             // force PropChanges
            Assert.AreEqual(Opinions.disapproves, wa.GetAgentOpinion(parserAgent), "Evaluation not set.");
            Assert.AreEqual(1, wa.EvaluationsRC.Count, "added new evaluation but did not remove old one");

            parserAgent.SetEvaluation(wa, Opinions.noopinion);
            Assert.AreEqual(Opinions.noopinion, wa.GetAgentOpinion(parserAgent), "Evaluation not cleared.");
            Assert.AreEqual(0, wa.EvaluationsRC.Count, "somehow got to noopinion but still has an evaluation");

            var humanAgent           = Cache.LangProject.DefaultUserAgent;
            var watcherHumanApproved = new PropChangedVerifier(Cache, WfiWordformTags.kClassId, "HumanApprovedAnalyses");
            var watcherHumanNoOp     = new PropChangedVerifier(Cache, WfiWordformTags.kClassId, "HumanNoOpinionParses");

            humanAgent.SetEvaluation(wa, Opinions.approves);
            Cache.ActionHandlerAccessor.BreakUndoTask("undo", "redo");             // force PropChanges
            Assert.AreEqual(Opinions.approves, wa.GetAgentOpinion(humanAgent), "Evaluation not set.");
            // Check that we got notifications for the two virtual properties affected.
            // Currently we will get one for the other, too, but that's not something we want to clamp.
            Assert.That(watcherHumanApproved.Hvo, Is.EqualTo(wa.Owner.Hvo));
            Assert.That(watcherHumanNoOp.Hvo, Is.EqualTo(wa.Owner.Hvo));

            var watcherHumanDisApproved = new PropChangedVerifier(Cache, WfiWordformTags.kClassId, "HumanDisapprovedParses");

            watcherHumanApproved.Reset();
            watcherHumanNoOp.Reset();
            humanAgent.SetEvaluation(wa, Opinions.disapproves);
            Cache.ActionHandlerAccessor.BreakUndoTask("undo", "redo");             // force PropChanges
            Assert.AreEqual(Opinions.disapproves, wa.GetAgentOpinion(humanAgent), "Evaluation not set.");
            Assert.AreEqual(1, wa.EvaluationsRC.Count, "added new evaluation but did not remove old one");
            Assert.That(watcherHumanApproved.Hvo, Is.EqualTo(wa.Owner.Hvo));
            Assert.That(watcherHumanDisApproved.Hvo, Is.EqualTo(wa.Owner.Hvo));

            watcherHumanApproved.Reset();
            watcherHumanNoOp.Reset();
            watcherHumanDisApproved.Reset();
            humanAgent.SetEvaluation(wa, Opinions.noopinion);
            Cache.ActionHandlerAccessor.BreakUndoTask("undo", "redo");             // force PropChanges
            Assert.AreEqual(Opinions.noopinion, wa.GetAgentOpinion(humanAgent), "Evaluation not cleared.");
            Assert.AreEqual(0, wa.EvaluationsRC.Count, "somehow got to noopinion but still has an evaluation");
            Assert.That(watcherHumanDisApproved.Hvo, Is.EqualTo(wa.Owner.Hvo));
            Assert.That(watcherHumanNoOp.Hvo, Is.EqualTo(wa.Owner.Hvo));
        }
Esempio n. 2
0
		public void MakeEvaluation()
		{
			// Set up data for test.
			var wf = Cache.ServiceLocator.GetInstance<IWfiWordformFactory>().Create();
			var wa = Cache.ServiceLocator.GetInstance<IWfiAnalysisFactory>().Create();
			wf.AnalysesOC.Add(wa);
			var parserAgent = Cache.LanguageProject.DefaultParserAgent;
			Assert.AreEqual(Opinions.noopinion, wa.GetAgentOpinion(parserAgent), "Wrong initial opinion in new analysis.");

			parserAgent.SetEvaluation(wa, Opinions.approves);
			Assert.AreEqual(Opinions.approves, wa.GetAgentOpinion(parserAgent), "Evaluation not set.");

			parserAgent.SetEvaluation(wa, Opinions.disapproves);
			Cache.ActionHandlerAccessor.BreakUndoTask("undo", "redo"); // force PropChanges
			Assert.AreEqual(Opinions.disapproves, wa.GetAgentOpinion(parserAgent), "Evaluation not set.");
			Assert.AreEqual(1, wa.EvaluationsRC.Count, "added new evaluation but did not remove old one");

			parserAgent.SetEvaluation(wa, Opinions.noopinion);
			Assert.AreEqual(Opinions.noopinion, wa.GetAgentOpinion(parserAgent), "Evaluation not cleared.");
			Assert.AreEqual(0, wa.EvaluationsRC.Count, "somehow got to noopinion but still has an evaluation");

			var humanAgent = Cache.LangProject.DefaultUserAgent;
			var watcherHumanApproved = new PropChangedVerifier(Cache, WfiWordformTags.kClassId, "HumanApprovedAnalyses");
			var watcherHumanNoOp = new PropChangedVerifier(Cache, WfiWordformTags.kClassId, "HumanNoOpinionParses");
			humanAgent.SetEvaluation(wa, Opinions.approves);
			Cache.ActionHandlerAccessor.BreakUndoTask("undo", "redo"); // force PropChanges
			Assert.AreEqual(Opinions.approves, wa.GetAgentOpinion(humanAgent), "Evaluation not set.");
			// Check that we got notifications for the two virtual properties affected.
			// Currently we will get one for the other, too, but that's not something we want to clamp.
			Assert.That(watcherHumanApproved.Hvo, Is.EqualTo(wa.Owner.Hvo));
			Assert.That(watcherHumanNoOp.Hvo, Is.EqualTo(wa.Owner.Hvo));

			var watcherHumanDisApproved = new PropChangedVerifier(Cache, WfiWordformTags.kClassId, "HumanDisapprovedParses");
			watcherHumanApproved.Reset();
			watcherHumanNoOp.Reset();
			humanAgent.SetEvaluation(wa, Opinions.disapproves);
			Cache.ActionHandlerAccessor.BreakUndoTask("undo", "redo"); // force PropChanges
			Assert.AreEqual(Opinions.disapproves, wa.GetAgentOpinion(humanAgent), "Evaluation not set.");
			Assert.AreEqual(1, wa.EvaluationsRC.Count, "added new evaluation but did not remove old one");
			Assert.That(watcherHumanApproved.Hvo, Is.EqualTo(wa.Owner.Hvo));
			Assert.That(watcherHumanDisApproved.Hvo, Is.EqualTo(wa.Owner.Hvo));

			watcherHumanApproved.Reset();
			watcherHumanNoOp.Reset();
			watcherHumanDisApproved.Reset();
			humanAgent.SetEvaluation(wa, Opinions.noopinion);
			Cache.ActionHandlerAccessor.BreakUndoTask("undo", "redo"); // force PropChanges
			Assert.AreEqual(Opinions.noopinion, wa.GetAgentOpinion(humanAgent), "Evaluation not cleared.");
			Assert.AreEqual(0, wa.EvaluationsRC.Count, "somehow got to noopinion but still has an evaluation");
			Assert.That(watcherHumanDisApproved.Hvo, Is.EqualTo(wa.Owner.Hvo));
			Assert.That(watcherHumanNoOp.Hvo, Is.EqualTo(wa.Owner.Hvo));
		}