public async Task PasteBarWindowViewModel_DeleteItem()
        {
            var dataService = ServiceLocator.GetService <DataService>();
            var dataObject  = new DataObject();

            dataObject.SetText("Lorem Ipsum");
            var entry = new ClipboardHookEventArgs(dataObject, false, DateTime.Now.Ticks);

            dataService.AddDataEntry(entry, new List <DataIdentifier>(), ServiceLocator.GetService <WindowsService>().GetForegroundWindow(), false);

            var viewmodel = new PasteBarWindowViewModel();

            Assert.IsFalse(viewmodel.NoPresentData);
            viewmodel.DeleteItemCommand.CheckBeginExecute(viewmodel.DataEntries.First());
            await Task.Delay(300);

            Assert.IsTrue(viewmodel.NoPresentData);
        }
        public void PasteBarWindowViewModel_NoPresentData()
        {
            var viewmodel = new PasteBarWindowViewModel();

            Assert.IsTrue(viewmodel.NoPresentData);
        }
        public async Task PasteBarWindowViewModel_Search()
        {
            var dataService = ServiceLocator.GetService <DataService>();
            var service     = ServiceLocator.GetService <ClipboardService>();

            var dataObject = new DataObject();

            dataObject.SetText("Lorem Ipsum");
            var entry = new ClipboardHookEventArgs(dataObject, false, DateTime.Now.Ticks);

            DispatcherUtil.ExecuteOnDispatcherThread(() =>
            {
                service.ClipboardHook_ClipboardChanged(null, entry);
                Task.Delay(300).Wait();
                DispatcherUtil.DoEvents();
            }, 100);

            dataObject = new DataObject();
            dataObject.SetText("Lorem ipsum");
            entry = new ClipboardHookEventArgs(dataObject, false, DateTime.Now.Ticks);
            DispatcherUtil.ExecuteOnDispatcherThread(() =>
            {
                service.ClipboardHook_ClipboardChanged(null, entry);
                Task.Delay(300).Wait();
                DispatcherUtil.DoEvents();
            }, 100);

            dataObject = new DataObject();
            dataObject.SetText("#ffffff");
            entry = new ClipboardHookEventArgs(dataObject, false, DateTime.Now.Ticks);
            DispatcherUtil.ExecuteOnDispatcherThread(() =>
            {
                service.ClipboardHook_ClipboardChanged(null, entry);
                Task.Delay(300).Wait();
                DispatcherUtil.DoEvents();
            }, 100);

            dataObject = new DataObject();
            dataObject.SetText("http://www.ipsum.com/");
            entry = new ClipboardHookEventArgs(dataObject, false, DateTime.Now.Ticks);
            DispatcherUtil.ExecuteOnDispatcherThread(() =>
            {
                service.ClipboardHook_ClipboardChanged(null, entry);
                Task.Delay(300).Wait();
                DispatcherUtil.DoEvents();
            }, 100);

            dataObject = new DataObject();
            dataObject.SetFileDropList(new StringCollection {
                "C:/file1.txt", "C:/folder/file2.txt", "C:/folder/file3.txt", "C:/folder/file4.txt"
            });
            entry = new ClipboardHookEventArgs(dataObject, false, DateTime.Now.Ticks);
            DispatcherUtil.ExecuteOnDispatcherThread(() =>
            {
                service.ClipboardHook_ClipboardChanged(null, entry);
                Task.Delay(300).Wait();
                DispatcherUtil.DoEvents();
            }, 100);

            var viewmodel = new PasteBarWindowViewModel();

            Assert.AreEqual(viewmodel.CollectionView.Cast <DataEntry>().Count(), 5);

            viewmodel.SearchQueryString = "ipsum";
            viewmodel.SearchCommand.CheckBeginExecute(true);
            viewmodel.IgnoreSearch = false;
            await Task.Delay(500);

            DispatcherUtil.DoEvents();

            Assert.AreEqual(viewmodel.CollectionView.Cast <DataEntry>().Count(), 3);

            viewmodel.SearchQueryString = "Ipsum";
            viewmodel.SearchCommand.CheckBeginExecute(true);
            viewmodel.IgnoreSearch = false;
            await Task.Delay(500);

            DispatcherUtil.DoEvents();

            Assert.AreEqual(viewmodel.CollectionView.Cast <DataEntry>().Count(), 1);

            viewmodel.SearchQueryString = "#fff";
            viewmodel.SearchCommand.CheckBeginExecute(true);
            viewmodel.IgnoreSearch = false;
            await Task.Delay(500);

            DispatcherUtil.DoEvents();

            Assert.AreEqual(viewmodel.CollectionView.Cast <DataEntry>().Count(), 1);

            viewmodel.SearchType        = SearchType.Link;
            viewmodel.SearchQueryString = "ipsum";
            viewmodel.SearchCommand.CheckBeginExecute(true);
            viewmodel.IgnoreSearch = false;
            await Task.Delay(500);

            DispatcherUtil.DoEvents();

            Assert.AreEqual(viewmodel.CollectionView.Cast <DataEntry>().Count(), 1);

            viewmodel.SearchType        = SearchType.File;
            viewmodel.SearchQueryString = "";
            viewmodel.SearchCommand.CheckBeginExecute(true);
            viewmodel.IgnoreSearch = false;
            await Task.Delay(500);

            DispatcherUtil.DoEvents();

            Assert.AreEqual(viewmodel.CollectionView.Cast <DataEntry>().Count(), 1);

            viewmodel.SearchType        = SearchType.All;
            viewmodel.SearchQueryString = "*.txt";
            viewmodel.SearchCommand.CheckBeginExecute(true);
            viewmodel.IgnoreSearch = false;
            await Task.Delay(500);

            DispatcherUtil.DoEvents();

            Assert.AreEqual(viewmodel.CollectionView.Cast <DataEntry>().Count(), 1);
        }