MediaStreamTests.cs 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207
  1. using MediaBrowser.Model.Entities;
  2. using Xunit;
  3. namespace Jellyfin.Model.Tests.Entities
  4. {
  5. public class MediaStreamTests
  6. {
  7. public static TheoryData<string, MediaStream> Get_DisplayTitle_TestData()
  8. {
  9. var data = new TheoryData<string, MediaStream>();
  10. data.Add(
  11. "English - Und - ASS",
  12. new MediaStream
  13. {
  14. Type = MediaStreamType.Subtitle,
  15. Title = "English",
  16. Language = string.Empty,
  17. IsForced = false,
  18. IsDefault = false,
  19. Codec = "ASS"
  20. });
  21. data.Add(
  22. "English - Und",
  23. new MediaStream
  24. {
  25. Type = MediaStreamType.Subtitle,
  26. Title = "English",
  27. Language = string.Empty,
  28. IsForced = false,
  29. IsDefault = false,
  30. Codec = string.Empty
  31. });
  32. data.Add(
  33. "English",
  34. new MediaStream
  35. {
  36. Type = MediaStreamType.Subtitle,
  37. Title = "English",
  38. Language = "EN",
  39. IsForced = false,
  40. IsDefault = false,
  41. Codec = string.Empty
  42. });
  43. data.Add(
  44. "English - Default - Forced - SRT",
  45. new MediaStream
  46. {
  47. Type = MediaStreamType.Subtitle,
  48. Title = "English",
  49. Language = "EN",
  50. IsForced = true,
  51. IsDefault = true,
  52. Codec = "SRT"
  53. });
  54. data.Add(
  55. "Title - EN - Default - Forced - SRT - External",
  56. new MediaStream
  57. {
  58. Type = MediaStreamType.Subtitle,
  59. Title = "Title",
  60. Language = "EN",
  61. IsForced = true,
  62. IsDefault = true,
  63. Codec = "SRT",
  64. IsExternal = true
  65. });
  66. data.Add(
  67. "Und",
  68. new MediaStream
  69. {
  70. Type = MediaStreamType.Subtitle,
  71. Title = null,
  72. Language = null,
  73. IsForced = false,
  74. IsDefault = false,
  75. Codec = null
  76. });
  77. data.Add(
  78. "Title - EN - Hearing Impaired - Default - Forced - SRT",
  79. new MediaStream
  80. {
  81. Type = MediaStreamType.Subtitle,
  82. Title = "Title",
  83. Language = "EN",
  84. IsForced = true,
  85. IsDefault = true,
  86. IsHearingImpaired = true,
  87. Codec = "SRT"
  88. });
  89. data.Add(
  90. "Title - AAC - Default - External",
  91. new MediaStream
  92. {
  93. Type = MediaStreamType.Audio,
  94. Title = "Title",
  95. Language = null,
  96. IsForced = false,
  97. IsDefault = true,
  98. Codec = "AAC",
  99. IsExternal = true
  100. });
  101. return data;
  102. }
  103. [Theory]
  104. [MemberData(nameof(Get_DisplayTitle_TestData))]
  105. public void Get_DisplayTitle_should_return_valid_title(string expected, MediaStream mediaStream)
  106. {
  107. Assert.Equal(expected, mediaStream.DisplayTitle);
  108. }
  109. [Theory]
  110. [InlineData(null, null, false, null)]
  111. [InlineData(null, 0, false, null)]
  112. [InlineData(0, null, false, null)]
  113. [InlineData(256, 144, false, "144p")]
  114. [InlineData(256, 144, true, "144i")]
  115. [InlineData(426, 240, false, "240p")]
  116. [InlineData(426, 240, true, "240i")]
  117. [InlineData(640, 360, false, "360p")]
  118. [InlineData(640, 360, true, "360i")]
  119. [InlineData(854, 480, false, "480p")]
  120. [InlineData(854, 480, true, "480i")]
  121. [InlineData(960, 540, false, "540p")]
  122. [InlineData(960, 540, true, "540i")]
  123. [InlineData(1024, 576, false, "576p")]
  124. [InlineData(1024, 576, true, "576i")]
  125. [InlineData(1280, 720, false, "720p")]
  126. [InlineData(1280, 720, true, "720i")]
  127. [InlineData(2560, 1080, false, "1080p")]
  128. [InlineData(2560, 1080, true, "1080i")]
  129. [InlineData(4096, 3072, false, "4K")]
  130. [InlineData(8192, 6144, false, "8K")]
  131. [InlineData(512, 384, false, "384p")]
  132. [InlineData(576, 336, false, "360p")]
  133. [InlineData(576, 336, true, "360i")]
  134. [InlineData(624, 352, false, "360p")]
  135. [InlineData(640, 352, false, "360p")]
  136. [InlineData(640, 480, false, "480p")]
  137. [InlineData(704, 396, false, "404p")]
  138. [InlineData(720, 404, false, "404p")]
  139. [InlineData(720, 480, false, "480p")]
  140. [InlineData(720, 576, false, "576p")]
  141. [InlineData(768, 576, false, "576p")]
  142. [InlineData(960, 544, false, "540p")]
  143. [InlineData(960, 544, true, "540i")]
  144. [InlineData(960, 720, false, "720p")]
  145. [InlineData(1280, 528, false, "720p")]
  146. [InlineData(1280, 532, false, "720p")]
  147. [InlineData(1280, 534, false, "720p")]
  148. [InlineData(1280, 536, false, "720p")]
  149. [InlineData(1280, 544, false, "720p")]
  150. [InlineData(1280, 690, false, "720p")]
  151. [InlineData(1280, 694, false, "720p")]
  152. [InlineData(1280, 696, false, "720p")]
  153. [InlineData(1280, 716, false, "720p")]
  154. [InlineData(1280, 718, false, "720p")]
  155. [InlineData(1920, 1080, false, "1080p")]
  156. [InlineData(1440, 1070, false, "1080p")]
  157. [InlineData(1440, 1072, false, "1080p")]
  158. [InlineData(1440, 1080, false, "1080p")]
  159. [InlineData(1440, 1440, false, "1080p")]
  160. [InlineData(1912, 792, false, "1080p")]
  161. [InlineData(1916, 1076, false, "1080p")]
  162. [InlineData(1918, 1080, false, "1080p")]
  163. [InlineData(1920, 796, false, "1080p")]
  164. [InlineData(1920, 800, false, "1080p")]
  165. [InlineData(1920, 802, false, "1080p")]
  166. [InlineData(1920, 804, false, "1080p")]
  167. [InlineData(1920, 808, false, "1080p")]
  168. [InlineData(1920, 816, false, "1080p")]
  169. [InlineData(1920, 856, false, "1080p")]
  170. [InlineData(1920, 960, false, "1080p")]
  171. [InlineData(1920, 1024, false, "1080p")]
  172. [InlineData(1920, 1040, false, "1080p")]
  173. [InlineData(1920, 1070, false, "1080p")]
  174. [InlineData(1920, 1072, false, "1080p")]
  175. [InlineData(1920, 1440, false, "1080p")]
  176. [InlineData(3840, 1600, false, "4K")]
  177. [InlineData(3840, 1606, false, "4K")]
  178. [InlineData(3840, 1608, false, "4K")]
  179. [InlineData(3840, 2160, false, "4K")]
  180. [InlineData(4090, 3070, false, "4K")]
  181. [InlineData(7680, 4320, false, "8K")]
  182. [InlineData(8190, 6140, false, "8K")]
  183. public void GetResolutionText_Valid(int? width, int? height, bool interlaced, string expected)
  184. {
  185. var mediaStream = new MediaStream()
  186. {
  187. Width = width,
  188. Height = height,
  189. IsInterlaced = interlaced
  190. };
  191. Assert.Equal(expected, mediaStream.GetResolutionText());
  192. }
  193. }
  194. }