public void Test_Convert_Dispose() { // モック var resourceUnicodeMock = new Mock <IDisposable>(); var resourceAnsiMock = new Mock <IDisposable>(); var dataMock = new TestDataObject(); dataMock.Setup_GetDataPresent("UniformResourceLocatorW", () => true); dataMock.Setup_GetDataPresent("UniformResourceLocator", () => true); dataMock.Setup_GetData("UniformResourceLocatorW", () => resourceUnicodeMock.Object); dataMock.Setup_GetData("UniformResourceLocator", () => resourceAnsiMock.Object); // テスト用のイベントパラメータ生成 var args = TestActivator.CreateDragEventArgs(dataMock.Object); // 変換テスト var target = new DragEventArgsToUrlConverter(); target.ConvertToUri = false; target.Convert(args, null, null, null) .Should().BeNull(); resourceUnicodeMock.Verify(m => m.Dispose(), Times.Once()); resourceAnsiMock.Verify(m => m.Dispose(), Times.Once()); }
public void Test_Convert_ToString_PriorityUnicode() { // ドロップテストデータ var urlUnicode = "https://www.google.com/unicode"; var urlAnsi = "https://www.google.com/ansi"; // モック var dataMock = new TestDataObject(); dataMock.Setup_GetDataPresent("UniformResourceLocatorW", () => true); dataMock.Setup_GetDataPresent("UniformResourceLocator", () => true); dataMock.Setup_GetData("UniformResourceLocatorW", () => new MemoryStream(Encoding.Unicode.GetBytes(urlUnicode))); dataMock.Setup_GetData("UniformResourceLocator", () => new MemoryStream(Encoding.ASCII.GetBytes(urlAnsi))); // テスト用のイベントパラメータ生成 var args = TestActivator.CreateDragEventArgs(dataMock.Object); // 変換テスト var target = new DragEventArgsToUrlConverter(); target.ConvertToUri = false; target.Convert(args, null, null, null) .Should().BeOfType <string>() .Which .Should().Be(urlUnicode); }
public void Test_Convert_ToString_Fallback2() { // ドロップテストデータ var url = "https://www.google.com"; // モック var resourceMock = new Mock <IDisposable>(); resourceMock.Setup(m => m.Dispose()).Throws(new Exception()); var dataMock = new TestDataObject(); dataMock.Setup_GetDataPresent("UniformResourceLocatorW", () => true); dataMock.Setup_GetDataPresent("UniformResourceLocator", () => true); dataMock.Setup_GetData("UniformResourceLocatorW", () => resourceMock.Object); dataMock.Setup_GetData("UniformResourceLocator", () => new MemoryStream(Encoding.ASCII.GetBytes(url))); // テスト用のイベントパラメータ生成 var args = TestActivator.CreateDragEventArgs(dataMock.Object); // 変換テスト var target = new DragEventArgsToUrlConverter(); target.ConvertToUri = false; target.Convert(args, null, null, null) .Should().BeOfType <string>() .Which .Should().Be(url); }
public void Test_DragOver_Reject() { // テスト対象のアクションを呼び出すためのトリガ作成 var element = new UIElement(); var action = new TestAction(); // テスト対象の準備 var trigger = new DragDropTerigger(); trigger.AcceptDropFormats = new[] { DataFormats.FileDrop }; trigger.AcceptDropEffect = DragDropEffects.Move; // 要素にアタッチ trigger.Attach(element); trigger.Actions.Add(action); // ドロップデータのモック var dataMock = new TestDataObject(); dataMock.Setup_GetDataPresent(DataFormats.FileDrop, () => false); // テスト用のイベントパラメータ生成 var args = TestActivator.CreateDragEventArgs(dataMock.Object, allowedEffects: DragDropEffects.All); args.RoutedEvent = UIElement.DragOverEvent; args.Effects = DragDropEffects.Copy; // イベントを発生させる element.RaiseEvent(args); // イベント処理結果検証 args.Effects.Should().Be(DragDropEffects.None); }
public void Test_Convert_ToUri() { // ドロップテストデータ var paths = new string[] { @"c:\directory\file.ext", @"d:\path\to\data" }; // モック var dataMock = new TestDataObject(); dataMock.Setup_GetDataPresent(DataFormats.FileDrop, () => true); dataMock.Setup_GetData(DataFormats.FileDrop, () => paths); // テスト用のイベントパラメータ生成 var args = TestActivator.CreateDragEventArgs(dataMock.Object); // テストデータを期待値の型に変換しておく var expects = paths.Select(p => new Uri(p)).ToArray(); // 変換テスト var target = new DragEventArgsToFilePathConverter(); target.ConvertToUri = true; target.Convert(args, null, null, null) .Should().BeOfType <Uri[]>() .Which .Should().Equal(expects); }
public void Test_Convert_ToUri_FromAnsi() { // ドロップテストデータ var url = "https://www.google.com"; // モック var dataMock = new TestDataObject(); dataMock.Setup_GetDataPresent("UniformResourceLocator", () => true); dataMock.Setup_GetData("UniformResourceLocator", () => new MemoryStream(Encoding.ASCII.GetBytes(url))); // テスト用のイベントパラメータ生成 var args = TestActivator.CreateDragEventArgs(dataMock.Object); // テストデータを期待値の型に変換しておく var expects = new Uri(url); // 変換テスト var target = new DragEventArgsToUrlConverter(); target.ConvertToUri = true; target.Convert(args, null, null, null) .Should().BeOfType <Uri>() .Which .Should().Be(expects); }
public void Test_AcceptDropFormats_UnrelatedConverter() { // テスト対象のアクションを呼び出すためのトリガ作成 var element = new UIElement(); var action = new TestAction(); // 専用インターフェースを実装していない(ただAcceptFormatsプロパティがあるだけの)コンバータ var converter = new TestHasFormatsValueConverter(); converter.AcceptFormats = new[] { "Conv1", "Conv2", }; // テスト対象の準備 var trigger = new DragDropTerigger(); trigger.AcceptDropEffect = DragDropEffects.Move; trigger.ParameterConverter = converter; // 要素にアタッチ trigger.Attach(element); trigger.Actions.Add(action); // ドロップデータのモック var dataMock = new TestDataObject(); // テスト用のイベントパラメータ生成 var args = TestActivator.CreateDragEventArgs(dataMock.Object, allowedEffects: DragDropEffects.All); args.RoutedEvent = UIElement.DragOverEvent; // 専用インターフェスでなければコンパータでの指定はできない。プロパティ指定もしていなければ何でも受け付ける状態。 { // イベントデータ設定 dataMock.Setup_GetDataPresent("Conv1", () => false); dataMock.Setup_GetDataPresent("Conv2", () => false); args.Effects = DragDropEffects.None; // イベントを発生させる args.Handled = false; element.RaiseEvent(args); // イベント処理結果検証 args.Effects.Should().Be(DragDropEffects.Move); } }
public void Test_Convert_NotFileDrop2() { // モック var dataMock = new TestDataObject(); dataMock.Setup_GetDataPresent(DataFormats.FileDrop, () => true); dataMock.Setup_GetData(DataFormats.FileDrop, () => null); // テスト用のイベントパラメータ生成 var args = TestActivator.CreateDragEventArgs(dataMock.Object); // 変換テスト var target = new DragEventArgsToFilePathConverter(); target.ConvertToUri = false; target.Convert(args, null, null, null) .Should().BeNull(); }
public void Test_Convert_NotUrlDrop2() { // モック var dataMock = new TestDataObject(); dataMock.Setup_GetDataPresent("UniformResourceLocatorW", () => true); dataMock.Setup_GetData("UniformResourceLocatorW", () => null); // テスト用のイベントパラメータ生成 var args = TestActivator.CreateDragEventArgs(dataMock.Object); // 変換テスト var target = new DragEventArgsToUrlConverter(); target.ConvertToUri = false; target.Convert(args, null, null, null) .Should().BeNull(); }
public void Test_Convert_ToUri_NotConvert() { // ドロップテストデータ var url = "::::::::::::"; // モック var dataMock = new TestDataObject(); dataMock.Setup_GetDataPresent("UniformResourceLocatorW", () => true); dataMock.Setup_GetData("UniformResourceLocatorW", () => new MemoryStream(Encoding.Unicode.GetBytes(url))); // テスト用のイベントパラメータ生成 var args = TestActivator.CreateDragEventArgs(dataMock.Object); // 変換テスト var target = new DragEventArgsToUrlConverter(); target.ConvertToUri = true; target.Convert(args, null, null, null) .Should().BeNull(); }
public void Test_Convert_ToString_Empty() { // ドロップテストデータ var paths = new string[] { }; // モック var dataMock = new TestDataObject(); dataMock.Setup_GetDataPresent(DataFormats.FileDrop, () => true); dataMock.Setup_GetData(DataFormats.FileDrop, () => paths); // テスト用のイベントパラメータ生成 var args = TestActivator.CreateDragEventArgs(dataMock.Object); // 変換テスト var target = new DragEventArgsToFilePathConverter(); target.ConvertToUri = false; target.Convert(args, null, null, null) .Should().BeOfType <string[]>() .Which .Should().BeEmpty(); }
public void Test_Convert_ByTargetType_NotUri() { // ドロップテストデータ var url = "https://www.google.com"; // モック var dataMock = new TestDataObject(); dataMock.Setup_GetDataPresent("UniformResourceLocatorW", () => true); dataMock.Setup_GetData("UniformResourceLocatorW", () => new MemoryStream(Encoding.Unicode.GetBytes(url))); // テスト用のイベントパラメータ生成 var args = TestActivator.CreateDragEventArgs(dataMock.Object); // 変換テスト var target = new DragEventArgsToUrlConverter(); target.ConvertToUri = false; target.Convert(args, typeof(int), null, null) .Should().BeOfType <string>() .Which .Should().Be(url); }
public void Test_DragDrop_Convert() { // テスト対象のアクションを呼び出すためのトリガ作成 var element = new UIElement(); var action = new TestAction(); // テスト対象の準備 var trigger = new DragDropTerigger(); trigger.ParameterConverter = new DragEventArgsToFilePathConverter(); // 要素にアタッチ trigger.Attach(element); trigger.Actions.Add(action); // ドロップテストデータ var paths = new string[] { @"c:\directory\file.ext", @"d:\path\to\data" }; // モック var dataMock = new TestDataObject(); dataMock.Setup_GetDataPresent(DataFormats.FileDrop, () => true); dataMock.Setup_GetData(DataFormats.FileDrop, () => paths); // テスト用のイベントパラメータ生成 var args = TestActivator.CreateDragEventArgs(dataMock.Object, allowedEffects: DragDropEffects.All); args.RoutedEvent = UIElement.DropEvent; args.Effects = DragDropEffects.Copy; // イベントを発生させる element.RaiseEvent(args); // イベント処理結果検証 action.InvokedParameters.Should().Contain(new[] { paths }); }
public void Test_AcceptDropFormats_FromProperty() { // テスト対象のアクションを呼び出すためのトリガ作成 var element = new UIElement(); var action = new TestAction(); // テスト対象の準備 var trigger = new DragDropTerigger(); trigger.AcceptDropFormats = new[] { "Data1", "Data2", }; trigger.AcceptDropEffect = DragDropEffects.Move; // 要素にアタッチ trigger.Attach(element); trigger.Actions.Add(action); // ドロップデータのモック var dataMock = new TestDataObject(); // テスト用のイベントパラメータ生成 var args = TestActivator.CreateDragEventArgs(dataMock.Object, allowedEffects: DragDropEffects.All); args.RoutedEvent = UIElement.DragOverEvent; // プロパティで指定される書式に含めば受け付けられる { // イベントデータ設定 dataMock.Setup_GetDataPresent("Data1", () => true); dataMock.Setup_GetDataPresent("Data2", () => false); args.Effects = DragDropEffects.None; // イベントを発生させる args.Handled = false; element.RaiseEvent(args); // イベント処理結果検証 args.Effects.Should().Be(DragDropEffects.Move); } // プロパティで指定される書式に含めば受け付けられる { // イベントデータ設定 dataMock.Setup_GetDataPresent("Data1", () => false); dataMock.Setup_GetDataPresent("Data2", () => true); args.Effects = DragDropEffects.None; // イベントを発生させる args.Handled = false; element.RaiseEvent(args); // イベント処理結果検証 args.Effects.Should().Be(DragDropEffects.Move); } // プロパティでの指定に含まなければ受け付けない { // イベントデータ設定 dataMock.Setup_GetDataPresent("Data1", () => false); dataMock.Setup_GetDataPresent("Data2", () => false); args.Effects = DragDropEffects.None; // イベントを発生させる args.Handled = false; element.RaiseEvent(args); // イベント処理結果検証 args.Effects.Should().Be(DragDropEffects.None); } }
public void Test_AcceptDropFormats_FromBoth() { // テスト対象のアクションを呼び出すためのトリガ作成 var element = new UIElement(); var action = new TestAction(); // 専用インターフェースを実装したコンバータ var converter = new Mock <IDragDropTriggerParameterConverter>(); converter.Setup(m => m.AcceptFormats).Returns(() => new[] { "Conv1", "Conv2", }); // テスト対象の準備 var trigger = new DragDropTerigger(); trigger.AcceptDropFormats = new[] { "Data1", "Data2", }; trigger.AcceptDropEffect = DragDropEffects.Move; trigger.ParameterConverter = converter.Object; // 要素にアタッチ trigger.Attach(element); trigger.Actions.Add(action); // ドロップデータのモック var dataMock = new TestDataObject(); // テスト用のイベントパラメータ生成 var args = TestActivator.CreateDragEventArgs(dataMock.Object, allowedEffects: DragDropEffects.All); args.RoutedEvent = UIElement.DragOverEvent; // 両方指定されていればプロパティ優先。コンバータの持っている書式指定は無効。 { // イベントデータ設定 dataMock.Setup_GetDataPresent("Conv1", () => true); dataMock.Setup_GetDataPresent("Conv2", () => false); dataMock.Setup_GetDataPresent("Data1", () => false); dataMock.Setup_GetDataPresent("Data2", () => false); args.Effects = DragDropEffects.None; // イベントを発生させる args.Handled = false; element.RaiseEvent(args); // イベント処理結果検証 args.Effects.Should().Be(DragDropEffects.None); } // 両方指定されていればプロパティ優先。プロパティの指定を受け付ける。 { // イベントデータ設定 dataMock.Setup_GetDataPresent("Conv1", () => false); dataMock.Setup_GetDataPresent("Conv2", () => false); dataMock.Setup_GetDataPresent("Data1", () => true); dataMock.Setup_GetDataPresent("Data2", () => false); args.Effects = DragDropEffects.None; // イベントを発生させる args.Handled = false; element.RaiseEvent(args); // イベント処理結果検証 args.Effects.Should().Be(DragDropEffects.Move); } // プロパティでの書式指定値が null trigger.AcceptDropFormats = null; // 明示的な指定があれば全許可の値も効く。コンバータの書式指定ではなく、プロパティに null 設定したものが効く。(なのでなんでも受付になっている) { // イベントデータ設定 dataMock.Setup_GetDataPresent("Conv1", () => true); dataMock.Setup_GetDataPresent("Conv2", () => false); dataMock.Setup_GetDataPresent("Data1", () => false); dataMock.Setup_GetDataPresent("Data2", () => false); args.Effects = DragDropEffects.None; // イベントを発生させる args.Handled = false; element.RaiseEvent(args); // イベント処理結果検証 args.Effects.Should().Be(DragDropEffects.Move); } }
public void Test_AcceptDropFormats_FromConverter() { // テスト対象のアクションを呼び出すためのトリガ作成 var element = new UIElement(); var action = new TestAction(); // 専用インターフェースを実装したコンバータ var converter = new Mock <IDragDropTriggerParameterConverter>(); converter.Setup(m => m.AcceptFormats).Returns(() => new[] { "Conv1", "Conv2", }); // テスト対象の準備 var trigger = new DragDropTerigger(); trigger.AcceptDropEffect = DragDropEffects.Move; trigger.ParameterConverter = converter.Object; // 要素にアタッチ trigger.Attach(element); trigger.Actions.Add(action); // ドロップデータのモック var dataMock = new TestDataObject(); // テスト用のイベントパラメータ生成 var args = TestActivator.CreateDragEventArgs(dataMock.Object, allowedEffects: DragDropEffects.All); args.RoutedEvent = UIElement.DragOverEvent; // コンバータで指定される書式に含めば受け付けられる { // イベントデータ設定 dataMock.Setup_GetDataPresent("Conv1", () => true); dataMock.Setup_GetDataPresent("Conv2", () => false); args.Effects = DragDropEffects.None; // イベントを発生させる args.Handled = false; element.RaiseEvent(args); // イベント処理結果検証 args.Effects.Should().Be(DragDropEffects.Move); } // コンバータで指定される書式に含めば受け付けられる { // イベントデータ設定 dataMock.Setup_GetDataPresent("Conv1", () => false); dataMock.Setup_GetDataPresent("Conv2", () => true); args.Effects = DragDropEffects.None; // イベントを発生させる args.Handled = false; element.RaiseEvent(args); // イベント処理結果検証 args.Effects.Should().Be(DragDropEffects.Move); } // コンバータでの指定に含まなければ受け付けない { // イベントデータ設定 dataMock.Setup_GetDataPresent("Conv1", () => false); dataMock.Setup_GetDataPresent("Conv2", () => false); args.Effects = DragDropEffects.None; // イベントを発生させる args.Handled = false; element.RaiseEvent(args); // イベント処理結果検証 args.Effects.Should().Be(DragDropEffects.None); } }