Example #1
0
        public void Can_go_next()
        {
            IWorkItem item1      = new WorkItemMock(1);
            IWorkItem item2      = new WorkItemMock(2);
            IWorkItem item3      = new WorkItemMock(3);
            IWorkItem item4      = new WorkItemMock(4);
            var       repository = new ItemRepositoryMock(new List <IWorkItem> {
                item1, item2, item3, item4
            });

            IWorkList wl = new MemoryQueryWorkList(repository, "work list");

            wl.GoNext();
            Assert.AreEqual(item1, wl.Current);
            Assert.True(wl.Current?.Visited);

            wl.GoNext();
            Assert.AreEqual(item2, wl.Current);
            Assert.True(wl.Current?.Visited);

            wl.GoNext();
            Assert.AreEqual(item3, wl.Current);
            Assert.True(wl.Current?.Visited);

            wl.GoNext();
            Assert.AreEqual(item4, wl.Current);
            Assert.True(wl.Current?.Visited);

            // end of work list, current item is the same as before
            wl.GoNext();
            Assert.AreEqual(item4, wl.Current);
            Assert.True(wl.Current?.Visited);
        }
Example #2
0
        public void Cannot_go_first_again_if_first_item_is_set_done()
        {
            IWorkItem item1      = new WorkItemMock(1);
            IWorkItem item2      = new WorkItemMock(2);
            IWorkItem item3      = new WorkItemMock(3);
            IWorkItem item4      = new WorkItemMock(4);
            var       repository = new ItemRepositoryMock(new List <IWorkItem> {
                item1, item2, item3, item4
            });

            IWorkList wl = new MemoryQueryWorkList(repository, "work list");

            wl.GoFirst();
            Assert.AreEqual(item1, wl.Current);
            Assert.True(wl.Current?.Visited);

            wl.GoNext();
            Assert.AreEqual(item2, wl.Current);
            Assert.True(wl.Current?.Visited);

            wl.GoFirst();
            Assert.AreEqual(item1, wl.Current);
            Assert.True(wl.Current?.Visited);

            // set status done and update work list
            wl.Current.Status = WorkItemStatus.Done;
            wl.SetStatus(wl.Current, WorkItemStatus.Done);

            // second item is now the first in work list
            // because first item is set to done and therefor 'not visible'
            wl.GoFirst();
            Assert.AreEqual(item2, wl.Current);
            Assert.True(wl.Current?.Visited);
        }
Example #3
0
        public void Measure_performance_query_items_inMemory()
        {
            Polygon polygon = PolygonConstruction
                              .StartPolygon(0, 0)
                              .LineTo(0, 20)
                              .LineTo(20, 20)
                              .LineTo(20, 0)
                              .ClosePolygon();

            Polygon areaOfInterest = PolygonConstruction
                                     .StartPolygon(0, 0)
                                     .LineTo(0, 100)
                                     .LineTo(100, 100)
                                     .LineTo(100, 0)
                                     .ClosePolygon();

            var rowCount = 10000;

            TestUtils.InsertRows(_emptyIssuesGdb, _featureClassName, polygon, rowCount);

            try
            {
                var uri = new Uri(_emptyIssuesGdb, UriKind.Absolute);

                var geodatabase = new Geodatabase(new FileGeodatabaseConnectionPath(uri));
                var table       = geodatabase.OpenDataset <Table>(_featureClassName);
                Dictionary <Geodatabase, List <Table> > tablesByGeodatabase = new Dictionary <Geodatabase, List <Table> >
                {
                    { geodatabase, new List <Table> {
                          table
                      } }
                };

                IRepository         stateRepository = new XmlWorkItemStateRepository(@"C:\temp\states.xml", null, null);
                IWorkItemRepository repository      = new IssueItemRepository(tablesByGeodatabase, stateRepository);

                IWorkList workList = new MemoryQueryWorkList(repository, "work list");
                workList.AreaOfInterest = areaOfInterest;

                var filter = GdbQueryUtils.CreateSpatialFilter(areaOfInterest);

                var watch = new Stopwatch();
                watch.Start();

                IEnumerable <IWorkItem> items = workList.GetItems(filter);

                watch.Stop();
                Console.WriteLine($"{watch.ElapsedMilliseconds} ms");

                Assert.AreEqual(rowCount, items.Count());
            }
            finally
            {
                TestUtils.DeleteAllRows(_emptyIssuesGdb, _featureClassName);
            }
        }
Example #4
0
        public void Can_go_nearest()
        {
            MapPoint pt7  = PolygonConstruction.CreateMapPoint(7, 0, 0);
            MapPoint pt10 = PolygonConstruction.CreateMapPoint(10, 0, 0);
            MapPoint pt15 = PolygonConstruction.CreateMapPoint(15, 0, 0);

            var item7  = new WorkItemMock(7, pt7);
            var item10 = new WorkItemMock(10, pt10);
            var item15 = new WorkItemMock(15, pt15);

            var repository = new ItemRepositoryMock(new[] { item7, item10, item15 });

            IWorkList wl = new MemoryQueryWorkList(repository, nameof(Can_go_nearest));

            Geometry reference = PolygonConstruction.CreateMapPoint(11, 0, 0);

            // go to item10
            Assert.True(wl.CanGoNearest());
            wl.GoNearest(reference);
            Assert.AreEqual(item10, wl.Current);
            Assert.True(wl.Current?.Visited);

            // go to item7
            Assert.True(wl.CanGoNearest());
            Assert.NotNull(wl.Current);
            wl.GoNearest(wl.Current.Extent);
            Assert.AreEqual(item7, wl.Current);
            Assert.True(wl.Current?.Visited);

            // go to item15
            Assert.True(wl.CanGoNearest());
            Assert.NotNull(wl.Current);
            wl.GoNearest(wl.Current.Extent);
            Assert.AreEqual(item15, wl.Current);
            Assert.True(wl.Current?.Visited);

            // Now all are visited, what is the next item? None because there is no
            // more item *after* the last item15.
            // Now we need to go to item *before* the last one.
            Assert.False(wl.CanGoNearest());

            Assert.True(wl.CanGoPrevious());
            wl.GoPrevious();
            Assert.AreEqual(item10, wl.Current);

            // Now we can go nearest again which is item7 (nearst to item10)
            Assert.True(wl.CanGoNearest());
            Assert.NotNull(wl.Current);
            wl.GoNearest(wl.Current.Extent);
            Assert.AreEqual(item7, wl.Current);
            Assert.True(wl.Current?.Visited);
        }
Example #5
0
        public void Respect_AreaOfInterest_LearningTest()
        {
            Polygon polygon = PolygonConstruction
                              .StartPolygon(0, 0)
                              .LineTo(0, 20)
                              .LineTo(20, 20)
                              .LineTo(20, 0)
                              .ClosePolygon();

            Polygon areaOfInterest = PolygonConstruction
                                     .StartPolygon(100, 100)
                                     .LineTo(100, 120)
                                     .LineTo(120, 120)
                                     .LineTo(120, 100)
                                     .ClosePolygon();

            var rowCount = 4;

            TestUtils.InsertRows(_emptyIssuesGdb, _featureClassName, polygon, rowCount);

            try
            {
                var uri = new Uri(_emptyIssuesGdb, UriKind.Absolute);

                var geodatabase = new Geodatabase(new FileGeodatabaseConnectionPath(uri));

                var table = geodatabase.OpenDataset <Table>(_featureClassName);
                Dictionary <Geodatabase, List <Table> > tablesByGeodatabase = new Dictionary <Geodatabase, List <Table> >
                {
                    { geodatabase, new List <Table> {
                          table
                      } }
                };

                IRepository         stateRepository = new XmlWorkItemStateRepository(@"C:\temp\states.xml", null, null);
                IWorkItemRepository repository      = new IssueItemRepository(tablesByGeodatabase, stateRepository);

                IWorkList workList = new MemoryQueryWorkList(repository, "work list");
                workList.AreaOfInterest = areaOfInterest;

                IEnumerable <IWorkItem> items = workList.GetItems();

                Assert.AreEqual(0, items.Count());
            }
            finally
            {
                TestUtils.DeleteAllRows(_emptyIssuesGdb, _featureClassName);
            }
        }
Example #6
0
        public void Can_go_previous()
        {
            IWorkItem item1      = new WorkItemMock(1);
            IWorkItem item2      = new WorkItemMock(2);
            IWorkItem item3      = new WorkItemMock(3);
            IWorkItem item4      = new WorkItemMock(4);
            var       repository = new ItemRepositoryMock(new List <IWorkItem> {
                item1, item2, item3, item4
            });

            IWorkList wl = new MemoryQueryWorkList(repository, "work list");

            wl.GoNext();
            Assert.AreEqual(item1, wl.Current);
            Assert.True(wl.Current?.Visited);

            wl.GoNext();
            Assert.AreEqual(item2, wl.Current);
            Assert.True(wl.Current?.Visited);

            wl.GoNext();
            Assert.AreEqual(item3, wl.Current);
            Assert.True(wl.Current?.Visited);

            // go previous
            wl.GoPrevious();
            Assert.AreEqual(item2, wl.Current);
            Assert.True(wl.Current?.Visited);

            // go previous again
            wl.GoPrevious();
            Assert.AreEqual(item1, wl.Current);
            Assert.True(wl.Current?.Visited);

            wl.GoNext();
            Assert.AreEqual(item2, wl.Current);
            Assert.True(wl.Current?.Visited);
        }