示例#1
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);
        }
示例#2
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);
        }