[longomatch] Add more tests for camera configurations



commit 5087f487d66d954708344a1a68b560dce55f2aa1
Author: Andoni Morales Alastruey <ylatuya gmail com>
Date:   Thu Apr 2 17:05:00 2015 +0200

    Add more tests for camera configurations

 Tests/Services/TestPlayerController.cs |   82 ++++++++++++++++++++++++++++++--
 1 files changed, 77 insertions(+), 5 deletions(-)
---
diff --git a/Tests/Services/TestPlayerController.cs b/Tests/Services/TestPlayerController.cs
index 1d76110..185faf0 100644
--- a/Tests/Services/TestPlayerController.cs
+++ b/Tests/Services/TestPlayerController.cs
@@ -34,13 +34,13 @@ namespace Tests.Services
        {
                Mock<IPlayer> playerMock;
                Mock<IViewPort> viewPortMock;
+               Mock<IMultimediaToolkit> mtkMock;
                MediaFileSet mfs;
                PlayerController player;
                Time currentTime, streamLength;
                TimelineEvent evt;
                PlaylistImage plImage;
                Playlist playlist;
-               double rate;
 
                [TestFixtureSetUp ()]
                public void FixtureSetup ()
@@ -53,10 +53,10 @@ namespace Tests.Services
                        playerMock.Setup (p => p.Play ()).Raises (p => p.StateChange += null, this, true);
                        playerMock.Setup (p => p.Pause ()).Raises (p => p.StateChange += null, this, false);
 
-                       var mtk = new Mock<IMultimediaToolkit> ();
-                       mtk.Setup (m => m.GetPlayer ()).Returns (playerMock.Object);
-                       mtk.Setup (m => m.GetMultiPlayer ()).Throws (new Exception ());
-                       Config.MultimediaToolkit = mtk.Object;
+                       mtkMock = new Mock<IMultimediaToolkit> ();
+                       mtkMock.Setup (m => m.GetPlayer ()).Returns (playerMock.Object);
+                       mtkMock.Setup (m => m.GetMultiPlayer ()).Throws (new Exception ());
+                       Config.MultimediaToolkit = mtkMock.Object;
 
                        var ftk = new Mock<IGUIToolkit> ();
                        ftk.Setup (m => m.Invoke (It.IsAny<EventHandler> ())).Callback<EventHandler> (e => e 
(null, null));
@@ -799,6 +799,78 @@ namespace Tests.Services
                        Assert.IsNull (drSent); 
                }
 
+               [Test ()]
+               public void TestMultiplayerCamerasConfig ()
+               {
+                       TimelineEvent evt1;
+                       List<int> cams1, cams2;
+                       Mock<IMultiPlayer> multiplayerMock = new Mock<IMultiPlayer> ();
+
+                       mtkMock.Setup (m => m.GetMultiPlayer ()).Returns (multiplayerMock.Object);
+                       player = new PlayerController (true);
+                       PreparePlayer ();
+
+                       /* Only called internally in the openning */
+                       cams1 = new List<int> { 0, 1 };
+                       cams2 = new List<int> { 1, 0 };
+                       multiplayerMock.Verify (p => p.ApplyCamerasConfig (), Times.Never ());
+                       Assert.AreEqual (cams1, player.CamerasVisible);
+
+                       player.CamerasVisible = cams2;
+                       multiplayerMock.Verify (p => p.ApplyCamerasConfig (), Times.Once ());
+                       Assert.AreEqual (cams2, player.CamerasVisible);
+                       multiplayerMock.ResetCalls ();
+
+                       /* Now load an event */
+                       evt1 = new TimelineEvent { Start = new Time (100), Stop = new Time (200),
+                               CamerasVisible = new List<int> { 1, 1 }
+                       };
+                       player.LoadEvent (mfs, evt1, evt1.Start, true);
+                       multiplayerMock.Verify (p => p.ApplyCamerasConfig (), Times.Once ());
+                       Assert.AreEqual (evt1.CamerasVisible, player.CamerasVisible);
+                       multiplayerMock.ResetCalls ();
+
+                       /* Change event cams config */
+                       player.CamerasVisible = new List<int> { 0, 0 };
+                       multiplayerMock.Verify (p => p.ApplyCamerasConfig (), Times.Once ());
+                       Assert.AreEqual (new List<int> { 0, 0 }, evt1.CamerasVisible);
+                       Assert.AreEqual (player.CamerasVisible, evt1.CamerasVisible);
+                       multiplayerMock.ResetCalls ();
+
+                       /* Unload and check the original cams config is set back*/
+                       player.UnloadCurrentEvent ();
+                       multiplayerMock.Verify (p => p.ApplyCamerasConfig (), Times.Once ());
+                       Assert.AreEqual (cams2, player.CamerasVisible);
+                       Assert.AreEqual (new List<int> { 0, 0 }, evt1.CamerasVisible);
+                       multiplayerMock.ResetCalls ();
+
+                       /* And changing the config does not affects the unloaded event */
+                       player.CamerasVisible = cams1;
+                       multiplayerMock.Verify (p => p.ApplyCamerasConfig (), Times.Once ());
+                       Assert.AreEqual (new List<int> { 0, 0 }, evt1.CamerasVisible);
+                       multiplayerMock.ResetCalls ();
+
+                       /* Now load a playlist video */
+                       PlaylistVideo plv = new PlaylistVideo (mfs [0]);
+                       player.LoadPlaylistEvent (playlist, plv);
+                       multiplayerMock.Verify (p => p.ApplyCamerasConfig (), Times.Never ());
+                       Assert.AreEqual (new List<int> { 0 }, player.CamerasVisible);
+                       multiplayerMock.ResetCalls ();
+                       player.UnloadCurrentEvent ();
+                       /* Called by Open internally () */
+                       multiplayerMock.Verify (p => p.ApplyCamerasConfig (), Times.Never ());
+                       Assert.AreEqual (cams2, player.CamerasVisible);
+                       multiplayerMock.ResetCalls ();
+
+                       /* Now load a playlist event and make sure its config is loaded
+                        * and not the event's one */
+                       PlaylistPlayElement ple = new PlaylistPlayElement (evt, mfs);
+                       ple.CamerasVisible = cams2;
+                       player.LoadPlaylistEvent (playlist, ple);
+                       multiplayerMock.Verify (p => p.ApplyCamerasConfig (), Times.Once ());
+                       Assert.AreEqual (cams2, player.CamerasVisible);
+                       multiplayerMock.ResetCalls ();
+               }
        }
 }
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]