public async Task CopyFromSourceToDestButFilesThere()
        {
            var loc1 = new DummyPlace("bogusLocal")
            {
                NeedsConfirmationCopy = false, CanSourceACopy = true
            };
            var loc2 = new DummyPlace("bogusNonLocal")
            {
                IsLocal = false, DataTier = 10
            };

            loc1.Add("ds1", "f1", "f2");
            loc1.BlockHasFileFor("f1");
            loc2.Add("ds1", "f1", "f2");
            DataSetManager.ResetDSM(loc1, loc2);
            var files = await DataSetManager.ListOfFilesInDataSetAsync("ds1");

            var localFiles = await DataSetManager.CopyFilesAsync(loc2, loc1, files);

            Assert.IsNotNull(localFiles);
            Assert.AreEqual(2, localFiles.Length);
            Assert.AreEqual(@"c:\junk\f1.txt", localFiles[0].OriginalString);
            Assert.AreEqual(@"c:\junk\f2.txt", localFiles[1].OriginalString);

            Assert.AreEqual(1, DummyPlace.CopyLogs.Count);
            Assert.AreEqual("bogusNonLocal -> *bogusLocal (1 files)", DummyPlace.CopyLogs[0]);
        }
        public async Task LocalPartialDatasetQueryForcesOtherQueries()
        {
            var p1 = new DummyPlace("bogusLocal")
            {
                { "ds1", "f1", "f2" }
            };

            p1.IsLocal  = true;
            p1.DataTier = 1;
            p1.NeedsConfirmationCopy = false;
            p1.CanSourceACopy        = true;
            p1.BlockHasFileFor("f2");
            var p2 = new DummyPlace("bogusRemote")
            {
                { "ds1", "f1", "f2" }
            };

            p2.IsLocal  = false;
            p2.DataTier = 10;
            DataSetManager.ResetDSM(p1, p2);

            await DataSetManager.MakeFilesLocalAsync(new Uri[] { new Uri("gridds://ds1/f2") });

            Assert.AreEqual(0, p2.GetListOfFilesForDatasetCalled);
            Assert.AreEqual(1, p2.HasFileCalled);
        }