OSDN Git Service

TabModelのgetterに対するテストコードを追加
[opentween/open-tween.git] / OpenTween.Tests / MediaSelectorTest.cs
index 77f94d6..46c5c60 100644 (file)
@@ -5,24 +5,38 @@ using System.Drawing;
 using System.IO;
 using System.Linq;
 using System.Reflection;
+using System.Runtime.InteropServices;
 using System.Text;
 using System.Text.RegularExpressions;
-using System.Threading.Tasks;
-using OpenTween.Api;
+using Moq;
+using OpenTween.Api.DataModel;
 using Xunit;
 
 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"));
 
@@ -32,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);
@@ -50,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;
@@ -82,11 +104,13 @@ namespace OpenTween
         }
 
         [Fact]
-        public async Task BeginSelection_FilePathTest()
+        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;
@@ -108,7 +132,7 @@ namespace OpenTween
                 Assert.Equal(Path.GetFullPath("Resources/re.gif"), mediaSelector.ImagefilePathText.Text);
 
                 using (var imageStream = File.OpenRead("Resources/re.gif"))
-                using (var image = await MemoryImage.CopyFromStreamAsync(imageStream).ConfigureAwait(false))
+                using (var image = MemoryImage.CopyFromStream(imageStream))
                 {
                     Assert.Equal(image, mediaSelector.ImageSelectedPicture.Image);
                 }
@@ -118,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;
@@ -152,11 +178,13 @@ namespace OpenTween
         }
 
         [Fact]
-        public async Task BeginSelection_MultiImageTest()
+        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);
@@ -170,7 +198,7 @@ namespace OpenTween
                 Assert.Equal(Path.GetFullPath("Resources/re.gif"), mediaSelector.ImagefilePathText.Text);
 
                 using (var imageStream = File.OpenRead("Resources/re.gif"))
-                using (var image = await MemoryImage.CopyFromStreamAsync(imageStream).ConfigureAwait(false))
+                using (var image = MemoryImage.CopyFromStream(imageStream))
                 {
                     Assert.Equal(image, mediaSelector.ImageSelectedPicture.Image);
                 }
@@ -180,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; // 表示中の画像
@@ -202,11 +232,13 @@ namespace OpenTween
         }
 
         [Fact]
-        public async Task PageChange_Test()
+        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);
@@ -218,7 +250,7 @@ namespace OpenTween
                 Assert.Equal(Path.GetFullPath("Resources/re.gif"), mediaSelector.ImagefilePathText.Text);
 
                 using (var imageStream = File.OpenRead("Resources/re.gif"))
-                using (var image = await MemoryImage.CopyFromStreamAsync(imageStream).ConfigureAwait(false))
+                using (var image = MemoryImage.CopyFromStream(imageStream))
                 {
                     Assert.Equal(image, mediaSelector.ImageSelectedPicture.Image);
                 }
@@ -230,7 +262,7 @@ namespace OpenTween
                 Assert.Equal(Path.GetFullPath("Resources/re1.png"), mediaSelector.ImagefilePathText.Text);
 
                 using (var imageStream = File.OpenRead("Resources/re1.png"))
-                using (var image = await MemoryImage.CopyFromStreamAsync(imageStream).ConfigureAwait(false))
+                using (var image = MemoryImage.CopyFromStream(imageStream))
                 {
                     Assert.Equal(image, mediaSelector.ImageSelectedPicture.Image);
                 }
@@ -245,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);
@@ -273,11 +346,13 @@ namespace OpenTween
         }
 
         [Fact]
-        public async Task ImagePathInput_Test()
+        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();
 
                 // 画像のファイルパスを入力
@@ -286,7 +361,7 @@ namespace OpenTween
 
                 // 入力したパスの画像が表示される
                 using (var imageStream = File.OpenRead("Resources/re1.png"))
-                using (var image = await MemoryImage.CopyFromStreamAsync(imageStream).ConfigureAwait(false))
+                using (var image = MemoryImage.CopyFromStream(imageStream))
                 {
                     Assert.Equal(image, mediaSelector.ImageSelectedPicture.Image);
                 }
@@ -298,11 +373,13 @@ namespace OpenTween
         }
 
         [Fact]
-        public async Task ImagePathInput_ReplaceFileMediaItemTest()
+        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" });
 
@@ -315,7 +392,7 @@ namespace OpenTween
 
                 // 入力したパスの画像が表示される
                 using (var imageStream = File.OpenRead("Resources/re1.png"))
-                using (var image2 = await MemoryImage.CopyFromStreamAsync(imageStream).ConfigureAwait(false))
+                using (var image2 = MemoryImage.CopyFromStream(imageStream))
                 {
                     Assert.Equal(image2, mediaSelector.ImageSelectedPicture.Image);
                 }
@@ -326,11 +403,13 @@ namespace OpenTween
         }
 
         [Fact]
-        public async Task ImagePathInput_ReplaceMemoryImageMediaItemTest()
+        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))
                 {
@@ -351,7 +430,7 @@ namespace OpenTween
 
                 // 入力したパスの画像が表示される
                 using (var imageStream = File.OpenRead("Resources/re1.png"))
-                using (var image2 = await MemoryImage.CopyFromStreamAsync(imageStream).ConfigureAwait(false))
+                using (var image2 = MemoryImage.CopyFromStream(imageStream))
                 {
                     Assert.Equal(image2, mediaSelector.ImageSelectedPicture.Image);
                 }
@@ -367,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);