public void NotifyPropertyChangedIsImplementedCorrectly()
        {
            // Arrange
            var resolver = new Mock <ITypeResolver>();

            resolver.Setup(r => r.Resolve(typeof(ImageEntry))).Returns(new ImageEntry(new Uri("http://example.com"), false));

            var vm     = new ImageDialogViewModel();
            var tester = new PropertyChangedTester(vm, false, resolver.Object);

            // Act
            tester.Test();

            // Assert
            tester.Verify();
        }
        public void ImagesCanBeSet()
        {
            // Arrange
            var vm = new ImageDialogViewModel();

            var urls = new[]
            {
                new Uri("http://example.com/1.png"),
                new Uri("http://example.com/2.png"),
                new Uri("http://example.com/3.png")
            };

            // Act
            vm.SetImages(urls);

            // Assert
            Assert.AreEqual(3, vm.Images.Count);
        }
        public void OpenCommandExecutesUrl()
        {
            // Arrange
            var procStarter = new Mock <IProcessStarter>();

            procStarter.Setup(c => c.Start("https://example.com/link.url")).Verifiable();

            var vm = new ImageDialogViewModel
            {
                ProcessStarter = procStarter.Object,
                SelectedImage  = new ImageEntry(new Uri("https://example.com/link.url"), false, "ImageTitle")
            };

            // Act
            vm.OpenImageCommand.Execute(null);

            // Assert
            procStarter.Verify(c => c.Start("https://example.com/link.url"), Times.Once());
        }
        public void CopyCommandWritesToClipboard()
        {
            // Arrange
            var clipboard = new Mock <IClipboard>();

            clipboard.Setup(c => c.SetText("https://example.com/link.url")).Verifiable();

            var vm = new ImageDialogViewModel
            {
                Clipboard     = clipboard.Object,
                SelectedImage = new ImageEntry(new Uri("https://example.com/link.url"), false, "ImageTitle")
            };

            // Act
            vm.CopyToClipboardCommand.Execute(null);

            // Assert
            clipboard.Verify(c => c.SetText("https://example.com/link.url"), Times.Once());
        }