コード例 #1
0
ファイル: Builder.cs プロジェクト: TerrificNet/TerrificNet
 public Builder(Project project)
 {
     _project = project;
     _project.AddObserver(new BuildObserver(this));
     if (project == null)
         throw new ArgumentNullException(nameof(project));
 }
コード例 #2
0
        public void TestAddedProcessor_CalledWhenNewProjectItem()
        {
            var underTest = new Project();
            var itemKind = "test";
            var item = new ProjectItem("p1", itemKind);

            var processor = new Mock<IProjectObserver>();
            processor.Setup(s => s.NotifyItemAdded(underTest, item));

            underTest.AddObserver(processor.Object);

            underTest.AddItem(item);

            processor.VerifyAll();
        }
コード例 #3
0
        public void TestTouchProjectItem_CallsNotifiyItemChanged()
        {
            var underTest = new Project();
            var itemKind = "test";
            var item = new ProjectItem("p1", itemKind);
            underTest.AddItem(item);

            var processor = new Mock<IProjectObserver>();
            processor.Setup(s => s.NotifyItemChanged(underTest, item));

            underTest.AddObserver(processor.Object);

            underTest.Touch(item);

            processor.VerifyAll();
        }
コード例 #4
0
        //[Fact]
        public void Test_BuilderAddedLinks_CalledOnChange()
        {
            var kind = "test";
            var project = new Project();
            var observerMock = new Mock<IProjectObserver>();
            project.AddObserver(observerMock.Object);

            var p1 = AddAndCreateItem(kind, project, "p1");
            var p2 = AddAndCreateItem("related", project, "p2");

            var id1 = new ProjectItemIdentifier("created", "created");

            var task = new Mock<IBuildTask>();
            task.SetupGet(p => p.DependsOn).Returns(BuildQuery.SingleFromKind(kind).Or(BuildQuery.Exact(p2.Identifier)));

            var s1 = new BuildTaskResult(id1, NullProjectItemContent.Instance);

            SetupProceed(task, p1).Returns(new[] { s1 });

            var builder = new Builder(project);
            builder.AddTask(task.Object);

            project.Touch(p2);

            observerMock.Verify(s => s.NotifyItemChanged(project, It.Is<ProjectItem>(i => i.Identifier.Kind == kind)), Times.Once());
        }
コード例 #5
0
        public void TestChangePropagation()
        {
            var kind = "test";
            var projectItem = new ProjectItem("p1", kind);

            var project = new Project();
            var observerMock = new Mock<IProjectObserver>();
            project.AddObserver(observerMock.Object);

            var underTest = new Builder(project);

            var kind2 = "created";
            var kind3 = "created2";

            var buildTarget = CreateBuildTarget(kind, kind2);
            var buildTarget2 = CreateBuildTarget(kind2, kind3);

            underTest.AddTask(buildTarget);
            underTest.AddTask(buildTarget2);

            project.AddItem(projectItem);

            project.Touch(projectItem);

            observerMock.Verify(s => s.NotifyItemChanged(project, It.Is<ProjectItem>(i => i.Identifier.Kind == kind)), Times.Once());
            observerMock.Verify(s => s.NotifyItemChanged(project, It.Is<ProjectItem>(i => i.Identifier.Kind == kind2)), Times.Once());
            observerMock.Verify(s => s.NotifyItemChanged(project, It.Is<ProjectItem>(i => i.Identifier.Kind == kind3)), Times.Once());
        }