// OpenTween - Client of Twitter // Copyright (c) 2014 kim_upsilon (@kim_upsilon) // All rights reserved. // // This file is part of OpenTween. // // This program is free software; you can redistribute it and/or modify it // under the terms of the GNU General Public License as published by the Free // Software Foundation; either version 3 of the License, or (at your option) // any later version. // // This program is distributed in the hope that it will be useful, but // WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY // or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License // for more details. // // You should have received a copy of the GNU General Public License along // with this program. If not, see , or write to // the Free Software Foundation, Inc., 51 Franklin Street - Fifth Floor, // Boston, MA 02110-1301, USA. using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Reflection; using System.Text; using System.Text.RegularExpressions; using System.Windows.Forms; using OpenTween.Api; using OpenTween.Api.DataModel; using OpenTween.Connection; using OpenTween.Models; using OpenTween.OpenTweenCustomControl; using OpenTween.Setting; using OpenTween.Thumbnail; using Xunit; using Xunit.Extensions; namespace OpenTween { public class TweenMainTest { private record TestContext( SettingManager Settings, TabInformations TabInfo ); private void UsingTweenMain(Action func) { var settings = new SettingManager(""); var tabinfo = new TabInformations(); using var twitterApi = new TwitterApi(); using var twitter = new Twitter(twitterApi); using var imageCache = new ImageCache(); using var iconAssets = new IconAssetsManager(); var thumbnailGenerator = new ThumbnailGenerator(new(autoupdate: false)); // TabInformation.GetInstance() で取得できるようにする var field = typeof(TabInformations).GetField("Instance", BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.SetField); field.SetValue(null, tabinfo); using var tweenMain = new TweenMain(settings, tabinfo, twitter, imageCache, iconAssets, thumbnailGenerator); var context = new TestContext(settings, tabinfo); func(tweenMain, context); } [WinFormsFact] public void Initialize_Test() => this.UsingTweenMain((_, _) => { }); [WinFormsFact] public void AddNewTab_FilterTabTest() { this.UsingTweenMain((tweenMain, context) => { Assert.Equal(4, tweenMain.ListTab.TabPages.Count); var tab = new FilterTabModel("hoge"); context.TabInfo.AddTab(tab); tweenMain.AddNewTab(tab, startup: false); Assert.Equal(5, tweenMain.ListTab.TabPages.Count); var tabPage = tweenMain.ListTab.TabPages[4]; Assert.Equal("hoge", tabPage.Text); Assert.Single(tabPage.Controls); Assert.IsType(tabPage.Controls[0]); }); } [WinFormsFact] public void AddNewTab_UserTimelineTabTest() { this.UsingTweenMain((tweenMain, context) => { Assert.Equal(4, tweenMain.ListTab.TabPages.Count); var tab = new UserTimelineTabModel("hoge", "twitterapi"); context.TabInfo.AddTab(tab); tweenMain.AddNewTab(tab, startup: false); Assert.Equal(5, tweenMain.ListTab.TabPages.Count); var tabPage = tweenMain.ListTab.TabPages[4]; Assert.Equal("hoge", tabPage.Text); Assert.Equal(2, tabPage.Controls.Count); Assert.IsType(tabPage.Controls[0]); var label = Assert.IsType