Beispiel #1
0
 private static async Task<MemoryStream> CopyToStream(BuildTaskResult source)
 {
     var memoryStream = new MemoryStream();
     var streamTask = source.Content.ReadAsync();
     if (streamTask != null)
     {
         using (var stream = await streamTask.ConfigureAwait(false))
         {
             await stream.CopyToAsync(memoryStream).ConfigureAwait(false);
         }
     }
     return memoryStream;
 }
Beispiel #2
0
        public async Task TestBuilderSingleItemOnAddWithBuildInBackgroundOption()
        {
            var kind = "test";
            var projectItem = new ProjectItem("p1", kind);

            var project = new Project();

            var target = new Mock<IBuildTask>();
            const string targetName = "test";
            target.SetupGet(t => t.Name).Returns(targetName);
            target.SetupGet(t => t.DependsOn).Returns(BuildQuery.SingleFromKind(kind));
            target.SetupGet(t => t.Options).Returns(BuildOptions.BuildInBackground);

            var id = new ProjectItemIdentifier("gugus", "created");
            const string contentString = "test";
            var source = new BuildTaskResult(id, new ProjectItemContentFromAction(() => GenerateStreamFromString(contentString)));
            SetupProceed(target, projectItem).Returns(new [] { source });

            var underTest = new Builder(project);
            underTest.AddTask(target.Object);

            project.AddItem(new ProjectItem("p2"));
            project.AddItem(projectItem);

            var generatedItem = project.GetItemById(id);
            Assert.NotNull(generatedItem);
            Assert.Equal(id, generatedItem.Identifier);

            var stream = await generatedItem.OpenRead();
            //Second Stream
            var stream2 = await generatedItem.OpenRead();

            AssertStream(stream, contentString);
            AssertStream(stream2, contentString);

            var links = projectItem.GetLinkedItems();
            Assert.NotNull(links);

            var linkList = links.ToList();
            Assert.Equal(1, linkList.Count);

            Assert.Equal(generatedItem, linkList[0].ProjectItem);
            Assert.Equal(targetName, linkList[0].Description.Name);
        }
Beispiel #3
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());
        }
Beispiel #4
0
        public void Test_Many_RemoveItemTouchesGeneratedItems()
        {
            var kind = "test";
            var project = new Project();

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

            var task = new Mock<IBuildTask>();
            task.SetupGet(p => p.DependsOn).Returns(BuildQuery.AllFromKind(kind));

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

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

            task.Setup(p => p.Proceed(It.Is<IEnumerable<ProjectItem>>(list => list.SequenceEqual(new [] {p1, p2}))))
                .Returns(new [] { s1 });

            task.Setup(p => p.Proceed(It.Is<IEnumerable<ProjectItem>>(list => list.SequenceEqual(new [] { p2 }))))
                .Returns(new[] { s1 });

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

            project.RemoveItem(p1);

            task.VerifyAll();
        }
Beispiel #5
0
        public void Test_OneToMany_RemoveItemRemovesGeneratedItems()
        {
            var kind = "test";
            var project = new Project();

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

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

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

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

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

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

            project.RemoveItem(p1);

            var result = project.GetItems();
            Assert.NotNull(result);
            Assert.Empty(result);
        }
Beispiel #6
0
        public void TestOneToMany()
        {
            var kind = "test";
            var project = new Project();

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

            var task = new Mock<IBuildTask>();
            task.SetupGet(p => p.DependsOn).Returns(BuildQuery.SingleFromKind(kind));
            var id1 = new ProjectItemIdentifier("created", "created");
            var id2 = new ProjectItemIdentifier("created2", "created");

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

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

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

            var result = project.GetItemById(id1);
            Assert.NotNull(result);

            var linkedItems = result.GetLinkedItems();
            Assert.NotNull(linkedItems);

            var linkedItemsList = linkedItems.ToList();
            Assert.Equal(1, linkedItemsList.Count);

            var otherItem = linkedItemsList[0].ProjectItem.GetLinkedItems();
            Assert.NotNull(otherItem);

            var otherItemList = otherItem.ToList();
            Assert.Equal(2, otherItemList.Count);
        }
Beispiel #7
0
 private static async Task<ProjectItem> BuildInMemoryItem(BuildTaskResult source)
 {
     var memoryStream = await CopyToStream(source);
     return new InMemoryProjectItem(source.Identifier, memoryStream.ToArray());
 }