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