public void JoinningTest() { var factory = new MockCavetubeClientFactory(); var mockClient = factory.MockCavetubeClient; mockClient.Setup(cl => cl.JoinRoom(It.IsAny <string>())).Raises(m => m.OnJoin += null, "roomid"); mockClient.Setup(cl => cl.LeaveRoom()).Raises(m => m.OnLeave += null, "roomid"); var client = factory.CreateCavetubeClient(); bool check = false; CavetubeUtility.Joinning( client, "roomId", () => { check = true; }); Assert.IsTrue(check); }
/// <summary> /// Cavetube用Main(テスト用に差し替え可能な形) /// </summary> /// <param name="authFactory">使用するICavetubeAuthのインスタンスを選択</param> /// <param name="clientFactory">使用するICavetubeCelientのインスタンスを選択</param> /// <param name="pso2Factory">使用するIPso2LogWatcherのインスタンスを選択</param> /// <param name="waitAction">プログラムの終了を待つためのActionを選択</param> public static void CavetubeMain( ICavetubeAuthFactory authFactory, ICavetubeClientFactory clientFactory, IPso2LogWatcherFactory pso2Factory, Action waitAction) { using (CavetubeAuthManager manager = new CavetubeAuthManager(USER, PASSWORD, authFactory)) using (var client = clientFactory.CreateCavetubeClient()) { client.Connect(); // 部屋名取得はapi経由でいいのだろうか? // 特定ユーザーの配信をチェックするのはコメントサーバからできるかも String url = new Uri(String.Format("http://gae.cavelis.net/live/{0}", USER)).AbsoluteUri; ISummary summary = client.GetSummary(url); if (summary.RoomId == null) { throw new ApplicationException("部屋IDの取得に失敗しました"); } CavetubeUtility.Joinning(client, summary.RoomId, () => { _logger.Debug("Joinした"); _logger.Debug("API Key: {0}", manager.GetApiKey()); LogWatch( (String user, String message) => { client.PostComment(user, message, manager.GetApiKey()); }, waitAction, pso2Factory ); }); } }