/strobe-milyoni/src/player/StrobeMediaPlaybackTest/src/org/osmf/player/chrome/widgets/TestTimeViewWidget.as

https://github.com/krokhale/milyoniplayer · ActionScript · 199 lines · 158 code · 23 blank · 18 comment · 1 complexity · c5a2631827003064ea7e9cd89a2565f5 MD5 · raw file

  1. /***********************************************************
  2. * Copyright 2010 Adobe Systems Incorporated. All Rights Reserved.
  3. *
  4. * *********************************************************
  5. * The contents of this file are subject to the Berkeley Software Distribution (BSD) Licence
  6. * (the "License"); you may not use this file except in
  7. * compliance with the License.
  8. *
  9. * Software distributed under the License is distributed on an "AS IS"
  10. * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
  11. * License for the specific language governing rights and limitations
  12. * under the License.
  13. *
  14. *
  15. * The Initial Developer of the Original Code is Adobe Systems Incorporated.
  16. * Portions created by Adobe Systems Incorporated are Copyright (C) 2010 Adobe Systems
  17. * Incorporated. All Rights Reserved.
  18. **********************************************************/
  19. package org.osmf.player.chrome.widgets
  20. {
  21. import flash.display.Sprite;
  22. import flash.events.Event;
  23. import flash.events.TimerEvent;
  24. import flash.utils.Timer;
  25. import org.flexunit.asserts.*;
  26. import org.osmf.player.chrome.assets.AssetsManager;
  27. import org.osmf.player.chrome.metadata.ChromeMetadata;
  28. import org.osmf.metadata.Metadata;
  29. import org.osmf.traits.MediaTraitType;
  30. import org.osmf.traits.SeekTrait;
  31. import org.osmf.player.chrome.AssetsProvider;
  32. public class TestTimeViewWidget extends Sprite
  33. {
  34. [BeforeClass]
  35. public static function setup():void
  36. {
  37. assetProvider = new AssetsProvider();
  38. assetProvider.load();
  39. }
  40. [Test]
  41. public function testVisibilityOnRequiredTraits():void
  42. {
  43. var media:MockMediaElement = new MockMediaElement();
  44. var timeViewWidget:TimeViewWidget = new TimeViewWidget();
  45. timeViewWidget.configure(<default/>, assetProvider.assetsManager);
  46. timeViewWidget.media = media;
  47. assertFalse(timeViewWidget.layoutMetadata.includeInLayout);
  48. var timeTrait:MockTimeTrait = new MockTimeTrait(1000);
  49. media.addTrait2(MediaTraitType.TIME, timeTrait);
  50. assertTrue(timeViewWidget.layoutMetadata.includeInLayout);
  51. media.removeTrait2(MediaTraitType.TIME);
  52. assertFalse(timeViewWidget.layoutMetadata.includeInLayout);
  53. }
  54. [Test]
  55. public function testUpdateValuesUsingAutoSize():void
  56. {
  57. var media:MockMediaElement = new MockMediaElement();
  58. var timeViewWidget:TimeViewWidget = new TimeViewWidget();
  59. timeViewWidget.configure(<default/>, assetProvider.assetsManager);
  60. timeViewWidget.media = media;
  61. assertEquals(" 0:00 / 0:00 ", timeViewWidget.text);
  62. timeViewWidget.updateValues(100, 1000, false);
  63. assertEquals(" 01:40 / 16:40 ", timeViewWidget.text);
  64. timeViewWidget.updateValues(10000, 100000, false);
  65. assertEquals(" 2:46:40 / 27:46:40 ", timeViewWidget.text);
  66. }
  67. [Test]
  68. public function testUpdateValuesForLive():void
  69. {
  70. var media:MockMediaElement = new MockMediaElement();
  71. var timeViewWidget:TimeViewWidget = new TimeViewWidget();
  72. timeViewWidget.configure(<default/>, assetProvider.assetsManager);
  73. timeViewWidget.media = media;
  74. assertEquals(" 0:00 / 0:00 ", timeViewWidget.text);
  75. timeViewWidget.updateValues(100, 0, true);
  76. assertEquals("Live ", timeViewWidget.text);
  77. timeViewWidget.updateValues(10000, NaN, true);
  78. assertEquals("Live ", timeViewWidget.text);
  79. }
  80. [Test]
  81. public function testSeek():void
  82. {
  83. var media:MockMediaElement = new MockMediaElement();
  84. var timeViewWidget:TimeViewWidget = new TimeViewWidget();
  85. timeViewWidget.configure(<default/>, assetProvider.assetsManager);
  86. timeViewWidget.media = media;
  87. var timeTrait:MockTimeTrait = new MockTimeTrait(1000);
  88. var seekTrait:SeekTrait = new SeekTrait(timeTrait);
  89. media.addTrait2(MediaTraitType.TIME, timeTrait);
  90. media.addTrait2(MediaTraitType.SEEK, seekTrait);
  91. assertEquals(" 0:00 / 0:00 ", timeViewWidget.text);
  92. assertTrue(timeViewWidget.getBounds(this).width < 32);
  93. seekTrait.seek(100);
  94. assertEquals(" 01:40 / 16:40 ", timeViewWidget.text);
  95. timeTrait.setDuration2(100000);
  96. seekTrait.seek(10000);
  97. assertEquals(" 2:46:40 / 27:46:40 ", timeViewWidget.text);
  98. }
  99. [Test]
  100. public function testRemoveSeekTrait():void
  101. {
  102. var media:MockMediaElement = new MockMediaElement();
  103. var timeViewWidget:TimeViewWidget = new TimeViewWidget();
  104. timeViewWidget.configure(<default/>, assetProvider.assetsManager);
  105. timeViewWidget.media = media;
  106. var timeTrait:MockTimeTrait = new MockTimeTrait(1000);
  107. var seekTrait:SeekTrait = new SeekTrait(timeTrait);
  108. media.addTrait2(MediaTraitType.TIME, timeTrait);
  109. media.addTrait2(MediaTraitType.SEEK, seekTrait);
  110. assertEquals(" 0:00 / 0:00 ", timeViewWidget.text);
  111. assertTrue(timeViewWidget.getBounds(this).width < 32);
  112. media.removeTrait2(MediaTraitType.SEEK);
  113. seekTrait.seek(100);
  114. assertEquals(" 0:00 / 0:00 ", timeViewWidget.text);
  115. }
  116. [Test] [Ignore]
  117. public function testLiveMetadata():void
  118. {
  119. var media:MockMediaElement = new MockMediaElement();
  120. var timeViewWidget:TimeViewWidget = new TimeViewWidget();
  121. timeViewWidget.configure(<default/>, assetProvider.assetsManager);
  122. var timeTrait:MockTimeTrait = new MockTimeTrait();
  123. media.addTrait2(MediaTraitType.TIME, timeTrait);
  124. timeViewWidget.media = media;
  125. timeTrait.setDuration2(100000);
  126. timeTrait.setCurrentTime2(10000);
  127. timeViewWidget.updateNow();
  128. assertTrue(timeViewWidget.getBounds(this).width > 50 && timeViewWidget.getBounds(this).width < 55);
  129. timeTrait.setDuration2(100000);
  130. timeTrait.setCurrentTime2(10000);
  131. media.addTrait2(MediaTraitType.TIME, timeTrait);
  132. }
  133. private static var assetProvider:AssetsProvider;
  134. }
  135. }
  136. import org.osmf.events.BufferEvent;
  137. import org.osmf.media.MediaElement;
  138. import org.osmf.traits.BufferTrait;
  139. import org.osmf.traits.MediaTraitBase;
  140. import org.osmf.traits.MediaTraitType;
  141. import org.osmf.traits.PlayTrait;
  142. import org.osmf.traits.TimeTrait;
  143. class MockTimeTrait extends TimeTrait
  144. {
  145. public function MockTimeTrait(duration:Number=NaN)
  146. {
  147. super(duration);
  148. }
  149. public function setCurrentTime2(value:Number):void
  150. {
  151. super.setCurrentTime(value);
  152. }
  153. public function setDuration2(value:Number):void
  154. {
  155. super.setDuration(value);
  156. }
  157. }
  158. class MockMediaElement extends MediaElement
  159. {
  160. public function startBuffering():void
  161. {
  162. (getTrait(MediaTraitType.BUFFER) as BufferTrait).dispatchEvent(new BufferEvent(BufferEvent.BUFFERING_CHANGE, false, false, true));
  163. }
  164. public function makeTheBufferFull():void
  165. {
  166. (getTrait(MediaTraitType.BUFFER) as BufferTrait).dispatchEvent(new BufferEvent(BufferEvent.BUFFERING_CHANGE, false, false, false));
  167. }
  168. public function addTrait2(type:String, instance:MediaTraitBase):void
  169. {
  170. super.addTrait(type, instance);
  171. }
  172. public function removeTrait2(type:String):void
  173. {
  174. super.removeTrait(type);
  175. }
  176. }