OSDN Git Service

TabModelのgetterに対するテストコードを追加
[opentween/open-tween.git] / OpenTween.Tests / MediaSelectorTest.cs
index 48fc0f5..46c5c60 100644 (file)
@@ -5,8 +5,10 @@ using System.Drawing;
 using System.IO;
 using System.Linq;
 using System.Reflection;
+using System.Runtime.InteropServices;
 using System.Text;
 using System.Text.RegularExpressions;
+using Moq;
 using OpenTween.Api.DataModel;
 using Xunit;
 
@@ -14,14 +16,27 @@ namespace OpenTween
 {
     public class MediaSelectorTest
     {
+        public MediaSelectorTest()
+        {
+            this.MyCommonSetup();
+        }
+
+        public void MyCommonSetup()
+        {
+            var mockAssembly = new Mock<_Assembly>();
+            mockAssembly.Setup(m => m.GetName()).Returns(new AssemblyName("OpenTween"));
+
+            MyCommon.EntryAssembly = mockAssembly.Object;
+        }
+
         [Fact]
         public void Initialize_TwitterTest()
         {
+            using (var twitter = new Twitter())
             using (var mediaSelector = new MediaSelector())
             {
-                var twitter = new Twitter();
-                var config = TwitterConfiguration.DefaultConfiguration();
-                mediaSelector.Initialize(twitter, config, "Twitter");
+                twitter.Initialize("", "", "", 0L);
+                mediaSelector.Initialize(twitter, TwitterConfiguration.DefaultConfiguration(), "Twitter");
 
                 Assert.NotEqual(-1, mediaSelector.ImageServiceCombo.Items.IndexOf("Twitter"));
 
@@ -31,17 +46,20 @@ namespace OpenTween
                 // ページ番号が初期化された状態
                 var pages = mediaSelector.ImagePageCombo.Items;
                 Assert.Equal(new[] { "1" }, pages.Cast<object>().Select(x => x.ToString()));
+
+                // 代替テキストの入力欄が表示された状態
+                Assert.True(mediaSelector.AlternativeTextPanel.Visible);
             }
         }
 
         [Fact]
         public void Initialize_yfrogTest()
         {
+            using (var twitter = new Twitter())
             using (var mediaSelector = new MediaSelector())
             {
-                var twitter = new Twitter();
-                var config = TwitterConfiguration.DefaultConfiguration();
-                mediaSelector.Initialize(twitter, config, "yfrog");
+                twitter.Initialize("", "", "", 0L);
+                mediaSelector.Initialize(twitter, TwitterConfiguration.DefaultConfiguration(), "yfrog");
 
                 // 投稿先に yfrog が選択されている
                 Assert.Equal("yfrog", mediaSelector.ImageServiceCombo.Text);
@@ -49,15 +67,20 @@ namespace OpenTween
                 // ページ番号が初期化された状態
                 var pages = mediaSelector.ImagePageCombo.Items;
                 Assert.Equal(new[] { "1" }, pages.Cast<object>().Select(x => x.ToString()));
+
+                // 代替テキストの入力欄が非表示の状態
+                Assert.False(mediaSelector.AlternativeTextPanel.Visible);
             }
         }
 
         [Fact]
         public void BeginSelection_BlankTest()
         {
+            using (var twitter = new Twitter())
             using (var mediaSelector = new MediaSelector { Visible = false, Enabled = false })
             {
-                mediaSelector.Initialize(new Twitter(), TwitterConfiguration.DefaultConfiguration(), "Twitter");
+                twitter.Initialize("", "", "", 0L);
+                mediaSelector.Initialize(twitter, TwitterConfiguration.DefaultConfiguration(), "Twitter");
 
                 var eventCalled = false;
                 mediaSelector.BeginSelecting += (o, e) => eventCalled = true;
@@ -83,9 +106,11 @@ namespace OpenTween
         [Fact]
         public void BeginSelection_FilePathTest()
         {
+            using (var twitter = new Twitter())
             using (var mediaSelector = new MediaSelector { Visible = false, Enabled = false })
             {
-                mediaSelector.Initialize(new Twitter(), TwitterConfiguration.DefaultConfiguration(), "Twitter");
+                twitter.Initialize("", "", "", 0L);
+                mediaSelector.Initialize(twitter, TwitterConfiguration.DefaultConfiguration(), "Twitter");
 
                 var eventCalled = false;
                 mediaSelector.BeginSelecting += (o, e) => eventCalled = true;
@@ -117,9 +142,11 @@ namespace OpenTween
         [Fact]
         public void BeginSelection_MemoryImageTest()
         {
+            using (var twitter = new Twitter())
             using (var mediaSelector = new MediaSelector { Visible = false, Enabled = false })
             {
-                mediaSelector.Initialize(new Twitter(), TwitterConfiguration.DefaultConfiguration(), "Twitter");
+                twitter.Initialize("", "", "", 0L);
+                mediaSelector.Initialize(twitter, TwitterConfiguration.DefaultConfiguration(), "Twitter");
 
                 var eventCalled = false;
                 mediaSelector.BeginSelecting += (o, e) => eventCalled = true;
@@ -153,9 +180,11 @@ namespace OpenTween
         [Fact]
         public void BeginSelection_MultiImageTest()
         {
+            using (var twitter = new Twitter())
             using (var mediaSelector = new MediaSelector { Visible = false, Enabled = false })
             {
-                mediaSelector.Initialize(new Twitter(), TwitterConfiguration.DefaultConfiguration(), "Twitter");
+                twitter.Initialize("", "", "", 0L);
+                mediaSelector.Initialize(twitter, TwitterConfiguration.DefaultConfiguration(), "Twitter");
 
                 var images = new[] { "Resources/re.gif", "Resources/re1.png" };
                 mediaSelector.BeginSelection(images);
@@ -179,9 +208,11 @@ namespace OpenTween
         [Fact]
         public void EndSelection_Test()
         {
+            using (var twitter = new Twitter())
             using (var mediaSelector = new MediaSelector { Visible = false, Enabled = false })
             {
-                mediaSelector.Initialize(new Twitter(), TwitterConfiguration.DefaultConfiguration(), "Twitter");
+                twitter.Initialize("", "", "", 0L);
+                mediaSelector.Initialize(twitter, TwitterConfiguration.DefaultConfiguration(), "Twitter");
                 mediaSelector.BeginSelection(new[] { "Resources/re.gif" });
 
                 var displayImage = mediaSelector.ImageSelectedPicture.Image; // 表示中の画像
@@ -203,9 +234,11 @@ namespace OpenTween
         [Fact]
         public void PageChange_Test()
         {
+            using (var twitter = new Twitter())
             using (var mediaSelector = new MediaSelector { Visible = false, Enabled = false })
             {
-                mediaSelector.Initialize(new Twitter(), TwitterConfiguration.DefaultConfiguration(), "Twitter");
+                twitter.Initialize("", "", "", 0L);
+                mediaSelector.Initialize(twitter, TwitterConfiguration.DefaultConfiguration(), "Twitter");
 
                 var images = new[] { "Resources/re.gif", "Resources/re1.png" };
                 mediaSelector.BeginSelection(images);
@@ -244,11 +277,52 @@ namespace OpenTween
         }
 
         [Fact]
+        public void PageChange_AlternativeTextTest()
+        {
+            using (var twitter = new Twitter())
+            using (var mediaSelector = new MediaSelector { Visible = false, Enabled = false })
+            {
+                twitter.Initialize("", "", "", 0L);
+                mediaSelector.Initialize(twitter, TwitterConfiguration.DefaultConfiguration(), "Twitter");
+
+                var images = new[] { "Resources/re.gif", "Resources/re1.png" };
+                mediaSelector.BeginSelection(images);
+
+                // 1 ページ目
+                mediaSelector.ImagePageCombo.SelectedIndex = 0;
+                mediaSelector.AlternativeTextBox.Text = "Page 1";
+                mediaSelector.ValidateChildren();
+
+                // 2 ページ目
+                mediaSelector.ImagePageCombo.SelectedIndex = 1;
+                mediaSelector.AlternativeTextBox.Text = "Page 2";
+                mediaSelector.ValidateChildren();
+
+                // 3 ページ目 (新規ページ)
+                mediaSelector.ImagePageCombo.SelectedIndex = 2;
+                mediaSelector.AlternativeTextBox.Text = "Page 3";
+                mediaSelector.ValidateChildren();
+
+                mediaSelector.ImagePageCombo.SelectedIndex = 0;
+                Assert.Equal("Page 1", mediaSelector.AlternativeTextBox.Text);
+
+                mediaSelector.ImagePageCombo.SelectedIndex = 1;
+                Assert.Equal("Page 2", mediaSelector.AlternativeTextBox.Text);
+
+                // 画像が指定されていないページは入力した代替テキストも保持されない
+                mediaSelector.ImagePageCombo.SelectedIndex = 2;
+                Assert.Equal("", mediaSelector.AlternativeTextBox.Text);
+            }
+        }
+
+        [Fact]
         public void PageChange_ImageDisposeTest()
         {
+            using (var twitter = new Twitter())
             using (var mediaSelector = new MediaSelector { Visible = false, Enabled = false })
             {
-                mediaSelector.Initialize(new Twitter(), TwitterConfiguration.DefaultConfiguration(), "Twitter");
+                twitter.Initialize("", "", "", 0L);
+                mediaSelector.Initialize(twitter, TwitterConfiguration.DefaultConfiguration(), "Twitter");
 
                 var images = new[] { "Resources/re.gif", "Resources/re1.png" };
                 mediaSelector.BeginSelection(images);
@@ -274,9 +348,11 @@ namespace OpenTween
         [Fact]
         public void ImagePathInput_Test()
         {
+            using (var twitter = new Twitter())
             using (var mediaSelector = new MediaSelector { Visible = false, Enabled = false })
             {
-                mediaSelector.Initialize(new Twitter(), TwitterConfiguration.DefaultConfiguration(), "Twitter");
+                twitter.Initialize("", "", "", 0L);
+                mediaSelector.Initialize(twitter, TwitterConfiguration.DefaultConfiguration(), "Twitter");
                 mediaSelector.BeginSelection();
 
                 // 画像のファイルパスを入力
@@ -299,9 +375,11 @@ namespace OpenTween
         [Fact]
         public void ImagePathInput_ReplaceFileMediaItemTest()
         {
+            using (var twitter = new Twitter())
             using (var mediaSelector = new MediaSelector { Visible = false, Enabled = false })
             {
-                mediaSelector.Initialize(new Twitter(), TwitterConfiguration.DefaultConfiguration(), "Twitter");
+                twitter.Initialize("", "", "", 0L);
+                mediaSelector.Initialize(twitter, TwitterConfiguration.DefaultConfiguration(), "Twitter");
 
                 mediaSelector.BeginSelection(new[] { "Resources/re.gif" });
 
@@ -327,9 +405,11 @@ namespace OpenTween
         [Fact]
         public void ImagePathInput_ReplaceMemoryImageMediaItemTest()
         {
+            using (var twitter = new Twitter())
             using (var mediaSelector = new MediaSelector { Visible = false, Enabled = false })
             {
-                mediaSelector.Initialize(new Twitter(), TwitterConfiguration.DefaultConfiguration(), "Twitter");
+                twitter.Initialize("", "", "", 0L);
+                mediaSelector.Initialize(twitter, TwitterConfiguration.DefaultConfiguration(), "Twitter");
 
                 using (var bitmap = new Bitmap(width: 200, height: 200))
                 {
@@ -366,9 +446,11 @@ namespace OpenTween
         [Fact]
         public void ImageServiceChange_Test()
         {
+            using (var twitter = new Twitter())
             using (var mediaSelector = new MediaSelector { Visible = false, Enabled = false })
             {
-                mediaSelector.Initialize(new Twitter(), TwitterConfiguration.DefaultConfiguration(), "Twitter");
+                twitter.Initialize("", "", "", 0L);
+                mediaSelector.Initialize(twitter, TwitterConfiguration.DefaultConfiguration(), "Twitter");
 
                 Assert.Equal("Twitter", mediaSelector.ServiceName);