public void MetadataReturnsCorrectDocuments() { // Given List<object> values = new List<object>(); Engine engine = new Engine(); engine.CleanOutputFolderOnExecute = false; engine.Trace.AddListener(new TestTraceListener()); Core.Modules.Control.Documents documents = new Core.Modules.Control.Documents( new Dictionary<string, object> { { "Foo", "a" } }, new Dictionary<string, object> { { "Foo", "b" } }, new Dictionary<string, object> { { "Foo", "c" } }); Execute gatherData = new Execute((d, c) => { values.Add(d["Foo"]); return null; }); engine.Pipelines.Add(documents, gatherData); // When engine.Execute(); // Then Assert.AreEqual(3, values.Count); CollectionAssert.AreEqual(new[] { "a", "b", "c" }, values); }
public void GroupBySetsCorrectMetadata() { // Given List<int> groupKey = new List<int>(); Engine engine = new Engine(); engine.CleanOutputFolderOnExecute = false; engine.Trace.AddListener(new TestTraceListener()); CountModule count = new CountModule("A") { AdditionalOutputs = 7 }; GroupBy groupBy = new GroupBy((d, c) => d.Get<int>("A") % 3, count); Execute gatherData = new Execute((d, c) => { groupKey.Add(d.Get<int>(Keys.GroupKey)); return null; }); engine.Pipelines.Add(groupBy, gatherData); // When engine.Execute(); // Then CollectionAssert.AreEquivalent(new[] { 0, 1, 2 }, groupKey); }
public void SetsDocumentsInMetadata() { // Given List<IList<string>> content = new List<IList<string>>(); Engine engine = new Engine(); CountModule count = new CountModule("A") { AdditionalOutputs = 7 }; GroupBy groupBy = new GroupBy((d, c) => d.Get<int>("A")%3, count); OrderBy orderBy = new OrderBy((d, c) => d.Get<int>(Keys.GroupKey)); Execute gatherData = new Execute((d, c) => { content.Add(d.Get<IList<IDocument>>(Keys.GroupDocuments).Select(x => x.Content).ToList()); return null; }); engine.Pipelines.Add(groupBy, orderBy, gatherData); // When engine.Execute(); // Then Assert.AreEqual(3, content.Count); CollectionAssert.AreEquivalent(new[] {"3", "6"}, content[0]); CollectionAssert.AreEquivalent(new[] {"1", "4", "7"}, content[1]); CollectionAssert.AreEquivalent(new[] {"2", "5", "8"}, content[2]); }
public void ContentAndMetadataReturnsCorrectDocuments() { // Given List<string> content = new List<string>(); List<object> values = new List<object>(); Engine engine = new Engine(); engine.CleanOutputPathOnExecute = false; Core.Modules.Control.Documents documents = new Core.Modules.Control.Documents( Tuple.Create("A", new Dictionary<string, object> {{"Foo", "a"}}.AsEnumerable()), Tuple.Create("B", new Dictionary<string, object> {{"Foo", "b"}}.AsEnumerable()), Tuple.Create("C", new Dictionary<string, object> {{"Foo", "c"}}.AsEnumerable())); Execute gatherData = new Execute((d, c) => { content.Add(d.Content); values.Add(d["Foo"]); return null; }); engine.Pipelines.Add(documents, gatherData); // When engine.Execute(); // Then Assert.AreEqual(3, content.Count); Assert.AreEqual(3, values.Count); CollectionAssert.AreEqual(new[] {"A", "B", "C"}, content); CollectionAssert.AreEqual(new[] {"a", "b", "c"}, values); }
public void PaginateSetsCorrectMetadata() { // Given List<int> currentPage = new List<int>(); List<int> totalPages = new List<int>(); List<bool> hasNextPage = new List<bool>(); List<bool> hasPreviousPage = new List<bool>(); Engine engine = new Engine(); engine.Trace.AddListener(new TestTraceListener()); CountModule count = new CountModule("A") { AdditionalOutputs = 7 }; Paginate paginate = new Paginate(3, count); Execute gatherData = new Execute((d, c) => { currentPage.Add(d.Get<int>(Keys.CurrentPage)); totalPages.Add(d.Get<int>(Keys.TotalPages)); hasNextPage.Add(d.Get<bool>(Keys.HasNextPage)); hasPreviousPage.Add(d.Get<bool>(Keys.HasPreviousPage)); return null; }); engine.Pipelines.Add(paginate, gatherData); // When engine.Execute(); // Then CollectionAssert.AreEqual(new[] { 1, 2, 3 }, currentPage); CollectionAssert.AreEqual(new[] { 3, 3, 3 }, totalPages); CollectionAssert.AreEqual(new[] { true, true, false }, hasNextPage); CollectionAssert.AreEqual(new[] { false, true, true }, hasPreviousPage); }
public void PaginateSetsDocumentsInMetadata() { // Given List<IList<string>> content = new List<IList<string>>(); Engine engine = new Engine(); engine.Trace.AddListener(new TestTraceListener()); CountModule count = new CountModule("A") { AdditionalOutputs = 7 }; Paginate paginate = new Paginate(3, count); Execute gatherData = new Execute((d, c) => { content.Add(d.Get<IList<IDocument>>(Keys.PageDocuments).Select(x => x.Content).ToList()); return null; }); engine.Pipelines.Add(paginate, gatherData); // When engine.Execute(); // Then Assert.AreEqual(3, content.Count); CollectionAssert.AreEqual(new[] { "1", "2", "3" }, content[0]); CollectionAssert.AreEqual(new[] { "4", "5", "6" }, content[1]); CollectionAssert.AreEqual(new[] { "7", "8" }, content[2]); }
public void OrderByOrdersDescendingThenByInDescendingOrder() { // Given List<string> content = new List<string>(); Engine engine = new Engine(); engine.CleanOutputPathOnExecute = false; CountModule count = new CountModule("A") { AdditionalOutputs = 4 }; CountModule count2 = new CountModule("B") { AdditionalOutputs = 1 }; OrderBy orderBy = new OrderBy((d, c) => d.Get<int>("A")) .Descending() .ThenBy((d, c) => d.Get<int>("B")) .Descending(); Execute gatherData = new Execute((d, c) => { content.Add(d.Content); return null; }); engine.Pipelines.Add(count, count2, orderBy, gatherData); // When engine.Execute(); // Then Assert.AreEqual(10, content.Count); // (4+1) * (21+1) CollectionAssert.AreEqual(new[] {"510", "59", "48", "47", "36", "35", "24", "23", "12", "11"}, content); }
public void OrderByOrdersInDescendingOrder() { // Given List<string> content = new List<string>(); Engine engine = new Engine(); engine.CleanOutputFolderOnExecute = false; engine.Trace.AddListener(new TestTraceListener()); CountModule count = new CountModule("A") { AdditionalOutputs = 4 }; CountModule count2 = new CountModule("A") { AdditionalOutputs = 2 }; Concat concat = new Concat(count2); OrderBy orderBy = new OrderBy((d, c) => d.Get<int>("A")).Descending(); Execute gatherData = new Execute((d, c) => { content.Add(d.Content); return null; }); engine.Pipelines.Add(count, concat, orderBy, gatherData); // When engine.Execute(); // Then Assert.AreEqual(8, content.Count); CollectionAssert.AreEqual(new[] { "5", "4", "3", "3", "2", "2", "1", "1" }, content); }
public void ExecuteDoesNotThrowForNullResultWithContextConfig() { // Given Engine engine = new Engine(); Execute execute = new Execute(c => null); engine.Pipelines.Add(execute); // When engine.Execute(); // Then }
public void ExecuteDoesNotThrowForNullResultWithDocumentConfig() { // Given Engine engine = new Engine(); engine.Trace.AddListener(new TestTraceListener()); Execute execute = new Execute((d, c) => null); engine.Pipelines.Add(execute); // When engine.Execute(); // Then }
public void ExecuteDoesNotThrowForNullResultWithDocumentConfig() { // Given Engine engine = new Engine(); engine.CleanOutputPathOnExecute = false; Execute execute = new Execute((d, c) => null); engine.Pipelines.Add(execute); // When engine.Execute(); // Then }
public void ExecuteDoesNotRequireReturnValueForContextConfig() { // Given int a = 0; Engine engine = new Engine(); Execute execute = new Execute(c => { a = a + 1; }); engine.Pipelines.Add(execute); // When engine.Execute(); // Then }
public void ExecuteDoesNotThrowForNullResultWithContextConfig() { // Given Engine engine = new Engine(); engine.CleanOutputFolderOnExecute = false; engine.Trace.AddListener(new TestTraceListener()); Execute execute = new Execute((c) => null); engine.Pipelines.Add(execute); // When engine.Execute(); // Then }
public void ExecuteReturnsDocumentForSingleResultDocumentFromContextConfig() { // Given Engine engine = new Engine(); IDocument document = Substitute.For<IDocument>(); Execute execute = new Execute(c => document); engine.Pipelines.Add("Test", execute); // When engine.Execute(); // Then CollectionAssert.AreEquivalent(new[] { document }, engine.Documents["Test"]); }
public void ExecuteDoesNotRequireReturnValueForDocumentConfig() { // Given int a = 0; Engine engine = new Engine(); engine.CleanOutputPathOnExecute = false; Execute execute = new Execute((d, c) => { a = a + 1; }); engine.Pipelines.Add(execute); // When engine.Execute(); // Then }
public void ContentReturnsCorrectDocuments() { // Given List<string> content = new List<string>(); Engine engine = new Engine(); Core.Modules.Control.Documents documents = new Core.Modules.Control.Documents("A", "B", "C", "D"); Execute gatherData = new Execute((d, c) => { content.Add(d.Content); return null; }); engine.Pipelines.Add(documents, gatherData); // When engine.Execute(); // Then Assert.AreEqual(4, content.Count); CollectionAssert.AreEqual(new[] {"A", "B", "C", "D"}, content); }
public void SetsCorrectMetadata() { // Given List<int> groupKey = new List<int>(); Engine engine = new Engine(); CountModule count = new CountModule("A") { AdditionalOutputs = 7 }; GroupByMany groupByMany = new GroupByMany((d, c) => new [] { d.Get<int>("A")%3, 3 }, count); Execute gatherData = new Execute((d, c) => { groupKey.Add(d.Get<int>(Keys.GroupKey)); return d; }); engine.Pipelines.Add(groupByMany, gatherData); // When engine.Execute(); // Then CollectionAssert.AreEquivalent(new[] {0, 1, 2, 3}, groupKey); }
public void GroupByMetadataKey() { // Given List<int> groupKey = new List<int>(); Engine engine = new Engine(); CountModule count = new CountModule("A") { AdditionalOutputs = 7 }; Core.Modules.Metadata.Meta meta = new Core.Modules.Metadata.Meta("GroupMetadata", (d, c) => d.Get<int>("A") % 3); GroupBy groupBy = new GroupBy("GroupMetadata", count, meta); Execute gatherData = new Execute((d, c) => { groupKey.Add(d.Get<int>(Keys.GroupKey)); return null; }); engine.Pipelines.Add(groupBy, gatherData); // When engine.Execute(); // Then CollectionAssert.AreEquivalent(new[] { 0, 1, 2 }, groupKey); }
public void ExcludesDocumentsThatDontMatchPredicate() { // Given List<int> groupKey = new List<int>(); Engine engine = new Engine(); CountModule count = new CountModule("A") { AdditionalOutputs = 7 }; GroupBy groupBy = new GroupBy((d, c) => d.Get<int>("A") % 3, count) .Where((d, c) => d.Get<int>("A") % 3 != 0); Execute gatherData = new Execute((d, c) => { groupKey.Add(d.Get<int>(Keys.GroupKey)); return null; }); engine.Pipelines.Add(groupBy, gatherData); // When engine.Execute(); // Then CollectionAssert.AreEquivalent(new[] { 1, 2 }, groupKey); }
public void GroupByMetadataKeyWithMissingMetadata() { // Given List<int> groupKey = new List<int>(); Engine engine = new Engine(); CountModule count = new CountModule("A") { AdditionalOutputs = 7 }; Execute meta = new Execute((d, c) => { int groupMetadata = d.Get<int>("A") % 3; return groupMetadata == 0 ? d : c.GetDocument(d, new MetadataItems { {"GroupMetadata", groupMetadata} }); }); GroupBy groupBy = new GroupBy("GroupMetadata", count, meta); Execute gatherData = new Execute((d, c) => { groupKey.Add(d.Get<int>(Keys.GroupKey)); return null; }); engine.Pipelines.Add(groupBy, gatherData); // When engine.Execute(); // Then CollectionAssert.AreEquivalent(new[] { 1, 2 }, groupKey); }
public void ExcludesDocumentsThatFailPredicate() { // Given List<IList<string>> content = new List<IList<string>>(); Engine engine = new Engine(); CountModule count = new CountModule("A") { AdditionalOutputs = 7 }; Paginate paginate = new Paginate(3, count).Where((doc, ctx) => doc.Content != "5"); Execute gatherData = new Execute((d, c) => { content.Add(d.Get<IList<IDocument>>(Keys.PageDocuments).Select(x => x.Content).ToList()); return null; }); engine.Pipelines.Add(paginate, gatherData); // When engine.Execute(); // Then Assert.AreEqual(3, content.Count); CollectionAssert.AreEqual(new[] { "1", "2", "3" }, content[0]); CollectionAssert.AreEqual(new[] { "4", "6", "7" }, content[1]); CollectionAssert.AreEqual(new[] { "8" }, content[2]); }