framework_gem 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (876) hide show
  1. checksums.yaml +4 -4
  2. data/{lib/EXECUTION_ENGINE.md → EXECUTION_ENGINE.md} +0 -0
  3. data/{lib/Gemfile → Gemfile} +4 -1
  4. data/{lib/README.md → README.md} +0 -0
  5. data/{lib/config → config}/ConfigParams.xml +0 -0
  6. data/{lib/config → config}/ImageROI.xml +0 -0
  7. data/{lib/config → config}/ROI.xml +0 -0
  8. data/{lib/config → config}/Userlog4j.xml +0 -0
  9. data/{lib/config → config}/schema-docs/mode.xsd +0 -0
  10. data/{lib/config → config}/schema-docs/processTestJobs.xsd +0 -0
  11. data/{lib/config → config}/schema-docs/rackip.xsd +0 -0
  12. data/{lib/copy_ref_images.rb → copy_ref_images.rb} +0 -0
  13. data/{lib/copy_repo.rb → copy_repo.rb} +0 -0
  14. data/{lib/dsllib → dsllib}/common/dncs/dncs_utils.rb +0 -0
  15. data/{lib/dsllib → dsllib}/common/mas_db/mas_conductor.rb +0 -0
  16. data/{lib/dsllib → dsllib}/common/mas_db/mas_db.rb +0 -0
  17. data/{lib/dsllib → dsllib}/common/mas_db/mas_publish.rb +0 -0
  18. data/{lib/dsllib → dsllib}/common/mas_db/mas_rest_services.rb +0 -0
  19. data/{lib/dsllib → dsllib}/common/mas_db/mas_soap_services.rb +0 -0
  20. data/{lib/dsllib → dsllib}/common/mas_db/mas_utils.rb +0 -0
  21. data/{lib/dsllib → dsllib}/common/remote_diagnostics/mdn_remote_diagnostics.rb +0 -0
  22. data/{lib/dsllib → dsllib}/common/remote_diagnostics/odn_web_server.rb +0 -0
  23. data/{lib/dsllib → dsllib}/common/utils/excel_export.rb +0 -0
  24. data/{lib/dsllib → dsllib}/common/utils/excel_module.rb +0 -0
  25. data/{lib/dsllib → dsllib}/common/utils/server_components_utils.rb +0 -0
  26. data/{lib/dsllib → dsllib}/common/utils/stb_health_check_utils.rb +0 -0
  27. data/{lib/dsllib → dsllib}/common/utils/sword_utils.rb +0 -0
  28. data/{lib/dsllib → dsllib}/common/utils/tmc_utils.rb +0 -0
  29. data/{lib/dsllib → dsllib}/common/utils/virtual_keyboard_navigator.rb +0 -0
  30. data/{lib/dsllib → dsllib}/common/utils/virtual_keyboard_vp_navigator.rb +0 -0
  31. data/{lib/dsllib → dsllib}/performance/DTA/roi.rb +0 -0
  32. data/{lib/dsllib → dsllib}/performance/DTA/utils.rb +0 -0
  33. data/{lib/dsllib → dsllib}/performance/iguide_concurrent_test/ROI.rb +0 -0
  34. data/{lib/dsllib → dsllib}/performance/iguide_concurrent_test/utils.rb +0 -0
  35. data/{lib/dsllib → dsllib}/performance/measure_tune.rb +0 -0
  36. data/{lib/dsllib → dsllib}/performance/perf_lib.rb +0 -0
  37. data/framework_gem.rb +3 -0
  38. data/lib/{lib/data_services → data_services}/channel.rb +0 -0
  39. data/lib/{lib/data_services → data_services}/data_services.rb +0 -0
  40. data/lib/{lib/data_services → data_services}/guide.rb +0 -0
  41. data/lib/{lib/data_services → data_services}/lineup.rb +0 -0
  42. data/lib/{lib/data_services → data_services}/program.rb +0 -0
  43. data/lib/{lib/data_services → data_services}/schedule.rb +0 -0
  44. data/lib/{lib/data_services → data_services}/splunk_connector.rb +0 -0
  45. data/lib/{lib/data_services → data_services}/splunk_data_reader.rb +0 -0
  46. data/lib/{lib/element → element}/element.rb +0 -0
  47. data/lib/{lib/extensions → extensions}/array_extensions.rb +0 -0
  48. data/lib/{lib/extensions → extensions}/datetime_extensions.rb +0 -0
  49. data/lib/{lib/extensions → extensions}/extensions.rb +0 -0
  50. data/lib/{lib/extensions → extensions}/file_extensions.rb +0 -0
  51. data/lib/{lib/extensions → extensions}/float_extensions.rb +0 -0
  52. data/lib/{lib/extensions → extensions}/integer_extensions.rb +0 -0
  53. data/lib/{lib/extensions → extensions}/nethttp_extensions.rb +0 -0
  54. data/lib/{lib/extensions → extensions}/object_extensions.rb +0 -0
  55. data/lib/{lib/extensions → extensions}/string_extensions.rb +0 -0
  56. data/lib/helpers/tmc_helpers/core_helper/core_helper.rb +29 -0
  57. data/lib/{lib/helpers → helpers}/tmc_helpers/csv_helper/csv_helper.rb +0 -0
  58. data/lib/{lib/helpers → helpers}/tmc_helpers/email_helper/email_helper.rb +0 -0
  59. data/lib/{lib/helpers → helpers}/tmc_helpers/http_helper/http_helper.rb +0 -0
  60. data/lib/{lib/helpers → helpers}/tmc_helpers/roi_helper/roi_helper.rb +0 -0
  61. data/lib/{lib/helpers → helpers}/tmc_helpers/snmp_helper/snmp_helper.rb +0 -0
  62. data/lib/{lib/helpers → helpers}/tmc_helpers/ssh_helper/ssh_helper.rb +0 -0
  63. data/lib/{lib/helpers → helpers}/tmc_helpers/tmc_helpers.rb +0 -0
  64. data/lib/{lib/keyboard → keyboard}/apple_tv/apple_tv_password_keyboard.rb +0 -0
  65. data/lib/{lib/keyboard → keyboard}/apple_tv/apple_tv_search_keyboard.rb +0 -0
  66. data/lib/{lib/keyboard → keyboard}/apple_tv/apple_tv_username_keyboard.rb +0 -0
  67. data/lib/{lib/keyboard → keyboard}/keyboard.rb +0 -0
  68. data/lib/{lib/keyboard → keyboard}/keyboard_layout.rb +0 -0
  69. data/lib/{lib/keyboard → keyboard}/roku/roku_reset_pin_keyboard.rb +0 -0
  70. data/lib/{lib/keyboard → keyboard}/roku/roku_rsg_search_keyboard.rb +0 -0
  71. data/lib/{lib/keyboard → keyboard}/roku/roku_rsg_signin_keyboard.rb +0 -0
  72. data/lib/{lib/keyboard → keyboard}/roku/roku_search_keyboard.rb +0 -0
  73. data/lib/{lib/keyboard → keyboard}/roku/roku_signin_keyboard.rb +0 -0
  74. data/lib/{lib/keyboard → keyboard}/samsung_tv/samsung_tv_search_keyboard.rb +0 -0
  75. data/lib/{lib/keyboard → keyboard}/samsung_tv/samsung_tv_signin_keyboard.rb +0 -0
  76. data/lib/{lib/keyboard → keyboard}/stb/odn/odn_on_demand_search_keyboard.rb +0 -0
  77. data/lib/{lib/keyboard → keyboard}/stb/odn/odn_search_keyboard.rb +0 -0
  78. data/lib/{lib/keyboard → keyboard}/stb/spectrum/spectrum_netflix_email_keyboard.rb +0 -0
  79. data/lib/{lib/keyboard → keyboard}/stb/spectrum/spectrum_netflix_keyboard.rb +0 -0
  80. data/lib/{lib/keyboard → keyboard}/stb/spectrum/spectrum_netflix_name_keyboard.rb +0 -0
  81. data/lib/{lib/keyboard → keyboard}/stb/spectrum/spectrum_search_keyboard.rb +0 -0
  82. data/lib/{lib/keyboard → keyboard}/tivo/tivo_password_keyboard.rb +0 -0
  83. data/lib/{lib/keyboard → keyboard}/tivo/tivo_search_keyboard.rb +0 -0
  84. data/lib/{lib/keyboard → keyboard}/tivo/tivo_username_keyboard.rb +0 -0
  85. data/lib/{lib/keys → keys}/apple_tv/apple_tv_keys.rb +0 -0
  86. data/lib/{lib/keys → keys}/base_keys.rb +0 -0
  87. data/lib/{lib/keys → keys}/dta/dta_keys.rb +0 -0
  88. data/lib/{lib/keys → keys}/mdn/mdn_keys.rb +0 -0
  89. data/lib/{lib/keys → keys}/passport/passport_keys.rb +0 -0
  90. data/lib/{lib/keys → keys}/roku/roku_keys.rb +0 -0
  91. data/lib/{lib/keys → keys}/roku_tv/roku_tv_keys.rb +0 -0
  92. data/lib/{lib/keys → keys}/samsung_tv/samsung_tv_keys.rb +0 -0
  93. data/lib/{lib/keys → keys}/sara/sara_keys.rb +0 -0
  94. data/lib/{lib/keys → keys}/stb/iguide/iguide_keys.rb +0 -0
  95. data/lib/{lib/keys → keys}/stb/odn/odn_keys.rb +0 -0
  96. data/lib/{lib/keys → keys}/stb/spectrum/spectrum_keys.rb +0 -0
  97. data/lib/{lib/keys → keys}/stb/stb_keys.rb +0 -0
  98. data/lib/{lib/keys → keys}/tivo/tivo_keys.rb +0 -0
  99. data/lib/{lib/logger → logger}/multi_io.rb +0 -0
  100. data/lib/{lib/logger → logger}/tmc_dut_logger.rb +0 -0
  101. data/lib/{lib/logger → logger}/tmc_logger.rb +0 -0
  102. data/lib/{lib/mixins → mixins}/assignable.rb +0 -0
  103. data/lib/{lib/mixins → mixins}/can_have_special_methods.rb +0 -0
  104. data/lib/{lib/mixins → mixins}/enumish.rb +0 -0
  105. data/lib/{lib/new_platform.rb → new_platform.rb} +0 -0
  106. data/lib/{lib/new_sub_platform.rb → new_sub_platform.rb} +0 -0
  107. data/lib/{lib/platform → platform}/apple_tv/apple_tv.rb +0 -0
  108. data/lib/{lib/platform → platform}/apple_tv/apple_tv_1080/apple_tv_1080.rb +0 -0
  109. data/lib/{lib/platform → platform}/apple_tv/apple_tv_720/apple_tv_720.rb +0 -0
  110. data/lib/{lib/platform → platform}/dta/dta.rb +0 -0
  111. data/lib/{lib/platform → platform}/dta/dta_1080/dta_1080.rb +0 -0
  112. data/lib/{lib/platform → platform}/dta/dta_720/dta_720.rb +0 -0
  113. data/lib/{lib/platform → platform}/mdn/mdn.rb +0 -0
  114. data/lib/{lib/platform → platform}/mdn/mdn_1080/mdn_1080.rb +0 -0
  115. data/lib/{lib/platform → platform}/mdn/mdn_720/mdn_720.rb +0 -0
  116. data/lib/{lib/platform → platform}/mobile/android/android.rb +0 -0
  117. data/lib/{lib/platform → platform}/mobile/android/android_phone/android_phone.rb +0 -0
  118. data/lib/{lib/platform → platform}/mobile/android/android_tablet/android_tablet.rb +0 -0
  119. data/lib/{lib/platform → platform}/mobile/ios/ios.rb +0 -0
  120. data/lib/{lib/platform → platform}/mobile/ios/ios_phone/ios_phone.rb +0 -0
  121. data/lib/{lib/platform → platform}/mobile/ios/ios_tablet/ios_tablet.rb +0 -0
  122. data/lib/{lib/platform → platform}/mobile/mobile.rb +0 -0
  123. data/lib/{lib/platform → platform}/passport/passport.rb +0 -0
  124. data/lib/{lib/platform → platform}/passport/passport1080/passport_1080.rb +0 -0
  125. data/lib/{lib/platform → platform}/passport/passport_720/passport_720.rb +0 -0
  126. data/lib/{lib/platform → platform}/platform.rb +0 -0
  127. data/lib/{lib/platform → platform}/roku/roku.rb +0 -0
  128. data/lib/{lib/platform → platform}/roku/roku_720/roku_720.rb +0 -0
  129. data/lib/{lib/platform → platform}/roku_tv/roku_tv.rb +0 -0
  130. data/lib/{lib/platform → platform}/roku_tv/roku_tv_1080/roku_tv_1080.rb +0 -0
  131. data/lib/{lib/platform → platform}/roku_tv/roku_tv_720/roku_tv_720.rb +0 -0
  132. data/lib/{lib/platform → platform}/samsung_tv/samsung_tv.rb +0 -0
  133. data/lib/{lib/platform → platform}/samsung_tv/samsung_tv_1080/samsung_tv_1080.rb +0 -0
  134. data/lib/{lib/platform → platform}/samsung_tv/samsung_tv_720/samsung_tv_720.rb +0 -0
  135. data/lib/{lib/platform → platform}/sara/sara.rb +0 -0
  136. data/lib/{lib/platform → platform}/sara/sara_1080/sara_1080.rb +0 -0
  137. data/lib/{lib/platform → platform}/sara/sara_720/sara_720.rb +0 -0
  138. data/lib/{lib/platform → platform}/stb/iguide/iguide.rb +0 -0
  139. data/lib/{lib/platform → platform}/stb/iguide/iguide_1080/iguide_1080.rb +0 -0
  140. data/lib/{lib/platform → platform}/stb/iguide/iguide_720/iguide_720.rb +0 -0
  141. data/lib/{lib/platform → platform}/stb/odn/odn.rb +0 -0
  142. data/lib/{lib/platform → platform}/stb/odn/odn_1080/odn_1080.rb +0 -0
  143. data/lib/{lib/platform → platform}/stb/odn/odn_720/odn_720.rb +0 -0
  144. data/lib/{lib/platform → platform}/stb/odn/odn_720/odn_720_moto/odn_720_moto.rb +0 -0
  145. data/lib/{lib/platform → platform}/stb/odn/odn_720/odn_720_sa/odn_720_sa.rb +0 -0
  146. data/lib/{lib/platform → platform}/stb/odn/odn_720/odn_720_samsung/odn_720_samsung.rb +0 -0
  147. data/lib/{lib/platform → platform}/stb/spectrum/spectrum.rb +0 -0
  148. data/lib/{lib/platform → platform}/stb/spectrum/spectrum_1080/spectrum_1080.rb +0 -0
  149. data/lib/{lib/platform → platform}/stb/spectrum/spectrum_1080/spectrum_1080_docsis/spectrum_1080_docsis.rb +0 -0
  150. data/lib/{lib/platform → platform}/stb/spectrum/spectrum_1080/spectrum_1080_docsis_arris/spectrum_1080_docsis_arris.rb +0 -0
  151. data/lib/{lib/platform → platform}/stb/spectrum/spectrum_1080/spectrum_1080_docsis_humax/spectrum_1080_docsis_humax.rb +0 -0
  152. data/lib/{lib/platform → platform}/stb/spectrum/spectrum_1080/spectrum_1080_docsis_tch/spectrum_1080_docsis_tch.rb +0 -0
  153. data/lib/{lib/platform → platform}/stb/spectrum/spectrum_1080/spectrum_1080_pace/spectrum_1080_pace.rb +0 -0
  154. data/lib/{lib/platform → platform}/stb/spectrum/spectrum_720/spectrum_720.rb +0 -0
  155. data/lib/{lib/platform → platform}/stb/spectrum/spectrum_720/spectrum_720_docsis_arris/spectrum_720_docsis_arris.rb +0 -0
  156. data/lib/{lib/platform → platform}/stb/spectrum/spectrum_720/spectrum_720_docsis_humax/spectrum_720_docsis_humax.rb +0 -0
  157. data/lib/{lib/platform → platform}/stb/spectrum/spectrum_720/spectrum_720_docsis_tch/spectrum_720_docsis_tch.rb +0 -0
  158. data/lib/{lib/platform → platform}/stb/stb.rb +0 -0
  159. data/lib/{lib/platform → platform}/template.txt +0 -0
  160. data/lib/{lib/platform → platform}/tivo/tivo.rb +0 -0
  161. data/lib/{lib/platform → platform}/tivo/tivo_1080/tivo_1080.rb +0 -0
  162. data/lib/{lib/platform → platform}/tivo/tivo_720/tivo_720.rb +0 -0
  163. data/lib/{lib/platform → platform}/web/web.rb +0 -0
  164. data/lib/{lib/platform_libs → platform_libs}/roku/roku_controller.rb +0 -0
  165. data/lib/{lib/prereqs → prereqs}/prereqs.rb +0 -0
  166. data/lib/{lib/prereqs → prereqs}/prereqs_for_dut.rb +0 -0
  167. data/lib/{lib/prereqs → prereqs}/prereqs_for_test.rb +0 -0
  168. data/lib/{lib/remotes → remotes}/remotes.rb +0 -0
  169. data/lib/{lib/remotes → remotes}/stb/spectrum/spectrum_remotes.rb +0 -0
  170. data/lib/{lib/roi → roi}/black/black_roi.rb +0 -0
  171. data/lib/{lib/roi → roi}/color/color_roi.rb +0 -0
  172. data/lib/{lib/roi → roi}/image/image_roi.rb +0 -0
  173. data/lib/{lib/roi → roi}/roi.rb +0 -0
  174. data/lib/{lib/roi → roi}/template_roi.txt +0 -0
  175. data/lib/{lib/roi → roi}/text/text_roi.rb +0 -0
  176. data/lib/{lib/roi → roi}/video/video_roi.rb +0 -0
  177. data/lib/{User_Lib/rois → rois}/apple_tv/apple_tv_1080/apple_tv_1080_black_rois.rb +0 -0
  178. data/lib/{User_Lib/rois → rois}/apple_tv/apple_tv_1080/apple_tv_1080_color_rois.rb +0 -0
  179. data/lib/{User_Lib/rois → rois}/apple_tv/apple_tv_1080/apple_tv_1080_image_rois.rb +0 -0
  180. data/lib/{User_Lib/rois → rois}/apple_tv/apple_tv_1080/apple_tv_1080_rois.rb +0 -0
  181. data/lib/{User_Lib/rois → rois}/apple_tv/apple_tv_1080/apple_tv_1080_text_rois.rb +0 -0
  182. data/lib/{User_Lib/rois → rois}/apple_tv/apple_tv_1080/apple_tv_1080_video_rois.rb +2 -1
  183. data/lib/{User_Lib/rois → rois}/apple_tv/apple_tv_720/apple_tv_720_black_rois.rb +0 -0
  184. data/lib/{User_Lib/rois → rois}/apple_tv/apple_tv_720/apple_tv_720_color_rois.rb +0 -0
  185. data/lib/{User_Lib/rois → rois}/apple_tv/apple_tv_720/apple_tv_720_image_rois.rb +0 -0
  186. data/lib/{User_Lib/rois → rois}/apple_tv/apple_tv_720/apple_tv_720_rois.rb +0 -0
  187. data/lib/{User_Lib/rois → rois}/apple_tv/apple_tv_720/apple_tv_720_text_rois.rb +0 -0
  188. data/lib/{User_Lib/rois → rois}/apple_tv/apple_tv_720/apple_tv_720_video_rois.rb +0 -0
  189. data/lib/{User_Lib/rois → rois}/apple_tv/apple_tv_black_rois.rb +0 -0
  190. data/lib/{User_Lib/rois → rois}/apple_tv/apple_tv_color_rois.rb +0 -0
  191. data/lib/{User_Lib/rois → rois}/apple_tv/apple_tv_image_rois.rb +0 -0
  192. data/lib/{User_Lib/rois → rois}/apple_tv/apple_tv_rois.rb +0 -0
  193. data/lib/{User_Lib/rois → rois}/apple_tv/apple_tv_text_rois.rb +0 -0
  194. data/lib/{User_Lib/rois → rois}/apple_tv/apple_tv_video_rois.rb +0 -0
  195. data/lib/{User_Lib/rois → rois}/black_rois.rb +0 -0
  196. data/lib/{User_Lib/rois → rois}/color_rois.rb +0 -0
  197. data/lib/{User_Lib/rois → rois}/dta/dta_1080/dta_1080_black_rois.rb +0 -0
  198. data/lib/{User_Lib/rois → rois}/dta/dta_1080/dta_1080_color_rois.rb +0 -0
  199. data/lib/{User_Lib/rois → rois}/dta/dta_1080/dta_1080_image_rois.rb +0 -0
  200. data/lib/{User_Lib/rois → rois}/dta/dta_1080/dta_1080_rois.rb +0 -0
  201. data/lib/{User_Lib/rois → rois}/dta/dta_1080/dta_1080_text_rois.rb +0 -0
  202. data/lib/{User_Lib/rois → rois}/dta/dta_1080/dta_1080_video_rois.rb +0 -0
  203. data/lib/{User_Lib/rois → rois}/dta/dta_720/dta_720_black_rois.rb +0 -0
  204. data/lib/{User_Lib/rois → rois}/dta/dta_720/dta_720_color_rois.rb +0 -0
  205. data/lib/{User_Lib/rois → rois}/dta/dta_720/dta_720_image_rois.rb +0 -0
  206. data/lib/{User_Lib/rois → rois}/dta/dta_720/dta_720_rois.rb +0 -0
  207. data/lib/{User_Lib/rois → rois}/dta/dta_720/dta_720_text_rois.rb +0 -0
  208. data/lib/{User_Lib/rois → rois}/dta/dta_720/dta_720_video_rois.rb +0 -0
  209. data/lib/{User_Lib/rois → rois}/dta/dta_black_rois.rb +0 -0
  210. data/lib/{User_Lib/rois → rois}/dta/dta_color_rois.rb +0 -0
  211. data/lib/{User_Lib/rois → rois}/dta/dta_image_rois.rb +0 -0
  212. data/lib/{User_Lib/rois → rois}/dta/dta_rois.rb +0 -0
  213. data/lib/{User_Lib/rois → rois}/dta/dta_text_rois.rb +0 -0
  214. data/lib/{User_Lib/rois → rois}/dta/dta_video_rois.rb +0 -0
  215. data/lib/{User_Lib/rois → rois}/image_rois.rb +0 -0
  216. data/lib/{User_Lib/rois → rois}/mdn/mdn_1080/mdn_1080_black_rois.rb +0 -0
  217. data/lib/{User_Lib/rois → rois}/mdn/mdn_1080/mdn_1080_color_rois.rb +0 -0
  218. data/lib/{User_Lib/rois → rois}/mdn/mdn_1080/mdn_1080_image_rois.rb +0 -0
  219. data/lib/{User_Lib/rois → rois}/mdn/mdn_1080/mdn_1080_rois.rb +0 -0
  220. data/lib/{User_Lib/rois → rois}/mdn/mdn_1080/mdn_1080_text_rois.rb +0 -0
  221. data/lib/{User_Lib/rois → rois}/mdn/mdn_1080/mdn_1080_video_rois.rb +0 -0
  222. data/lib/{User_Lib/rois → rois}/mdn/mdn_720/mdn_720_black_rois.rb +0 -0
  223. data/lib/{User_Lib/rois → rois}/mdn/mdn_720/mdn_720_color_rois.rb +0 -0
  224. data/lib/{User_Lib/rois → rois}/mdn/mdn_720/mdn_720_image_rois.rb +0 -0
  225. data/lib/{User_Lib/rois → rois}/mdn/mdn_720/mdn_720_rois.rb +0 -0
  226. data/lib/{User_Lib/rois → rois}/mdn/mdn_720/mdn_720_text_rois.rb +0 -0
  227. data/lib/{User_Lib/rois → rois}/mdn/mdn_720/mdn_720_video_rois.rb +0 -0
  228. data/lib/{User_Lib/rois → rois}/mdn/mdn_black_rois.rb +0 -0
  229. data/lib/{User_Lib/rois → rois}/mdn/mdn_color_rois.rb +0 -0
  230. data/lib/{User_Lib/rois → rois}/mdn/mdn_image_rois.rb +0 -0
  231. data/lib/{User_Lib/rois → rois}/mdn/mdn_rois.rb +0 -0
  232. data/lib/{User_Lib/rois → rois}/mdn/mdn_text_rois.rb +0 -0
  233. data/lib/{User_Lib/rois → rois}/mdn/mdn_video_rois.rb +0 -0
  234. data/lib/{User_Lib/rois → rois}/mobile/android/android_black_rois.rb +0 -0
  235. data/lib/{User_Lib/rois → rois}/mobile/android/android_color_rois.rb +0 -0
  236. data/lib/{User_Lib/rois → rois}/mobile/android/android_image_rois.rb +0 -0
  237. data/lib/{User_Lib/rois → rois}/mobile/android/android_phone/android_phone_black_rois.rb +0 -0
  238. data/lib/{User_Lib/rois → rois}/mobile/android/android_phone/android_phone_color_rois.rb +0 -0
  239. data/lib/{User_Lib/rois → rois}/mobile/android/android_phone/android_phone_image_rois.rb +0 -0
  240. data/lib/{User_Lib/rois → rois}/mobile/android/android_phone/android_phone_rois.rb +0 -0
  241. data/lib/{User_Lib/rois → rois}/mobile/android/android_phone/android_phone_text_rois.rb +0 -0
  242. data/lib/{User_Lib/rois → rois}/mobile/android/android_phone/android_phone_video_rois.rb +0 -0
  243. data/lib/{User_Lib/rois → rois}/mobile/android/android_rois.rb +0 -0
  244. data/lib/{User_Lib/rois → rois}/mobile/android/android_tablet/android_tablet_black_rois.rb +0 -0
  245. data/lib/{User_Lib/rois → rois}/mobile/android/android_tablet/android_tablet_color_rois.rb +0 -0
  246. data/lib/{User_Lib/rois → rois}/mobile/android/android_tablet/android_tablet_image_rois.rb +0 -0
  247. data/lib/{User_Lib/rois → rois}/mobile/android/android_tablet/android_tablet_rois.rb +0 -0
  248. data/lib/{User_Lib/rois → rois}/mobile/android/android_tablet/android_tablet_text_rois.rb +0 -0
  249. data/lib/{User_Lib/rois → rois}/mobile/android/android_tablet/android_tablet_video_rois.rb +0 -0
  250. data/lib/{User_Lib/rois → rois}/mobile/android/android_text_rois.rb +0 -0
  251. data/lib/{User_Lib/rois → rois}/mobile/android/android_video_rois.rb +0 -0
  252. data/lib/{User_Lib/rois → rois}/mobile/ios/ios_black_rois.rb +0 -0
  253. data/lib/{User_Lib/rois → rois}/mobile/ios/ios_color_rois.rb +0 -0
  254. data/lib/{User_Lib/rois → rois}/mobile/ios/ios_image_rois.rb +0 -0
  255. data/lib/{User_Lib/rois → rois}/mobile/ios/ios_phone/ios_phone_black_rois.rb +0 -0
  256. data/lib/{User_Lib/rois → rois}/mobile/ios/ios_phone/ios_phone_color_rois.rb +0 -0
  257. data/lib/{User_Lib/rois → rois}/mobile/ios/ios_phone/ios_phone_image_rois.rb +0 -0
  258. data/lib/{User_Lib/rois → rois}/mobile/ios/ios_phone/ios_phone_rois.rb +0 -0
  259. data/lib/{User_Lib/rois → rois}/mobile/ios/ios_phone/ios_phone_text_rois.rb +0 -0
  260. data/lib/{User_Lib/rois → rois}/mobile/ios/ios_phone/ios_phone_video_rois.rb +0 -0
  261. data/lib/{User_Lib/rois → rois}/mobile/ios/ios_rois.rb +0 -0
  262. data/lib/{User_Lib/rois → rois}/mobile/ios/ios_tablet/ios_tablet_black_rois.rb +0 -0
  263. data/lib/{User_Lib/rois → rois}/mobile/ios/ios_tablet/ios_tablet_color_rois.rb +0 -0
  264. data/lib/{User_Lib/rois → rois}/mobile/ios/ios_tablet/ios_tablet_image_rois.rb +0 -0
  265. data/lib/{User_Lib/rois → rois}/mobile/ios/ios_tablet/ios_tablet_rois.rb +0 -0
  266. data/lib/{User_Lib/rois → rois}/mobile/ios/ios_tablet/ios_tablet_text_rois.rb +0 -0
  267. data/lib/{User_Lib/rois → rois}/mobile/ios/ios_tablet/ios_tablet_video_rois.rb +0 -0
  268. data/lib/{User_Lib/rois → rois}/mobile/ios/ios_text_rois.rb +0 -0
  269. data/lib/{User_Lib/rois → rois}/mobile/ios/ios_video_rois.rb +0 -0
  270. data/lib/{User_Lib/rois → rois}/mobile/mobile_black_rois.rb +0 -0
  271. data/lib/{User_Lib/rois → rois}/mobile/mobile_color_rois.rb +0 -0
  272. data/lib/{User_Lib/rois → rois}/mobile/mobile_image_rois.rb +0 -0
  273. data/lib/{User_Lib/rois → rois}/mobile/mobile_rois.rb +0 -0
  274. data/lib/{User_Lib/rois → rois}/mobile/mobile_text_rois.rb +0 -0
  275. data/lib/{User_Lib/rois → rois}/mobile/mobile_video_rois.rb +0 -0
  276. data/lib/{User_Lib/rois → rois}/passport/passport_1080/passport_1080_black_rois.rb +0 -0
  277. data/lib/{User_Lib/rois → rois}/passport/passport_1080/passport_1080_color_rois.rb +0 -0
  278. data/lib/{User_Lib/rois → rois}/passport/passport_1080/passport_1080_image_rois.rb +0 -0
  279. data/lib/{User_Lib/rois → rois}/passport/passport_1080/passport_1080_rois.rb +0 -0
  280. data/lib/{User_Lib/rois → rois}/passport/passport_1080/passport_1080_text_rois.rb +0 -0
  281. data/lib/{User_Lib/rois → rois}/passport/passport_1080/passport_1080_video_rois.rb +0 -0
  282. data/lib/{User_Lib/rois → rois}/passport/passport_720/passport_720_black_rois.rb +0 -0
  283. data/lib/{User_Lib/rois → rois}/passport/passport_720/passport_720_color_rois.rb +0 -0
  284. data/lib/{User_Lib/rois → rois}/passport/passport_720/passport_720_image_rois.rb +0 -0
  285. data/lib/{User_Lib/rois → rois}/passport/passport_720/passport_720_rois.rb +0 -0
  286. data/lib/{User_Lib/rois → rois}/passport/passport_720/passport_720_text_rois.rb +0 -0
  287. data/lib/{User_Lib/rois → rois}/passport/passport_720/passport_720_video_rois.rb +0 -0
  288. data/lib/{User_Lib/rois → rois}/passport/passport_black_rois.rb +0 -0
  289. data/lib/{User_Lib/rois → rois}/passport/passport_color_rois.rb +0 -0
  290. data/lib/{User_Lib/rois → rois}/passport/passport_image_rois.rb +0 -0
  291. data/lib/{User_Lib/rois → rois}/passport/passport_rois.rb +0 -0
  292. data/lib/{User_Lib/rois → rois}/passport/passport_text_rois.rb +0 -0
  293. data/lib/{User_Lib/rois → rois}/passport/passport_video_rois.rb +0 -0
  294. data/lib/{User_Lib/rois → rois}/rois.rb +0 -0
  295. data/lib/{User_Lib/rois → rois}/roku/roku_720/roku_720_black_rois.rb +0 -0
  296. data/lib/{User_Lib/rois → rois}/roku/roku_720/roku_720_color_rois.rb +0 -0
  297. data/lib/{User_Lib/rois → rois}/roku/roku_720/roku_720_image_rois.rb +0 -0
  298. data/lib/{User_Lib/rois → rois}/roku/roku_720/roku_720_rois.rb +0 -0
  299. data/lib/{User_Lib/rois → rois}/roku/roku_720/roku_720_text_rois.rb +0 -0
  300. data/lib/{User_Lib/rois → rois}/roku/roku_720/roku_720_video_rois.rb +0 -0
  301. data/lib/{User_Lib/rois → rois}/roku/roku_black_rois.rb +0 -0
  302. data/lib/{User_Lib/rois → rois}/roku/roku_color_rois.rb +0 -0
  303. data/lib/{User_Lib/rois → rois}/roku/roku_image_rois.rb +0 -0
  304. data/lib/{User_Lib/rois → rois}/roku/roku_rois.rb +0 -0
  305. data/lib/{User_Lib/rois → rois}/roku/roku_text_rois.rb +0 -0
  306. data/lib/{User_Lib/rois → rois}/roku/roku_video_rois.rb +0 -0
  307. data/lib/{User_Lib/rois → rois}/roku_tv/roku_tv_1080/roku_tv_1080_black_rois.rb +0 -0
  308. data/lib/{User_Lib/rois → rois}/roku_tv/roku_tv_1080/roku_tv_1080_color_rois.rb +0 -0
  309. data/lib/{User_Lib/rois → rois}/roku_tv/roku_tv_1080/roku_tv_1080_image_rois.rb +0 -0
  310. data/lib/{User_Lib/rois → rois}/roku_tv/roku_tv_1080/roku_tv_1080_rois.rb +0 -0
  311. data/lib/{User_Lib/rois → rois}/roku_tv/roku_tv_1080/roku_tv_1080_text_rois.rb +0 -0
  312. data/lib/{User_Lib/rois → rois}/roku_tv/roku_tv_1080/roku_tv_1080_video_rois.rb +0 -0
  313. data/lib/{User_Lib/rois → rois}/roku_tv/roku_tv_720/roku_tv_720_black_rois.rb +0 -0
  314. data/lib/{User_Lib/rois → rois}/roku_tv/roku_tv_720/roku_tv_720_color_rois.rb +0 -0
  315. data/lib/{User_Lib/rois → rois}/roku_tv/roku_tv_720/roku_tv_720_image_rois.rb +0 -0
  316. data/lib/{User_Lib/rois → rois}/roku_tv/roku_tv_720/roku_tv_720_rois.rb +0 -0
  317. data/lib/{User_Lib/rois → rois}/roku_tv/roku_tv_720/roku_tv_720_text_rois.rb +0 -0
  318. data/lib/{User_Lib/rois → rois}/roku_tv/roku_tv_720/roku_tv_720_video_rois.rb +0 -0
  319. data/lib/{User_Lib/rois → rois}/roku_tv/roku_tv_black_rois.rb +0 -0
  320. data/lib/{User_Lib/rois → rois}/roku_tv/roku_tv_color_rois.rb +0 -0
  321. data/lib/{User_Lib/rois → rois}/roku_tv/roku_tv_image_rois.rb +0 -0
  322. data/lib/{User_Lib/rois → rois}/roku_tv/roku_tv_rois.rb +0 -0
  323. data/lib/{User_Lib/rois → rois}/roku_tv/roku_tv_text_rois.rb +0 -0
  324. data/lib/{User_Lib/rois → rois}/roku_tv/roku_tv_video_rois.rb +0 -0
  325. data/lib/{User_Lib/rois → rois}/samsung_tv/samsung_tv_1080/samsung_tv_1080_black_rois.rb +0 -0
  326. data/lib/{User_Lib/rois → rois}/samsung_tv/samsung_tv_1080/samsung_tv_1080_color_rois.rb +0 -0
  327. data/lib/{User_Lib/rois → rois}/samsung_tv/samsung_tv_1080/samsung_tv_1080_image_rois.rb +0 -0
  328. data/lib/{User_Lib/rois → rois}/samsung_tv/samsung_tv_1080/samsung_tv_1080_rois.rb +0 -0
  329. data/lib/{User_Lib/rois → rois}/samsung_tv/samsung_tv_1080/samsung_tv_1080_text_rois.rb +0 -0
  330. data/lib/{User_Lib/rois → rois}/samsung_tv/samsung_tv_1080/samsung_tv_1080_video_rois.rb +0 -0
  331. data/lib/{User_Lib/rois → rois}/samsung_tv/samsung_tv_720/samsung_tv_720_black_rois.rb +0 -0
  332. data/lib/{User_Lib/rois → rois}/samsung_tv/samsung_tv_720/samsung_tv_720_color_rois.rb +0 -0
  333. data/lib/{User_Lib/rois → rois}/samsung_tv/samsung_tv_720/samsung_tv_720_image_rois.rb +0 -0
  334. data/lib/{User_Lib/rois → rois}/samsung_tv/samsung_tv_720/samsung_tv_720_rois.rb +0 -0
  335. data/lib/{User_Lib/rois → rois}/samsung_tv/samsung_tv_720/samsung_tv_720_text_rois.rb +0 -0
  336. data/lib/{User_Lib/rois → rois}/samsung_tv/samsung_tv_720/samsung_tv_720_video_rois.rb +0 -0
  337. data/lib/{User_Lib/rois → rois}/samsung_tv/samsung_tv_black_rois.rb +0 -0
  338. data/lib/{User_Lib/rois → rois}/samsung_tv/samsung_tv_color_rois.rb +0 -0
  339. data/lib/{User_Lib/rois → rois}/samsung_tv/samsung_tv_image_rois.rb +0 -0
  340. data/lib/{User_Lib/rois → rois}/samsung_tv/samsung_tv_rois.rb +0 -0
  341. data/lib/{User_Lib/rois → rois}/samsung_tv/samsung_tv_text_rois.rb +0 -0
  342. data/lib/{User_Lib/rois → rois}/samsung_tv/samsung_tv_video_rois.rb +0 -0
  343. data/lib/{User_Lib/rois → rois}/sara/sara_1080/sara_1080_black_rois.rb +0 -0
  344. data/lib/{User_Lib/rois → rois}/sara/sara_1080/sara_1080_color_rois.rb +0 -0
  345. data/lib/{User_Lib/rois → rois}/sara/sara_1080/sara_1080_image_rois.rb +0 -0
  346. data/lib/{User_Lib/rois → rois}/sara/sara_1080/sara_1080_rois.rb +0 -0
  347. data/lib/{User_Lib/rois → rois}/sara/sara_1080/sara_1080_text_rois.rb +0 -0
  348. data/lib/{User_Lib/rois → rois}/sara/sara_1080/sara_1080_video_rois.rb +0 -0
  349. data/lib/{User_Lib/rois → rois}/sara/sara_720/sara_720_black_rois.rb +0 -0
  350. data/lib/{User_Lib/rois → rois}/sara/sara_720/sara_720_color_rois.rb +0 -0
  351. data/lib/{User_Lib/rois → rois}/sara/sara_720/sara_720_image_rois.rb +0 -0
  352. data/lib/{User_Lib/rois → rois}/sara/sara_720/sara_720_rois.rb +0 -0
  353. data/lib/{User_Lib/rois → rois}/sara/sara_720/sara_720_text_rois.rb +0 -0
  354. data/lib/{User_Lib/rois → rois}/sara/sara_720/sara_720_video_rois.rb +0 -0
  355. data/lib/{User_Lib/rois → rois}/sara/sara_black_rois.rb +0 -0
  356. data/lib/{User_Lib/rois → rois}/sara/sara_color_rois.rb +0 -0
  357. data/lib/{User_Lib/rois → rois}/sara/sara_image_rois.rb +0 -0
  358. data/lib/{User_Lib/rois → rois}/sara/sara_rois.rb +0 -0
  359. data/lib/{User_Lib/rois → rois}/sara/sara_text_rois.rb +0 -0
  360. data/lib/{User_Lib/rois → rois}/sara/sara_video_rois.rb +0 -0
  361. data/lib/{User_Lib/rois → rois}/stb/iguide/iguide_1080/iguide_1080_black_rois.rb +0 -0
  362. data/lib/{User_Lib/rois → rois}/stb/iguide/iguide_1080/iguide_1080_color_rois.rb +0 -0
  363. data/lib/{User_Lib/rois → rois}/stb/iguide/iguide_1080/iguide_1080_image_rois.rb +0 -0
  364. data/lib/{User_Lib/rois → rois}/stb/iguide/iguide_1080/iguide_1080_rois.rb +0 -0
  365. data/lib/{User_Lib/rois → rois}/stb/iguide/iguide_1080/iguide_1080_text_rois.rb +0 -0
  366. data/lib/{User_Lib/rois → rois}/stb/iguide/iguide_1080/iguide_1080_video_rois.rb +0 -0
  367. data/lib/{User_Lib/rois → rois}/stb/iguide/iguide_720/iguide_720_black_rois.rb +0 -0
  368. data/lib/{User_Lib/rois → rois}/stb/iguide/iguide_720/iguide_720_color_rois.rb +0 -0
  369. data/lib/{User_Lib/rois → rois}/stb/iguide/iguide_720/iguide_720_image_rois.rb +0 -0
  370. data/lib/{User_Lib/rois → rois}/stb/iguide/iguide_720/iguide_720_rois.rb +0 -0
  371. data/lib/{User_Lib/rois → rois}/stb/iguide/iguide_720/iguide_720_text_rois.rb +0 -0
  372. data/lib/{User_Lib/rois → rois}/stb/iguide/iguide_720/iguide_720_video_rois.rb +0 -0
  373. data/lib/{User_Lib/rois → rois}/stb/iguide/iguide_black_rois.rb +0 -0
  374. data/lib/{User_Lib/rois → rois}/stb/iguide/iguide_color_rois.rb +0 -0
  375. data/lib/{User_Lib/rois → rois}/stb/iguide/iguide_image_rois.rb +0 -0
  376. data/lib/{User_Lib/rois → rois}/stb/iguide/iguide_rois.rb +0 -0
  377. data/lib/{User_Lib/rois → rois}/stb/iguide/iguide_text_rois.rb +0 -0
  378. data/lib/{User_Lib/rois → rois}/stb/iguide/iguide_video_rois.rb +0 -0
  379. data/lib/{User_Lib/rois → rois}/stb/odn/odn_1080/odn_1080_black_rois.rb +0 -0
  380. data/lib/{User_Lib/rois → rois}/stb/odn/odn_1080/odn_1080_color_rois.rb +0 -0
  381. data/lib/{User_Lib/rois → rois}/stb/odn/odn_1080/odn_1080_image_rois.rb +0 -0
  382. data/lib/{User_Lib/rois → rois}/stb/odn/odn_1080/odn_1080_rois.rb +0 -0
  383. data/lib/{User_Lib/rois → rois}/stb/odn/odn_1080/odn_1080_text_rois.rb +0 -0
  384. data/lib/{User_Lib/rois → rois}/stb/odn/odn_1080/odn_1080_video_rois.rb +0 -0
  385. data/lib/{User_Lib/rois → rois}/stb/odn/odn_720/odn_720_black_rois.rb +0 -0
  386. data/lib/{User_Lib/rois → rois}/stb/odn/odn_720/odn_720_color_rois.rb +0 -0
  387. data/lib/{User_Lib/rois → rois}/stb/odn/odn_720/odn_720_image_rois.rb +0 -0
  388. data/lib/{User_Lib/rois → rois}/stb/odn/odn_720/odn_720_moto/odn_720_moto_black_rois.rb +0 -0
  389. data/lib/{User_Lib/rois → rois}/stb/odn/odn_720/odn_720_moto/odn_720_moto_color_rois.rb +0 -0
  390. data/lib/{User_Lib/rois → rois}/stb/odn/odn_720/odn_720_moto/odn_720_moto_image_rois.rb +0 -0
  391. data/lib/{User_Lib/rois → rois}/stb/odn/odn_720/odn_720_moto/odn_720_moto_rois.rb +0 -0
  392. data/lib/{User_Lib/rois → rois}/stb/odn/odn_720/odn_720_moto/odn_720_moto_text_rois.rb +0 -0
  393. data/lib/{User_Lib/rois → rois}/stb/odn/odn_720/odn_720_moto/odn_720_moto_video_rois.rb +0 -0
  394. data/lib/{User_Lib/rois → rois}/stb/odn/odn_720/odn_720_rois.rb +0 -0
  395. data/lib/{User_Lib/rois → rois}/stb/odn/odn_720/odn_720_sa/odn_720_sa_black_rois.rb +0 -0
  396. data/lib/{User_Lib/rois → rois}/stb/odn/odn_720/odn_720_sa/odn_720_sa_color_rois.rb +0 -0
  397. data/lib/{User_Lib/rois → rois}/stb/odn/odn_720/odn_720_sa/odn_720_sa_image_rois.rb +0 -0
  398. data/lib/{User_Lib/rois → rois}/stb/odn/odn_720/odn_720_sa/odn_720_sa_rois.rb +0 -0
  399. data/lib/{User_Lib/rois → rois}/stb/odn/odn_720/odn_720_sa/odn_720_sa_text_rois.rb +0 -0
  400. data/lib/{User_Lib/rois → rois}/stb/odn/odn_720/odn_720_sa/odn_720_sa_video_rois.rb +0 -0
  401. data/lib/{User_Lib/rois → rois}/stb/odn/odn_720/odn_720_samsung/odn_720_samsung_black_rois.rb +0 -0
  402. data/lib/{User_Lib/rois → rois}/stb/odn/odn_720/odn_720_samsung/odn_720_samsung_color_rois.rb +0 -0
  403. data/lib/{User_Lib/rois → rois}/stb/odn/odn_720/odn_720_samsung/odn_720_samsung_image_rois.rb +0 -0
  404. data/lib/{User_Lib/rois → rois}/stb/odn/odn_720/odn_720_samsung/odn_720_samsung_rois.rb +0 -0
  405. data/lib/{User_Lib/rois → rois}/stb/odn/odn_720/odn_720_samsung/odn_720_samsung_text_rois.rb +0 -0
  406. data/lib/{User_Lib/rois → rois}/stb/odn/odn_720/odn_720_samsung/odn_720_samsung_video_rois.rb +0 -0
  407. data/lib/{User_Lib/rois → rois}/stb/odn/odn_720/odn_720_text_rois.rb +0 -0
  408. data/lib/{User_Lib/rois → rois}/stb/odn/odn_720/odn_720_video_rois.rb +0 -0
  409. data/lib/{User_Lib/rois → rois}/stb/odn/odn_black_rois.rb +0 -0
  410. data/lib/{User_Lib/rois → rois}/stb/odn/odn_color_rois.rb +0 -0
  411. data/lib/{User_Lib/rois → rois}/stb/odn/odn_image_rois.rb +0 -0
  412. data/lib/{User_Lib/rois → rois}/stb/odn/odn_rois.rb +0 -0
  413. data/lib/{User_Lib/rois → rois}/stb/odn/odn_text_rois.rb +0 -0
  414. data/lib/{User_Lib/rois → rois}/stb/odn/odn_video_rois.rb +0 -0
  415. data/lib/{User_Lib/rois → rois}/stb/spectrum/spectrum_1080/spectrum_1080_black_rois.rb +0 -0
  416. data/lib/{User_Lib/rois → rois}/stb/spectrum/spectrum_1080/spectrum_1080_color_rois.rb +0 -0
  417. data/lib/{User_Lib/rois → rois}/stb/spectrum/spectrum_1080/spectrum_1080_docsis/spectrum_1080_docsis_black_rois.rb +0 -0
  418. data/lib/{User_Lib/rois → rois}/stb/spectrum/spectrum_1080/spectrum_1080_docsis/spectrum_1080_docsis_color_rois.rb +0 -0
  419. data/lib/{User_Lib/rois → rois}/stb/spectrum/spectrum_1080/spectrum_1080_docsis/spectrum_1080_docsis_image_rois.rb +0 -0
  420. data/lib/{User_Lib/rois → rois}/stb/spectrum/spectrum_1080/spectrum_1080_docsis/spectrum_1080_docsis_rois.rb +0 -0
  421. data/lib/{User_Lib/rois → rois}/stb/spectrum/spectrum_1080/spectrum_1080_docsis/spectrum_1080_docsis_text_rois.rb +0 -0
  422. data/lib/{User_Lib/rois → rois}/stb/spectrum/spectrum_1080/spectrum_1080_docsis/spectrum_1080_docsis_video_rois.rb +0 -0
  423. data/lib/{User_Lib/rois → rois}/stb/spectrum/spectrum_1080/spectrum_1080_docsis_arris/spectrum_1080_docsis_arris_black_rois.rb +0 -0
  424. data/lib/{User_Lib/rois → rois}/stb/spectrum/spectrum_1080/spectrum_1080_docsis_arris/spectrum_1080_docsis_arris_color_rois.rb +0 -0
  425. data/lib/{User_Lib/rois → rois}/stb/spectrum/spectrum_1080/spectrum_1080_docsis_arris/spectrum_1080_docsis_arris_image_rois.rb +0 -0
  426. data/lib/{User_Lib/rois → rois}/stb/spectrum/spectrum_1080/spectrum_1080_docsis_arris/spectrum_1080_docsis_arris_rois.rb +0 -0
  427. data/lib/{User_Lib/rois → rois}/stb/spectrum/spectrum_1080/spectrum_1080_docsis_arris/spectrum_1080_docsis_arris_text_rois.rb +0 -0
  428. data/lib/{User_Lib/rois → rois}/stb/spectrum/spectrum_1080/spectrum_1080_docsis_arris/spectrum_1080_docsis_arris_video_rois.rb +0 -0
  429. data/lib/{User_Lib/rois → rois}/stb/spectrum/spectrum_1080/spectrum_1080_docsis_humax/spectrum_1080_docsis_humax_black_rois.rb +0 -0
  430. data/lib/{User_Lib/rois → rois}/stb/spectrum/spectrum_1080/spectrum_1080_docsis_humax/spectrum_1080_docsis_humax_color_rois.rb +0 -0
  431. data/lib/{User_Lib/rois → rois}/stb/spectrum/spectrum_1080/spectrum_1080_docsis_humax/spectrum_1080_docsis_humax_image_rois.rb +0 -0
  432. data/lib/{User_Lib/rois → rois}/stb/spectrum/spectrum_1080/spectrum_1080_docsis_humax/spectrum_1080_docsis_humax_rois.rb +0 -0
  433. data/lib/{User_Lib/rois → rois}/stb/spectrum/spectrum_1080/spectrum_1080_docsis_humax/spectrum_1080_docsis_humax_text_rois.rb +0 -0
  434. data/lib/{User_Lib/rois → rois}/stb/spectrum/spectrum_1080/spectrum_1080_docsis_humax/spectrum_1080_docsis_humax_video_rois.rb +0 -0
  435. data/lib/{User_Lib/rois → rois}/stb/spectrum/spectrum_1080/spectrum_1080_docsis_tch/spectrum_1080_docsis_tch_black_rois.rb +0 -0
  436. data/lib/{User_Lib/rois → rois}/stb/spectrum/spectrum_1080/spectrum_1080_docsis_tch/spectrum_1080_docsis_tch_color_rois.rb +0 -0
  437. data/lib/{User_Lib/rois → rois}/stb/spectrum/spectrum_1080/spectrum_1080_docsis_tch/spectrum_1080_docsis_tch_image_rois.rb +0 -0
  438. data/lib/{User_Lib/rois → rois}/stb/spectrum/spectrum_1080/spectrum_1080_docsis_tch/spectrum_1080_docsis_tch_rois.rb +0 -0
  439. data/lib/{User_Lib/rois → rois}/stb/spectrum/spectrum_1080/spectrum_1080_docsis_tch/spectrum_1080_docsis_tch_text_rois.rb +0 -0
  440. data/lib/{User_Lib/rois → rois}/stb/spectrum/spectrum_1080/spectrum_1080_docsis_tch/spectrum_1080_docsis_tch_video_rois.rb +0 -0
  441. data/lib/{User_Lib/rois → rois}/stb/spectrum/spectrum_1080/spectrum_1080_image_rois.rb +0 -0
  442. data/lib/{User_Lib/rois → rois}/stb/spectrum/spectrum_1080/spectrum_1080_pace/spectrum_1080_pace_black_rois.rb +0 -0
  443. data/lib/{User_Lib/rois → rois}/stb/spectrum/spectrum_1080/spectrum_1080_pace/spectrum_1080_pace_color_rois.rb +0 -0
  444. data/lib/{User_Lib/rois → rois}/stb/spectrum/spectrum_1080/spectrum_1080_pace/spectrum_1080_pace_image_rois.rb +0 -0
  445. data/lib/{User_Lib/rois → rois}/stb/spectrum/spectrum_1080/spectrum_1080_pace/spectrum_1080_pace_rois.rb +0 -0
  446. data/lib/{User_Lib/rois → rois}/stb/spectrum/spectrum_1080/spectrum_1080_pace/spectrum_1080_pace_text_rois.rb +0 -0
  447. data/lib/{User_Lib/rois → rois}/stb/spectrum/spectrum_1080/spectrum_1080_pace/spectrum_1080_pace_video_rois.rb +0 -0
  448. data/lib/{User_Lib/rois → rois}/stb/spectrum/spectrum_1080/spectrum_1080_rois.rb +0 -0
  449. data/lib/{User_Lib/rois → rois}/stb/spectrum/spectrum_1080/spectrum_1080_text_rois.rb +0 -0
  450. data/lib/{User_Lib/rois → rois}/stb/spectrum/spectrum_1080/spectrum_1080_video_rois.rb +0 -0
  451. data/lib/{User_Lib/rois → rois}/stb/spectrum/spectrum_720/spectrum_720_black_rois.rb +0 -0
  452. data/lib/{User_Lib/rois → rois}/stb/spectrum/spectrum_720/spectrum_720_color_rois.rb +0 -0
  453. data/lib/{User_Lib/rois → rois}/stb/spectrum/spectrum_720/spectrum_720_docsis_arris/spectrum_720_docsis_arris_black_rois.rb +0 -0
  454. data/lib/{User_Lib/rois → rois}/stb/spectrum/spectrum_720/spectrum_720_docsis_arris/spectrum_720_docsis_arris_color_rois.rb +0 -0
  455. data/lib/{User_Lib/rois → rois}/stb/spectrum/spectrum_720/spectrum_720_docsis_arris/spectrum_720_docsis_arris_image_rois.rb +0 -0
  456. data/lib/{User_Lib/rois → rois}/stb/spectrum/spectrum_720/spectrum_720_docsis_arris/spectrum_720_docsis_arris_rois.rb +0 -0
  457. data/lib/{User_Lib/rois → rois}/stb/spectrum/spectrum_720/spectrum_720_docsis_arris/spectrum_720_docsis_arris_text_rois.rb +0 -0
  458. data/lib/{User_Lib/rois → rois}/stb/spectrum/spectrum_720/spectrum_720_docsis_arris/spectrum_720_docsis_arris_video_rois.rb +0 -0
  459. data/lib/{User_Lib/rois → rois}/stb/spectrum/spectrum_720/spectrum_720_docsis_humax/spectrum_720_docsis_humax_black_rois.rb +0 -0
  460. data/lib/{User_Lib/rois → rois}/stb/spectrum/spectrum_720/spectrum_720_docsis_humax/spectrum_720_docsis_humax_color_rois.rb +0 -0
  461. data/lib/{User_Lib/rois → rois}/stb/spectrum/spectrum_720/spectrum_720_docsis_humax/spectrum_720_docsis_humax_image_rois.rb +0 -0
  462. data/lib/{User_Lib/rois → rois}/stb/spectrum/spectrum_720/spectrum_720_docsis_humax/spectrum_720_docsis_humax_rois.rb +0 -0
  463. data/lib/{User_Lib/rois → rois}/stb/spectrum/spectrum_720/spectrum_720_docsis_humax/spectrum_720_docsis_humax_text_rois.rb +0 -0
  464. data/lib/{User_Lib/rois → rois}/stb/spectrum/spectrum_720/spectrum_720_docsis_humax/spectrum_720_docsis_humax_video_rois.rb +0 -0
  465. data/lib/{User_Lib/rois → rois}/stb/spectrum/spectrum_720/spectrum_720_docsis_tch/spectrum_720_docsis_tch_black_rois.rb +0 -0
  466. data/lib/{User_Lib/rois → rois}/stb/spectrum/spectrum_720/spectrum_720_docsis_tch/spectrum_720_docsis_tch_color_rois.rb +0 -0
  467. data/lib/{User_Lib/rois → rois}/stb/spectrum/spectrum_720/spectrum_720_docsis_tch/spectrum_720_docsis_tch_image_rois.rb +0 -0
  468. data/lib/{User_Lib/rois → rois}/stb/spectrum/spectrum_720/spectrum_720_docsis_tch/spectrum_720_docsis_tch_rois.rb +0 -0
  469. data/lib/{User_Lib/rois → rois}/stb/spectrum/spectrum_720/spectrum_720_docsis_tch/spectrum_720_docsis_tch_text_rois.rb +0 -0
  470. data/lib/{User_Lib/rois → rois}/stb/spectrum/spectrum_720/spectrum_720_docsis_tch/spectrum_720_docsis_tch_video_rois.rb +0 -0
  471. data/lib/{User_Lib/rois → rois}/stb/spectrum/spectrum_720/spectrum_720_image_rois.rb +0 -0
  472. data/lib/{User_Lib/rois → rois}/stb/spectrum/spectrum_720/spectrum_720_rois.rb +0 -0
  473. data/lib/{User_Lib/rois → rois}/stb/spectrum/spectrum_720/spectrum_720_text_rois.rb +0 -0
  474. data/lib/{User_Lib/rois → rois}/stb/spectrum/spectrum_720/spectrum_720_video_rois.rb +0 -0
  475. data/lib/{User_Lib/rois → rois}/stb/spectrum/spectrum_black_rois.rb +0 -0
  476. data/lib/{User_Lib/rois → rois}/stb/spectrum/spectrum_color_rois.rb +0 -0
  477. data/lib/{User_Lib/rois → rois}/stb/spectrum/spectrum_image_rois.rb +0 -0
  478. data/lib/{User_Lib/rois → rois}/stb/spectrum/spectrum_rois.rb +0 -0
  479. data/lib/{User_Lib/rois → rois}/stb/spectrum/spectrum_text_rois.rb +0 -0
  480. data/lib/{User_Lib/rois → rois}/stb/spectrum/spectrum_video_rois.rb +0 -0
  481. data/lib/{User_Lib/rois → rois}/stb/stb_black_rois.rb +0 -0
  482. data/lib/{User_Lib/rois → rois}/stb/stb_color_rois.rb +0 -0
  483. data/lib/{User_Lib/rois → rois}/stb/stb_image_rois.rb +0 -0
  484. data/lib/{User_Lib/rois → rois}/stb/stb_rois.rb +0 -0
  485. data/lib/{User_Lib/rois → rois}/stb/stb_text_rois.rb +0 -0
  486. data/lib/{User_Lib/rois → rois}/stb/stb_video_rois.rb +0 -0
  487. data/lib/{User_Lib/rois → rois}/template.txt +0 -0
  488. data/lib/{User_Lib/rois → rois}/text_rois.rb +0 -0
  489. data/lib/{User_Lib/rois → rois}/tivo/tivo_1080/tivo_1080_black_rois.rb +0 -0
  490. data/lib/{User_Lib/rois → rois}/tivo/tivo_1080/tivo_1080_color_rois.rb +0 -0
  491. data/lib/{User_Lib/rois → rois}/tivo/tivo_1080/tivo_1080_image_rois.rb +0 -0
  492. data/lib/{User_Lib/rois → rois}/tivo/tivo_1080/tivo_1080_rois.rb +0 -0
  493. data/lib/{User_Lib/rois → rois}/tivo/tivo_1080/tivo_1080_text_rois.rb +0 -0
  494. data/lib/{User_Lib/rois → rois}/tivo/tivo_1080/tivo_1080_video_rois.rb +0 -0
  495. data/lib/{User_Lib/rois → rois}/tivo/tivo_720/tivo_720_black_rois.rb +0 -0
  496. data/lib/{User_Lib/rois → rois}/tivo/tivo_720/tivo_720_color_rois.rb +0 -0
  497. data/lib/{User_Lib/rois → rois}/tivo/tivo_720/tivo_720_image_rois.rb +0 -0
  498. data/lib/{User_Lib/rois → rois}/tivo/tivo_720/tivo_720_rois.rb +0 -0
  499. data/lib/{User_Lib/rois → rois}/tivo/tivo_720/tivo_720_text_rois.rb +0 -0
  500. data/lib/{User_Lib/rois → rois}/tivo/tivo_720/tivo_720_video_rois.rb +0 -0
  501. data/lib/{User_Lib/rois → rois}/tivo/tivo_black_rois.rb +0 -0
  502. data/lib/{User_Lib/rois → rois}/tivo/tivo_color_rois.rb +0 -0
  503. data/lib/{User_Lib/rois → rois}/tivo/tivo_image_rois.rb +0 -0
  504. data/lib/{User_Lib/rois → rois}/tivo/tivo_rois.rb +0 -0
  505. data/lib/{User_Lib/rois → rois}/tivo/tivo_text_rois.rb +0 -0
  506. data/lib/{User_Lib/rois → rois}/tivo/tivo_video_rois.rb +0 -0
  507. data/lib/{User_Lib/rois → rois}/video_rois.rb +0 -0
  508. data/lib/{lib/screen → screen}/screen.rb +0 -0
  509. data/lib/{lib/screen → screen}/template.txt +0 -0
  510. data/lib/{lib/screen → screen}/template_screen.txt +0 -0
  511. data/lib/{lib/screens → screens}/apple_tv/apple_tv_screens.rb +0 -0
  512. data/lib/{lib/screens → screens}/dta/dta_screens.rb +0 -0
  513. data/lib/{lib/screens → screens}/mdn/mdn_screens.rb +0 -0
  514. data/lib/{lib/screens → screens}/mobile/android/android_phone/android_phone_screens.rb +0 -0
  515. data/lib/{lib/screens → screens}/mobile/android/android_screens.rb +0 -0
  516. data/lib/{lib/screens → screens}/mobile/android/android_tablet/android_tablet_screens.rb +0 -0
  517. data/lib/{lib/screens → screens}/mobile/ios/ios_phone/ios_phone_screens.rb +0 -0
  518. data/lib/{lib/screens → screens}/mobile/ios/ios_screens.rb +0 -0
  519. data/lib/{lib/screens → screens}/mobile/ios/ios_tablet/ios_tablet_screens.rb +0 -0
  520. data/lib/{lib/screens → screens}/mobile/mobile_screens.rb +0 -0
  521. data/lib/{lib/screens → screens}/passport/passport_screens.rb +0 -0
  522. data/lib/{lib/screens → screens}/roku/roku_screens.rb +0 -0
  523. data/lib/{lib/screens → screens}/roku_tv/roku_tv_screens.rb +0 -0
  524. data/lib/{lib/screens → screens}/samsung_tv/samsung_tv_screens.rb +0 -0
  525. data/lib/{lib/screens → screens}/sara/sara_screens.rb +0 -0
  526. data/lib/{lib/screens → screens}/screens.rb +0 -0
  527. data/lib/{lib/screens → screens}/stb/iguide/iguide_1080/iguide_1080_screens.rb +0 -0
  528. data/lib/{lib/screens → screens}/stb/iguide/iguide_720/iguide_720_screens.rb +0 -0
  529. data/lib/{lib/screens → screens}/stb/iguide/iguide_screens.rb +0 -0
  530. data/lib/{lib/screens → screens}/stb/odn/odn_screens.rb +0 -0
  531. data/lib/{lib/screens → screens}/stb/spectrum/spectrum_docsis/spectrum_1080_docsis_screens.rb +0 -0
  532. data/lib/{lib/screens → screens}/stb/spectrum/spectrum_screens.rb +0 -0
  533. data/lib/{lib/screens → screens}/stb/stb_screens.rb +0 -0
  534. data/lib/{lib/screens → screens}/template.txt +0 -0
  535. data/lib/{lib/screens → screens}/tivo/tivo_screens.rb +0 -0
  536. data/lib/{lib/selenium → selenium}/appium/appium.rb +0 -0
  537. data/lib/{lib/selenium → selenium}/selenium.rb +0 -0
  538. data/lib/{lib/selenium → selenium}/webdriver/webdriver.rb +0 -0
  539. data/lib/{lib/test_case → test_case}/boilerplate/functional.rb +0 -0
  540. data/lib/{lib/test_case → test_case}/boilerplate/performance.rb +0 -0
  541. data/lib/{lib/test_case → test_case}/ci_test.rb +0 -0
  542. data/lib/{lib/test_case → test_case}/functional_test_case.rb +0 -0
  543. data/lib/{lib/test_case → test_case}/make_boilerplate.rb +0 -0
  544. data/lib/{lib/test_case → test_case}/monitoring/apple_monitor.rb +0 -0
  545. data/lib/{lib/test_case → test_case}/monitoring/base_monitor.rb +0 -0
  546. data/lib/{lib/test_case → test_case}/monitoring/dta_monitor.rb +0 -0
  547. data/lib/{lib/test_case → test_case}/monitoring/iguide_monitor.rb +0 -0
  548. data/lib/{lib/test_case → test_case}/monitoring/mdn_monitor.rb +0 -0
  549. data/lib/{lib/test_case → test_case}/monitoring/monitoring_test.rb +0 -0
  550. data/lib/{lib/test_case → test_case}/monitoring/odn_monitor.rb +0 -0
  551. data/lib/{lib/test_case → test_case}/monitoring/passport_monitor.rb +0 -0
  552. data/lib/{lib/test_case → test_case}/monitoring/report_monitor.rb +0 -0
  553. data/lib/{lib/test_case → test_case}/monitoring/roku_monitor.rb +0 -0
  554. data/lib/{lib/test_case → test_case}/monitoring/sara_monitor.rb +0 -0
  555. data/lib/{lib/test_case → test_case}/monitoring/spec_monitor.rb +0 -0
  556. data/lib/{lib/test_case → test_case}/performance_test_case.rb +0 -0
  557. data/lib/{lib/test_case → test_case}/test_case.rb +0 -0
  558. data/lib/{lib/test_case → test_case}/test_error.rb +0 -0
  559. data/lib/{lib/test_case → test_case}/test_exception.rb +0 -0
  560. data/lib/{lib/test_case → test_case}/test_status.rb +0 -0
  561. data/lib/{lib/test_case → test_case}/test_step.rb +0 -0
  562. data/lib/{lib/test_case → test_case}/test_trace.rb +0 -0
  563. data/lib/{lib/test_data.rb → test_data.rb} +0 -0
  564. data/lib/test_wrapper.rb +95 -0
  565. data/{lib/misc → misc}/get_latest_android.sh +0 -0
  566. data/{lib/misc → misc}/get_latest_ios.sh +0 -0
  567. data/{lib/package-lock.json → package-lock.json} +0 -0
  568. data/{lib/syntax_eval.rb → syntax_eval.rb} +27 -35
  569. data/tmc-core.gemspec +9 -0
  570. data/{lib/tools → tools}/convert_old_scripts.rb +0 -0
  571. data/{lib/tools → tools}/find_duplicate_rois.rb +0 -0
  572. data/{lib/tools → tools}/roku/inspector.rb +0 -0
  573. data/{lib/tools → tools}/syntax_checker.rb +2 -4
  574. data/{lib/upload_ref_images.rb → upload_ref_images.rb} +0 -0
  575. metadata +576 -873
  576. data/lib/User_Lib/helpers/helpers.rb +0 -13
  577. data/lib/User_Lib/screen/apple_tv/apple_tv_dvr.rb +0 -25
  578. data/lib/User_Lib/screen/apple_tv/apple_tv_guide.rb +0 -25
  579. data/lib/User_Lib/screen/apple_tv/apple_tv_library.rb +0 -25
  580. data/lib/User_Lib/screen/apple_tv/apple_tv_live_tv.rb +0 -17
  581. data/lib/User_Lib/screen/apple_tv/apple_tv_login.rb +0 -24
  582. data/lib/User_Lib/screen/apple_tv/apple_tv_main_menu.rb +0 -25
  583. data/lib/User_Lib/screen/apple_tv/apple_tv_mini_guide.rb +0 -25
  584. data/lib/User_Lib/screen/apple_tv/apple_tv_movies.rb +0 -25
  585. data/lib/User_Lib/screen/apple_tv/apple_tv_on_demand.rb +0 -25
  586. data/lib/User_Lib/screen/apple_tv/apple_tv_parental_controls.rb +0 -25
  587. data/lib/User_Lib/screen/apple_tv/apple_tv_product_page.rb +0 -25
  588. data/lib/User_Lib/screen/apple_tv/apple_tv_screen.rb +0 -23
  589. data/lib/User_Lib/screen/apple_tv/apple_tv_search.rb +0 -31
  590. data/lib/User_Lib/screen/apple_tv/apple_tv_settings.rb +0 -25
  591. data/lib/User_Lib/screen/apple_tv/apple_tv_tv_shows.rb +0 -25
  592. data/lib/User_Lib/screen/apple_tv/apple_tv_video_store.rb +0 -25
  593. data/lib/User_Lib/screen/dta/dta_dvr.rb +0 -26
  594. data/lib/User_Lib/screen/dta/dta_guide.rb +0 -26
  595. data/lib/User_Lib/screen/dta/dta_library.rb +0 -26
  596. data/lib/User_Lib/screen/dta/dta_live_tv.rb +0 -26
  597. data/lib/User_Lib/screen/dta/dta_log_in.rb +0 -26
  598. data/lib/User_Lib/screen/dta/dta_main_menu.rb +0 -26
  599. data/lib/User_Lib/screen/dta/dta_mini_guide.rb +0 -26
  600. data/lib/User_Lib/screen/dta/dta_movies.rb +0 -26
  601. data/lib/User_Lib/screen/dta/dta_on_demand.rb +0 -26
  602. data/lib/User_Lib/screen/dta/dta_parental_controls.rb +0 -26
  603. data/lib/User_Lib/screen/dta/dta_product_page.rb +0 -26
  604. data/lib/User_Lib/screen/dta/dta_screen.rb +0 -24
  605. data/lib/User_Lib/screen/dta/dta_search.rb +0 -26
  606. data/lib/User_Lib/screen/dta/dta_settings.rb +0 -26
  607. data/lib/User_Lib/screen/dta/dta_tv_shows.rb +0 -26
  608. data/lib/User_Lib/screen/dta/dta_video_store.rb +0 -26
  609. data/lib/User_Lib/screen/mdn/mdn_dvr.rb +0 -26
  610. data/lib/User_Lib/screen/mdn/mdn_guide.rb +0 -26
  611. data/lib/User_Lib/screen/mdn/mdn_library.rb +0 -26
  612. data/lib/User_Lib/screen/mdn/mdn_live_tv.rb +0 -26
  613. data/lib/User_Lib/screen/mdn/mdn_log_in.rb +0 -26
  614. data/lib/User_Lib/screen/mdn/mdn_main_menu.rb +0 -26
  615. data/lib/User_Lib/screen/mdn/mdn_mini_guide.rb +0 -26
  616. data/lib/User_Lib/screen/mdn/mdn_movies.rb +0 -26
  617. data/lib/User_Lib/screen/mdn/mdn_on_demand.rb +0 -26
  618. data/lib/User_Lib/screen/mdn/mdn_parental_controls.rb +0 -26
  619. data/lib/User_Lib/screen/mdn/mdn_product_page.rb +0 -26
  620. data/lib/User_Lib/screen/mdn/mdn_screen.rb +0 -24
  621. data/lib/User_Lib/screen/mdn/mdn_search.rb +0 -26
  622. data/lib/User_Lib/screen/mdn/mdn_settings.rb +0 -26
  623. data/lib/User_Lib/screen/mdn/mdn_tv_shows.rb +0 -26
  624. data/lib/User_Lib/screen/mdn/mdn_video_store.rb +0 -26
  625. data/lib/User_Lib/screen/mobile/android/android_devices.rb +0 -35
  626. data/lib/User_Lib/screen/mobile/android/android_dvr.rb +0 -337
  627. data/lib/User_Lib/screen/mobile/android/android_favorites.rb +0 -164
  628. data/lib/User_Lib/screen/mobile/android/android_guide.rb +0 -256
  629. data/lib/User_Lib/screen/mobile/android/android_live_tv.rb +0 -372
  630. data/lib/User_Lib/screen/mobile/android/android_login.rb +0 -111
  631. data/lib/User_Lib/screen/mobile/android/android_main_menu.rb +0 -53
  632. data/lib/User_Lib/screen/mobile/android/android_on_demand.rb +0 -402
  633. data/lib/User_Lib/screen/mobile/android/android_parental_controls.rb +0 -73
  634. data/lib/User_Lib/screen/mobile/android/android_phone/android_phone_dvr.rb +0 -31
  635. data/lib/User_Lib/screen/mobile/android/android_phone/android_phone_guide.rb +0 -39
  636. data/lib/User_Lib/screen/mobile/android/android_phone/android_phone_live_tv.rb +0 -104
  637. data/lib/User_Lib/screen/mobile/android/android_phone/android_phone_main_menu.rb +0 -27
  638. data/lib/User_Lib/screen/mobile/android/android_phone/android_phone_on_demand.rb +0 -35
  639. data/lib/User_Lib/screen/mobile/android/android_phone/android_phone_product_page.rb +0 -7
  640. data/lib/User_Lib/screen/mobile/android/android_phone/android_phone_search.rb +0 -26
  641. data/lib/User_Lib/screen/mobile/android/android_privacy_legal.rb +0 -54
  642. data/lib/User_Lib/screen/mobile/android/android_product_page.rb +0 -484
  643. data/lib/User_Lib/screen/mobile/android/android_screen.rb +0 -56
  644. data/lib/User_Lib/screen/mobile/android/android_search.rb +0 -39
  645. data/lib/User_Lib/screen/mobile/android/android_settings.rb +0 -90
  646. data/lib/User_Lib/screen/mobile/android/android_tablet/android_tablet_dvr.rb +0 -58
  647. data/lib/User_Lib/screen/mobile/android/android_tablet/android_tablet_guide.rb +0 -24
  648. data/lib/User_Lib/screen/mobile/android/android_tablet/android_tablet_live_tv.rb +0 -24
  649. data/lib/User_Lib/screen/mobile/android/android_tablet/android_tablet_main_menu.rb +0 -19
  650. data/lib/User_Lib/screen/mobile/android/android_tablet/android_tablet_on_demand.rb +0 -16
  651. data/lib/User_Lib/screen/mobile/android/android_tablet/android_tablet_product_page.rb +0 -45
  652. data/lib/User_Lib/screen/mobile/android/android_tablet/android_tablet_search.rb +0 -14
  653. data/lib/User_Lib/screen/mobile/devices_mobile.rb +0 -53
  654. data/lib/User_Lib/screen/mobile/dvr_mobile.rb +0 -5
  655. data/lib/User_Lib/screen/mobile/favorites_mobile.rb +0 -5
  656. data/lib/User_Lib/screen/mobile/guide_mobile.rb +0 -5
  657. data/lib/User_Lib/screen/mobile/ios/ios_devices.rb +0 -43
  658. data/lib/User_Lib/screen/mobile/ios/ios_dvr.rb +0 -231
  659. data/lib/User_Lib/screen/mobile/ios/ios_favorites.rb +0 -79
  660. data/lib/User_Lib/screen/mobile/ios/ios_guide.rb +0 -53
  661. data/lib/User_Lib/screen/mobile/ios/ios_live_tv.rb +0 -413
  662. data/lib/User_Lib/screen/mobile/ios/ios_login.rb +0 -76
  663. data/lib/User_Lib/screen/mobile/ios/ios_main_menu.rb +0 -38
  664. data/lib/User_Lib/screen/mobile/ios/ios_on_demand.rb +0 -371
  665. data/lib/User_Lib/screen/mobile/ios/ios_parental_controls.rb +0 -104
  666. data/lib/User_Lib/screen/mobile/ios/ios_phone/ios_phone_dvr.rb +0 -14
  667. data/lib/User_Lib/screen/mobile/ios/ios_phone/ios_phone_live_tv.rb +0 -36
  668. data/lib/User_Lib/screen/mobile/ios/ios_phone/ios_phone_main_menu.rb +0 -7
  669. data/lib/User_Lib/screen/mobile/ios/ios_phone/ios_phone_on_demand.rb +0 -7
  670. data/lib/User_Lib/screen/mobile/ios/ios_phone/ios_phone_search.rb +0 -13
  671. data/lib/User_Lib/screen/mobile/ios/ios_privacy_legal.rb +0 -56
  672. data/lib/User_Lib/screen/mobile/ios/ios_product_page.rb +0 -441
  673. data/lib/User_Lib/screen/mobile/ios/ios_screen.rb +0 -60
  674. data/lib/User_Lib/screen/mobile/ios/ios_search.rb +0 -145
  675. data/lib/User_Lib/screen/mobile/ios/ios_settings.rb +0 -34
  676. data/lib/User_Lib/screen/mobile/ios/ios_tablet/ios_tablet_live_tv.rb +0 -34
  677. data/lib/User_Lib/screen/mobile/ios/ios_tablet/ios_tablet_main_menu.rb +0 -7
  678. data/lib/User_Lib/screen/mobile/ios/ios_tablet/ios_tablet_on_demand.rb +0 -7
  679. data/lib/User_Lib/screen/mobile/ios/ios_tablet/ios_tablet_search.rb +0 -13
  680. data/lib/User_Lib/screen/mobile/live_tv_mobile.rb +0 -73
  681. data/lib/User_Lib/screen/mobile/login_mobile.rb +0 -5
  682. data/lib/User_Lib/screen/mobile/main_menu_mobile.rb +0 -83
  683. data/lib/User_Lib/screen/mobile/mobile_screen.rb +0 -232
  684. data/lib/User_Lib/screen/mobile/on_demand_mobile.rb +0 -70
  685. data/lib/User_Lib/screen/mobile/parental_controls_mobile.rb +0 -5
  686. data/lib/User_Lib/screen/mobile/privacy_legal_mobile.rb +0 -5
  687. data/lib/User_Lib/screen/mobile/product_page_mobile.rb +0 -5
  688. data/lib/User_Lib/screen/mobile/search_mobile.rb +0 -5
  689. data/lib/User_Lib/screen/mobile/settings_mobile.rb +0 -33
  690. data/lib/User_Lib/screen/passport/passport_dvr.rb +0 -25
  691. data/lib/User_Lib/screen/passport/passport_guide.rb +0 -37
  692. data/lib/User_Lib/screen/passport/passport_library.rb +0 -25
  693. data/lib/User_Lib/screen/passport/passport_live_tv.rb +0 -17
  694. data/lib/User_Lib/screen/passport/passport_main_menu.rb +0 -25
  695. data/lib/User_Lib/screen/passport/passport_mini_guide.rb +0 -25
  696. data/lib/User_Lib/screen/passport/passport_movies.rb +0 -25
  697. data/lib/User_Lib/screen/passport/passport_on_demand.rb +0 -25
  698. data/lib/User_Lib/screen/passport/passport_parental_controls.rb +0 -25
  699. data/lib/User_Lib/screen/passport/passport_product_page.rb +0 -25
  700. data/lib/User_Lib/screen/passport/passport_screen.rb +0 -23
  701. data/lib/User_Lib/screen/passport/passport_search.rb +0 -25
  702. data/lib/User_Lib/screen/passport/passport_settings.rb +0 -25
  703. data/lib/User_Lib/screen/passport/passport_tv_shows.rb +0 -25
  704. data/lib/User_Lib/screen/passport/passport_video_store.rb +0 -25
  705. data/lib/User_Lib/screen/roku/brs/roku_guide_brs.rb +0 -12
  706. data/lib/User_Lib/screen/roku/brs/roku_home_brs.rb +0 -12
  707. data/lib/User_Lib/screen/roku/brs/roku_live_tv_brs.rb +0 -12
  708. data/lib/User_Lib/screen/roku/brs/roku_login_brs.rb +0 -103
  709. data/lib/User_Lib/screen/roku/brs/roku_main_menu_brs.rb +0 -46
  710. data/lib/User_Lib/screen/roku/brs/roku_on_demand_brs.rb +0 -12
  711. data/lib/User_Lib/screen/roku/brs/roku_product_page_brs.rb +0 -12
  712. data/lib/User_Lib/screen/roku/brs/roku_screen_brs.rb +0 -9
  713. data/lib/User_Lib/screen/roku/brs/roku_search_brs.rb +0 -12
  714. data/lib/User_Lib/screen/roku/brs/roku_settings_brs.rb +0 -42
  715. data/lib/User_Lib/screen/roku/brs/roku_watch_later_brs.rb +0 -12
  716. data/lib/User_Lib/screen/roku/brs/roku_welcome_brs.rb +0 -12
  717. data/lib/User_Lib/screen/roku/roku_dvr.rb +0 -7
  718. data/lib/User_Lib/screen/roku/roku_guide.rb +0 -590
  719. data/lib/User_Lib/screen/roku/roku_home.rb +0 -346
  720. data/lib/User_Lib/screen/roku/roku_library.rb +0 -26
  721. data/lib/User_Lib/screen/roku/roku_live_tv.rb +0 -210
  722. data/lib/User_Lib/screen/roku/roku_login.rb +0 -795
  723. data/lib/User_Lib/screen/roku/roku_main_menu.rb +0 -425
  724. data/lib/User_Lib/screen/roku/roku_mini_guide.rb +0 -7
  725. data/lib/User_Lib/screen/roku/roku_on_demand.rb +0 -479
  726. data/lib/User_Lib/screen/roku/roku_product_page.rb +0 -483
  727. data/lib/User_Lib/screen/roku/roku_screen.rb +0 -85
  728. data/lib/User_Lib/screen/roku/roku_search.rb +0 -229
  729. data/lib/User_Lib/screen/roku/roku_settings.rb +0 -304
  730. data/lib/User_Lib/screen/roku/roku_watch_later.rb +0 -51
  731. data/lib/User_Lib/screen/roku/roku_welcome.rb +0 -10
  732. data/lib/User_Lib/screen/roku_tv/roku_tv_dvr.rb +0 -14
  733. data/lib/User_Lib/screen/roku_tv/roku_tv_guide.rb +0 -14
  734. data/lib/User_Lib/screen/roku_tv/roku_tv_home.rb +0 -14
  735. data/lib/User_Lib/screen/roku_tv/roku_tv_library.rb +0 -14
  736. data/lib/User_Lib/screen/roku_tv/roku_tv_live_tv.rb +0 -14
  737. data/lib/User_Lib/screen/roku_tv/roku_tv_login.rb +0 -14
  738. data/lib/User_Lib/screen/roku_tv/roku_tv_main_menu.rb +0 -14
  739. data/lib/User_Lib/screen/roku_tv/roku_tv_mini_guide.rb +0 -14
  740. data/lib/User_Lib/screen/roku_tv/roku_tv_on_demand.rb +0 -26
  741. data/lib/User_Lib/screen/roku_tv/roku_tv_product_page.rb +0 -14
  742. data/lib/User_Lib/screen/roku_tv/roku_tv_screen.rb +0 -7
  743. data/lib/User_Lib/screen/roku_tv/roku_tv_search.rb +0 -14
  744. data/lib/User_Lib/screen/roku_tv/roku_tv_settings.rb +0 -14
  745. data/lib/User_Lib/screen/roku_tv/roku_tv_watch_later.rb +0 -14
  746. data/lib/User_Lib/screen/roku_tv/roku_tv_welcome.rb +0 -14
  747. data/lib/User_Lib/screen/samsung_tv/samsung_tv_dvr.rb +0 -24
  748. data/lib/User_Lib/screen/samsung_tv/samsung_tv_guide.rb +0 -24
  749. data/lib/User_Lib/screen/samsung_tv/samsung_tv_library.rb +0 -24
  750. data/lib/User_Lib/screen/samsung_tv/samsung_tv_live_tv.rb +0 -21
  751. data/lib/User_Lib/screen/samsung_tv/samsung_tv_login.rb +0 -13
  752. data/lib/User_Lib/screen/samsung_tv/samsung_tv_main_menu.rb +0 -64
  753. data/lib/User_Lib/screen/samsung_tv/samsung_tv_mini_guide.rb +0 -24
  754. data/lib/User_Lib/screen/samsung_tv/samsung_tv_movies.rb +0 -140
  755. data/lib/User_Lib/screen/samsung_tv/samsung_tv_on_demand.rb +0 -76
  756. data/lib/User_Lib/screen/samsung_tv/samsung_tv_parental_controls.rb +0 -24
  757. data/lib/User_Lib/screen/samsung_tv/samsung_tv_product_page.rb +0 -24
  758. data/lib/User_Lib/screen/samsung_tv/samsung_tv_screen.rb +0 -74
  759. data/lib/User_Lib/screen/samsung_tv/samsung_tv_search.rb +0 -29
  760. data/lib/User_Lib/screen/samsung_tv/samsung_tv_settings.rb +0 -189
  761. data/lib/User_Lib/screen/samsung_tv/samsung_tv_tv_shows.rb +0 -24
  762. data/lib/User_Lib/screen/samsung_tv/samsung_tv_video_store.rb +0 -24
  763. data/lib/User_Lib/screen/sara/sara_dvr.rb +0 -26
  764. data/lib/User_Lib/screen/sara/sara_guide.rb +0 -43
  765. data/lib/User_Lib/screen/sara/sara_library.rb +0 -26
  766. data/lib/User_Lib/screen/sara/sara_live_tv.rb +0 -26
  767. data/lib/User_Lib/screen/sara/sara_log_in.rb +0 -26
  768. data/lib/User_Lib/screen/sara/sara_main_menu.rb +0 -26
  769. data/lib/User_Lib/screen/sara/sara_mini_guide.rb +0 -26
  770. data/lib/User_Lib/screen/sara/sara_movies.rb +0 -26
  771. data/lib/User_Lib/screen/sara/sara_on_demand.rb +0 -26
  772. data/lib/User_Lib/screen/sara/sara_parental_controls.rb +0 -26
  773. data/lib/User_Lib/screen/sara/sara_product_page.rb +0 -26
  774. data/lib/User_Lib/screen/sara/sara_screen.rb +0 -24
  775. data/lib/User_Lib/screen/sara/sara_search.rb +0 -26
  776. data/lib/User_Lib/screen/sara/sara_settings.rb +0 -26
  777. data/lib/User_Lib/screen/sara/sara_tv_shows.rb +0 -26
  778. data/lib/User_Lib/screen/sara/sara_video_store.rb +0 -26
  779. data/lib/User_Lib/screen/stb/iguide/iguide_devices.rb +0 -10
  780. data/lib/User_Lib/screen/stb/iguide/iguide_dvr.rb +0 -10
  781. data/lib/User_Lib/screen/stb/iguide/iguide_favorites.rb +0 -10
  782. data/lib/User_Lib/screen/stb/iguide/iguide_guide.rb +0 -39
  783. data/lib/User_Lib/screen/stb/iguide/iguide_home.rb +0 -10
  784. data/lib/User_Lib/screen/stb/iguide/iguide_library.rb +0 -10
  785. data/lib/User_Lib/screen/stb/iguide/iguide_live_tv.rb +0 -59
  786. data/lib/User_Lib/screen/stb/iguide/iguide_login.rb +0 -10
  787. data/lib/User_Lib/screen/stb/iguide/iguide_main_menu.rb +0 -10
  788. data/lib/User_Lib/screen/stb/iguide/iguide_mini_guide.rb +0 -10
  789. data/lib/User_Lib/screen/stb/iguide/iguide_movies.rb +0 -10
  790. data/lib/User_Lib/screen/stb/iguide/iguide_on_demand.rb +0 -531
  791. data/lib/User_Lib/screen/stb/iguide/iguide_parental_controls.rb +0 -10
  792. data/lib/User_Lib/screen/stb/iguide/iguide_privacy_legal.rb +0 -10
  793. data/lib/User_Lib/screen/stb/iguide/iguide_product_page.rb +0 -10
  794. data/lib/User_Lib/screen/stb/iguide/iguide_quick_menu.rb +0 -7
  795. data/lib/User_Lib/screen/stb/iguide/iguide_screen.rb +0 -21
  796. data/lib/User_Lib/screen/stb/iguide/iguide_search.rb +0 -10
  797. data/lib/User_Lib/screen/stb/iguide/iguide_settings.rb +0 -10
  798. data/lib/User_Lib/screen/stb/iguide/iguide_tv_shows.rb +0 -10
  799. data/lib/User_Lib/screen/stb/iguide/iguide_video_store.rb +0 -10
  800. data/lib/User_Lib/screen/stb/login_stb.rb +0 -5
  801. data/lib/User_Lib/screen/stb/odn/odn_dvr.rb +0 -59
  802. data/lib/User_Lib/screen/stb/odn/odn_favorites.rb +0 -8
  803. data/lib/User_Lib/screen/stb/odn/odn_guide.rb +0 -177
  804. data/lib/User_Lib/screen/stb/odn/odn_live_tv.rb +0 -115
  805. data/lib/User_Lib/screen/stb/odn/odn_login.rb +0 -8
  806. data/lib/User_Lib/screen/stb/odn/odn_main_menu.rb +0 -175
  807. data/lib/User_Lib/screen/stb/odn/odn_on_demand.rb +0 -1170
  808. data/lib/User_Lib/screen/stb/odn/odn_on_demand_kids.rb +0 -23
  809. data/lib/User_Lib/screen/stb/odn/odn_on_demand_left_menu.rb +0 -180
  810. data/lib/User_Lib/screen/stb/odn/odn_parental_controls.rb +0 -9
  811. data/lib/User_Lib/screen/stb/odn/odn_product_page.rb +0 -8
  812. data/lib/User_Lib/screen/stb/odn/odn_screen.rb +0 -111
  813. data/lib/User_Lib/screen/stb/odn/odn_search.rb +0 -167
  814. data/lib/User_Lib/screen/stb/odn/odn_settings.rb +0 -142
  815. data/lib/User_Lib/screen/stb/spectrum/spectrum_diagnostics.rb +0 -27
  816. data/lib/User_Lib/screen/stb/spectrum/spectrum_docsis/screen_spectrum_docsis.rb +0 -12
  817. data/lib/User_Lib/screen/stb/spectrum/spectrum_docsis/spectrum_1080_docsis_guide.rb +0 -10
  818. data/lib/User_Lib/screen/stb/spectrum/spectrum_docsis/spectrum_1080_docsis_main_menu.rb +0 -10
  819. data/lib/User_Lib/screen/stb/spectrum/spectrum_docsis/spectrum_1080_docsis_settings.rb +0 -10
  820. data/lib/User_Lib/screen/stb/spectrum/spectrum_dvr.rb +0 -1781
  821. data/lib/User_Lib/screen/stb/spectrum/spectrum_guide.rb +0 -841
  822. data/lib/User_Lib/screen/stb/spectrum/spectrum_library.rb +0 -384
  823. data/lib/User_Lib/screen/stb/spectrum/spectrum_live_tv.rb +0 -259
  824. data/lib/User_Lib/screen/stb/spectrum/spectrum_main_menu.rb +0 -223
  825. data/lib/User_Lib/screen/stb/spectrum/spectrum_mini_guide.rb +0 -404
  826. data/lib/User_Lib/screen/stb/spectrum/spectrum_movies.rb +0 -420
  827. data/lib/User_Lib/screen/stb/spectrum/spectrum_netflix.rb +0 -37
  828. data/lib/User_Lib/screen/stb/spectrum/spectrum_on_demand.rb +0 -2137
  829. data/lib/User_Lib/screen/stb/spectrum/spectrum_parental_controls.rb +0 -528
  830. data/lib/User_Lib/screen/stb/spectrum/spectrum_pay_per_view.rb +0 -26
  831. data/lib/User_Lib/screen/stb/spectrum/spectrum_product_page.rb +0 -58
  832. data/lib/User_Lib/screen/stb/spectrum/spectrum_screen.rb +0 -48
  833. data/lib/User_Lib/screen/stb/spectrum/spectrum_search.rb +0 -92
  834. data/lib/User_Lib/screen/stb/spectrum/spectrum_settings.rb +0 -1657
  835. data/lib/User_Lib/screen/stb/spectrum/spectrum_tv_shows.rb +0 -1532
  836. data/lib/User_Lib/screen/stb/spectrum/spectrum_video_store.rb +0 -1598
  837. data/lib/User_Lib/screen/stb/stb_screen.rb +0 -7
  838. data/lib/User_Lib/screen/tivo/tivo_dvr.rb +0 -25
  839. data/lib/User_Lib/screen/tivo/tivo_guide.rb +0 -25
  840. data/lib/User_Lib/screen/tivo/tivo_library.rb +0 -25
  841. data/lib/User_Lib/screen/tivo/tivo_live_tv.rb +0 -17
  842. data/lib/User_Lib/screen/tivo/tivo_login.rb +0 -25
  843. data/lib/User_Lib/screen/tivo/tivo_main_menu.rb +0 -25
  844. data/lib/User_Lib/screen/tivo/tivo_mini_guide.rb +0 -25
  845. data/lib/User_Lib/screen/tivo/tivo_movies.rb +0 -25
  846. data/lib/User_Lib/screen/tivo/tivo_on_demand.rb +0 -25
  847. data/lib/User_Lib/screen/tivo/tivo_parental_controls.rb +0 -25
  848. data/lib/User_Lib/screen/tivo/tivo_product_page.rb +0 -25
  849. data/lib/User_Lib/screen/tivo/tivo_screen.rb +0 -20
  850. data/lib/User_Lib/screen/tivo/tivo_search.rb +0 -31
  851. data/lib/User_Lib/screen/tivo/tivo_settings.rb +0 -25
  852. data/lib/User_Lib/screen/tivo/tivo_tv_shows.rb +0 -25
  853. data/lib/User_Lib/screen/tivo/tivo_video_store.rb +0 -25
  854. data/lib/diagnostics/conductor/conductor_checkup.tmc +0 -24
  855. data/lib/diagnostics/db/mad_db_check.tmc +0 -56
  856. data/lib/diagnostics/db/mas_db_checkup.tmc +0 -24
  857. data/lib/diagnostics/db/mas_db_checkup_gem.tmc +0 -20
  858. data/lib/diagnostics/db/mas_db_checkup_jar.tmc +0 -50
  859. data/lib/diagnostics/iguide/iguide_nvram_reset.tmc +0 -23
  860. data/lib/diagnostics/iguide/iguide_prepare_stb.tmc +0 -33
  861. data/lib/diagnostics/iguide/iguide_prepare_stb_and_health_check.tmc +0 -63
  862. data/lib/diagnostics/iguide/iguide_stb_health_check.tmc +0 -54
  863. data/lib/diagnostics/prepare_stb.tmc +0 -30
  864. data/lib/diagnostics/prepare_stb_and_health_check.tmc +0 -56
  865. data/lib/diagnostics/script_options/options_checkup.tmc +0 -145
  866. data/lib/diagnostics/server_components_check.tmc +0 -62
  867. data/lib/diagnostics/ssh/dncs_checkup.tmc +0 -24
  868. data/lib/diagnostics/ssh/mas_checkup.tmc +0 -24
  869. data/lib/diagnostics/stb_health_check.tmc +0 -46
  870. data/lib/diagnostics/stb_ip_check.tmc +0 -120
  871. data/lib/diagnostics/webservices/mas_rest_services_checkup.tmc +0 -24
  872. data/lib/diagnostics/webservices/mas_soap_services_checkup.tmc +0 -24
  873. data/lib/end_iteration.rb +0 -4
  874. data/lib/lib/test_wrapper.rb +0 -146
  875. data/lib/run_test.rb +0 -4
  876. data/lib/script_validator.rb +0 -48
@@ -1,1532 +0,0 @@
1
- require './lib/screen/stb/spectrum/spectrum_screen'
2
- # DO NOT ADD DSL REQUIRES HERE. Load them in methods that need them, otherwise syntax completion will be slow.
3
- # Defines Spectrum-specific methods on the TV Shows screen.
4
- class SpectrumTvShows < SpectrumScreen
5
- # Public: Navigates to TV Shows from Live TV.
6
- #
7
- # Returns nothing.
8
- def navigate_from_live_tv
9
- dut.press_key.MENU(:sleep_time => 10.sec)
10
- dut.press_key.ARROW_DOWN(:sleep_time => 5.sec)
11
- dut.press_key.SELECT(:sleep_time => 3.sec)
12
- end
13
- # Public: Check if the TV Shows page is displayed.
14
- #
15
- # Returns Boolean true/false if TV Shows page is/is not displayed
16
- def displayed?(args={})
17
- return false unless dut.roi.text.tv_shows_title.displayed?(args)
18
- return true
19
- end
20
- # Public: Navigates to TV Shows
21
- #
22
- # - Type argument has some purpose.
23
- #
24
- # Returns nothing.
25
- def nav_to_tvshow(args={})
26
- dut.press_key('menu', :sleep_time=>3.sec)
27
- dut.press_key('down_arrow',:sleep_time=>5.sec)
28
- return dut.roi.text.tvshow_label.displayed?
29
- end
30
- # Public: Navigates to a TV Shows category
31
- #
32
- # category: the given name of a category
33
- # roi_text: optional. It can be a roi.text
34
- # instance or a hash with x,y,width,height
35
- # given. default:
36
- # {:x =>65, :y =>366, :width =>721,
37
- # :height =>66}
38
- #
39
- #
40
- # Notes:
41
- # ARROW_DOWN is used to navigate through
42
- # all categories after selecting a menu.
43
- # Before calling this function, make sure
44
- # starting from the first category.
45
- #
46
- # Returns true if navagate to the given
47
- # category, false if the given category
48
- # is not found.
49
- def nav_to_category(args={})
50
- # navagate to the given category
51
- result = true
52
-
53
- # fetch your given category
54
- if args.has_key?(:category)
55
- category_given = args.fetch(:category)
56
- elsif args.has_key?("category")
57
- category_given = args.fetch("category")
58
- else
59
- category_given = "All Networks"
60
- end
61
- # fetch your given roi.text
62
- if args.has_key?(:roi_text)
63
- roi_given = args.fetch(:roi_text)
64
- elsif args.has_key?("roi_text")
65
- roi_given = args.fetch("roi_text")
66
- else
67
- roi_given = nil
68
- end
69
- loginfo "Given category: #{category_given} given roi_text: #{roi_given}"
70
-
71
- # check what roi_text is
72
- roi_text = {:x => 65, :y => 366, :width => 721, :height => 66}
73
- if roi_given.respond_to?("info")
74
- if roi_given.info.inclues?("Roi")
75
- roi_text = roi_given.rectangle
76
- end
77
- elsif roi_given.is_a?(Hash)
78
- roi_text = roi_given
79
- end
80
-
81
- # saved_label: used to check if search is over.
82
- saved_label = ""
83
- con_search = true
84
- while con_search do
85
- category_roi = dut.roi.text.new(:rectangle=>roi_text, :text => category_given, :similarity => 80)
86
- # get the current category
87
- category_label = category_roi.retrieve
88
- # check if the given category is found
89
- con_search = !category_roi.displayed?
90
- if con_search
91
- if category_label != saved_label
92
- con_search = !category_label.include?(category_given)
93
- dut.press_key.ARROW_DOWN(:sleep_time => 3.sec)
94
- saved_label = category_label
95
- else
96
- result = false
97
- con_search = false
98
- end
99
- end
100
- end
101
- end
102
- # Public: This function will format the episode and season information
103
- #
104
- # epi_num - info extarcted from screen
105
- #
106
- # Returns episode and season info .
107
- def epinfo_format(epi_num)
108
- epi_num=epi_num.to_s
109
- loginfo"inside epinfo_format code"+epi_num
110
- epi_num=epi_num.gsub("i","1")
111
- epi_num=epi_num.gsub("I","1")
112
- epi_num=epi_num.gsub("l","1")
113
- epi_num=epi_num.gsub(" ","")
114
- ind1=epi_num.index("(")
115
- ind2=epi_num.index(")")
116
- epi_num=epi_num[ind1+1..ind2-1]
117
- inde=epi_num.index("E")
118
- if inde==nil
119
- loginfo"episode index nil"
120
- season=epi_num.delete("^0-9\s")
121
- episode="NA"
122
-
123
- else
124
- season=epi_num[0..inde-1]
125
- if !season.include?("S")
126
- season="S"+season[1..-1]
127
- end
128
- season=season.delete("^0-9\s")
129
- #chars=["51","52","53","54,","55","56","57","58","59"]
130
- #chars.each do |ele|
131
- #if ele==season
132
- # season=season.sub("5","")
133
- #end
134
- #end
135
- episode=epi_num[inde+1..ind2-1]
136
- end
137
- loginfo " season number is "+season
138
- loginfo"episode number is "+episode
139
- return season,episode
140
- end
141
- # Public: extract information of an episode in tv shows.
142
- #
143
- # Args:
144
- # pbox: poster art box of an asset. It is used to check if the asset
145
- # has a poster art present. default:
146
- # {:x=>121,:y=>498,:width=>210,:height=>122}
147
- #
148
- # tbox: A rectangle used to retrieve the asset title. default:
149
- # {:x=>454,:y=>145,:width=>1380,:height=>144}
150
- #
151
- # bbox: A rectangle used to retrieve the BROWSE EPISODES button.
152
- # default:
153
- # {:x=>480,:y=>551,:width=>1044,:height=>514}
154
- #
155
- # abox: A rectangle used to retrieve "Available" on the page after click
156
- # OK on asset page. default:
157
- # {:x=>604,:y=>400,:width=>698,:height=>180}
158
- #
159
- #
160
- # Note:
161
- # All box should contain ':x', ':y', ':width', and ':height'
162
- #
163
- # Returns Hash. An hash for an asset information, which consists of
164
- # the following factors:
165
- # asset_info = {
166
- # :poster=>nil,
167
- # :title=>nil,
168
- # :viewoption=>nil
169
- # }
170
- def vod_tvshows_assetinfo_extract(args={})
171
- # set default return and parameters
172
- asset_info = {
173
- :poster=>nil,
174
- :title=>nil,
175
- :viewoption=>nil
176
- }
177
- poster_box = {:x=>121,:y=>498,:width=>210,:height=>122}
178
- title_box = {:x=>454,:y=>145,:width=>1380,:height=>144}
179
- browse_box = {:x=>480,:y=>551,:width=>1044,:height=>514}
180
- # used to check if page goes to episode availability after press OK on asset page
181
- avail_box = {:x=>604,:y=>400,:width=>698,:height=>180}
182
-
183
- # get required parameters
184
- if ! args.any?
185
- loginfo "Function 'vod_tvshows_assetinfo_extract' uses default settings."
186
- else
187
- if args.include?(:pbox)
188
- poster_box = args[:pbox]
189
- end
190
- if args.include?(:tbox)
191
- title_box = args[:tbox]
192
- end
193
- if args.include?(:bbox)
194
- browse_box = args[:bbox]
195
- end
196
- if args.include?(:abox)
197
- avail_box = args[:abox]
198
- end
199
- end
200
-
201
- # check if each box is valid
202
- boxes = [poster_box, title_box, browse_box, avail_box]
203
- boxes.each {|bx|
204
- if ! dut.screens.tv_shows.is_a_box(:box=>bx)
205
- return asset_info
206
- end
207
- }
208
-
209
- # check if current page is episode availability page.
210
- # If it is, click last to be back to asset page
211
- avail_text = dut.screens.tv_shows.text_in_box(:box=>avail_box)
212
- if avail_text.include?("Watch")
213
- dut.press_key('last', :sleep_time=>5.sec)
214
- end
215
- # update asset information
216
-
217
- # check if poster is there or not
218
- background = dut.roi.black.new(:rectangle=>poster_box)
219
- if background.displayed?
220
- asset_info[:poster] = "NA"
221
- else
222
- asset_info[:poster] = "PRESENT"
223
- end
224
- # extract the title
225
- title = dut.screens.tv_shows.text_in_box(:box=>title_box)
226
- if ! title.nil?
227
- title = title.delete("^A-Za-z0-9\s")
228
- end
229
- asset_info[:title] = title
230
-
231
- browse_text = dut.screens.tv_shows.text_in_box(:box=>browse_box)
232
- if ! browse_text.nil?
233
- browse_text = browse_text.delete("^A-Za-z0-9\s")
234
- end
235
- if browse_text.include?("ROW")
236
- asset_info[:viewoption] = "BROWSE EPISODES"
237
- elsif browse_text.include?("ATC")
238
- asset_info[:viewoption] = "WATCH"
239
- else
240
- asset_info[:viewoption] = "NA"
241
- end
242
- return asset_info
243
- end
244
- # Public: extract provider and category of tv shows.
245
- #
246
- # Args:
247
- # pbox: provider box. default:
248
- # {:x=>42,:y=>334,:width=>593,:height=>117}
249
- #
250
- # cbox: A rectangle used to retrieve the category. default:
251
- # {:x=>92,:y=>443,:width=>267,:height=>380}
252
- #
253
- # Note:
254
- # All box should contain ':x', ':y', ':width', and ':height'
255
- #
256
- # Returns String. Provider + category if available
257
- def vod_tvshows_category_extract(args={})
258
- # set default return and parameters
259
- result = ""
260
- # pbox: a rectangle to retrieve provider
261
- pbox = {:x=>42,:y=>334,:width=>593,:height=>117}
262
- # cbox: a rectangle to retrieve category
263
- cbox = {:x=>92,:y=>443,:width=>267,:height=>380}
264
- # get required parameters
265
- if ! args.any?
266
- loginfo "'vod_tvshows_category_extract' uses default settings."
267
- else
268
- if args.include?(:pbox)
269
- pbox = args[:pbox]
270
- end
271
- if args.include?(:cbox)
272
- cbox = args[:cbox]
273
- end
274
- end
275
-
276
- # check if each box is valid
277
- boxes = [pbox, cbox]
278
- boxes.each {|bx|
279
- if ! dut.screens.library.is_a_box(:box=>bx)
280
- return result
281
- end
282
- }
283
- # retrieve providers and category
284
- provider = dut.screens.library.text_in_box(:box=>pbox)
285
- # remove special chars.
286
- if (! provider.empty?) and (! provider.nil?)
287
- loc = provider.include?("(") ? provider.index("(") : -1
288
- if loc == 0
289
- provider = "NA"
290
- elsif loc > 0
291
- provider = provider[0..loc-1].rstrip
292
- end
293
- else
294
- provider = "NA"
295
- end
296
- # check if the first asset is a banner or a category.
297
- category = ""
298
- category_check = dut.screens.library.if_box_color(:similarity=>95)
299
- if category_check.nil?
300
- raise Exception.new("Somnething wrong when checking color.")
301
- end
302
- if category_check
303
- category = dut.screens.library.text_in_box(:box=>cbox)
304
- end
305
- # remove special chars.
306
- if (! category.nil?) and (! category.empty?)
307
- category = category.delete("()0-9")
308
- end
309
- # concat provider and category with "/"
310
- if (! category.nil?) and (! category.empty?)
311
- result = provider + "/"+ category
312
- else
313
- result = provider
314
- end
315
-
316
- return result
317
-
318
- end
319
- # Public: extract aaset information for asset page in tv shows.
320
- #
321
- # Args:
322
- # nassets: Integer. The number of assets on a row. default: 7
323
- # option : Integer. 1 = 'continuity', 0 = 'audit'. default: 0
324
- #
325
- # Notes:
326
- # This function needs to be called on all asset page, maybe just
327
- # under the category page if it exists, or just the page under
328
- # provider page if the category page does not exist.
329
- #
330
- # Returns Integer. The number of assets extracted
331
- def vod_tvshow_assets_extract(args={})
332
-
333
- # default number of assets per row
334
- nassets = 7
335
- option = 0
336
- # get required parameters
337
- if ! args.any?
338
- loginfo "Function 'vod_tvshow_assets_extract' uses default settings."
339
- else
340
- if args.include?(:nassets)
341
- nassets = args[:nassets]
342
- end
343
- if args.include?(:option)
344
- option = args[:option]
345
- end
346
- end
347
- # validate nassets
348
- if !nassets.is_a?(Integer)
349
- raise ArgumentError.new("'nassets' should be an integer.")
350
- end
351
- # get the number of rows and number of colums of last row
352
- nrows = dut.screens.library.count_assets_one_dir(:nassets=>1,:similarity=>85)
353
- ncols_last_row = dut.screens.library.count_assets_one_dir(:nassets=>1,:nav_key=>"right_arrow", :similarity=>85) + 1
354
- loginfo "On asset page, there are #{nrows} rows and #{ncols_last_row} cols on last row."
355
- # go back to all assets page under a category
356
- dut.press_key('last', :sleep_time=>5.sec)
357
- dut.press_key('select', :sleep_time=>5.sec)
358
-
359
- # the number of assets scanned
360
- ncount = 0
361
- # loop for each row
362
- col_nav_key = "right_arrow"
363
- (0..nrows).each {|row|
364
- col_nav_key = row%2==1 ? "left_arrow" : "right_arrow"
365
- # for the last row of assets
366
- if (row == nrows) and (ncols_last_row > 0)
367
- nassets = ncols_last_row
368
- end
369
-
370
- ntmp = dut.screens.tv_shows.vod_tvshow_assets_extract_one_row(:nav_key=>col_nav_key, :nassets=>nassets, :option=>option) rescue ntmp=0
371
- ncount += ntmp
372
- # got to next row.
373
- if row < nrows
374
- dut.press_key('down_arrow', :sleep_time=>5.sec)
375
- end
376
-
377
- }
378
-
379
- return ncount
380
-
381
- end
382
-
383
- # Public: check if a given rectangle area is valid which should contain ':x', ':y', ':width', and ':height'
384
- #
385
- # Args:
386
- # box: Hash. It should contain ':x', ':y', ':width', and ':height'
387
- #
388
- # Returns Bool. If invalid, return false, otherwise return true
389
- def is_a_box(args={})
390
- # get required parameters
391
- if ! args.any?
392
- loginfo "Invalid parameters, should have ':box'"
393
- return false
394
- else
395
- if args.include?(:box)
396
- box = args[:box]
397
- else
398
- return false
399
- end
400
- end
401
- # check given area
402
- if !box.is_a?(Hash)
403
- return false
404
- end
405
- if !(box.include?(:x) and box.include?(:y) and box.include?(:width) and box.include?(:height))
406
- loginfo "Invalid box format, which must set ':x', ':y', ':width', and ':height'"
407
- return false
408
- end
409
- return true
410
- end
411
- # Public: Check if a given box is black.
412
- #
413
- # Args:
414
- # box:
415
- # the rectangle area used to check if it is black
416
- # {:x=>112,:y=>702,:width=>234,:height=>112}
417
- # similarity: Integer color similarity threshold 0 - 100 (default: 90).
418
- #
419
- # Returns Bool. true if the box is black, otherwise false
420
- # nil if the given 'box' or 'similarity' is invalid.
421
- def if_box_black(args={})
422
- # set default return and parameters
423
- result = nil
424
-
425
- # box: a rectangle to check if it fills with banner
426
- box = {:x=>112,:y=>702,:width=>234,:height=>112}
427
- similarity = 90
428
-
429
- # get required parameters
430
- if ! args.any?
431
- loginfo "Function 'if_box_black' uses default settings."
432
- else
433
- if args.include?(:box)
434
- box = args[:box]
435
- end
436
- if args.include?(:similarity)
437
- similarity = args[:similarity]
438
- end
439
- end
440
-
441
- # check if each box is valid
442
- if ! dut.screens.tv_shows.is_a_box(:box=>box)
443
- return result
444
- end
445
- # validate similarity
446
- if ! (similarity.is_a?(Integer) and similarity>=0 and similarity<=100)
447
- return result
448
- end
449
- # check if poster is there or not
450
- background = dut.roi.black.new(:rectangle=>box, :blackness=>similarity)
451
- if background.displayed?
452
- result = true
453
- else
454
- result = false
455
- end
456
- return result
457
- end
458
- # Public: Check if a given box matches the given rgb color.
459
- #
460
- # Args:
461
- # box:
462
- # the rectangle area used to check if it fills with a banner
463
- # {:x=>163,:y=>768,:width=>125,:height=>74}
464
- # rgb: Integer Array of 3 values (0 - 255) for red, green, blue (default: [0,41,61]).
465
- # similarity: Integer color similarity threshold 0 - 100 (default: 90).
466
- #
467
- # Returns Bool. true if the box is black, otherwise false
468
- # nil if the given 'box' or 'rgb' or 'similarity' is invalid
469
- def if_box_color(args={})
470
- # set default return and parameters
471
- result = nil
472
- # box: a rectangle to check if it fills with a banner
473
- box = {:x=>163,:y=>768,:width=>125,:height=>74}
474
- rgb = [0,41,61]
475
- similarity = 90
476
- # get required parameters
477
- if ! args.any?
478
- loginfo "Function 'if_box_color' uses default settings."
479
- else
480
- if args.include?(:box)
481
- box = args[:box]
482
- end
483
- if args.include?(:rgb)
484
- rgb = args[:rgb]
485
- end
486
- if args.include?(:similarity)
487
- similarity = args[:similarity]
488
- end
489
- end
490
-
491
- # check if each box is valid
492
- if ! dut.screens.tv_shows.is_a_box(:box=>box)
493
- return result
494
- end
495
- # check if 'rgb' is valid
496
- if ! dut.screens.tv_shows.rgb_validate(:rgb=>rgb)
497
- return result
498
- end
499
- # validate similarity
500
- if ! (similarity.is_a?(Integer) and similarity>=0 and similarity<=100)
501
- return result
502
- end
503
- # check if poster is there or not
504
- background = dut.roi.color.new(:rectangle=>box, :rgb=>rgb, :similarity=>similarity)
505
- if background.displayed?
506
- result = true
507
- else
508
- result = false
509
- end
510
- return result
511
- end
512
- # Public: Check if a given text is in a given box.
513
- #
514
- # Args:
515
- # box: Hash.
516
- # the rectangle area used to check if the
517
- # given text is in the box. default:
518
- # {:x=>63, :y=>355, :width=>308, :height=>691}
519
- #
520
- # text: String. The given string to be checked
521
- #
522
- # Returns Bool. If the given text is in the given area, return true,
523
- # otherwise, return false
524
- def include_in_box(args={})
525
- # set default parameters
526
- box={:x=>63, :y=>355, :width=>308, :height=>691}
527
- text=""
528
-
529
- # get required parameters
530
- if ! args.any?
531
- loginfo "Function 'include_in_box' uses default settings."
532
- return false
533
- else
534
- if args.include?(:text)
535
- text = args[:text]
536
- end
537
- if args.include?(:box)
538
- box = args[:box]
539
- end
540
- end
541
- # check the given text
542
- if !(text.is_a?(String) and (!text.empty?))
543
- loginfo("'text' must be non-empty string.")
544
- return false
545
- end
546
- # check given box
547
- if ! dut.screens.tv_shows.is_a_box(:box=>box)
548
- return false
549
- end
550
- # create a text roi
551
- text_roi = dut.roi.text.new(:rectangle=>box)
552
- retrieved_text = text_roi.retrieve
553
- return retrieved_text.include?(text)
554
- end
555
- # Public: Retrieve text in a given box.
556
- #
557
- # Args:
558
- # box: Hash.
559
- # the rectangle area used to retrieve contained text.
560
- # default:
561
- # {:x=>63, :y=>355, :width=>308, :height=>691}
562
- # preprocessing: Integer or Integer Array of preprocessing options (default: 9).
563
- # similarity: Integer text similarity threshold 0 - 100 (default: 70).
564
- #
565
- # Returns String. The text in a given box
566
- def text_in_box(args={})
567
- # set default parameters
568
- box={:x=>63, :y=>355, :width=>308, :height=>691}
569
- similarity = 70
570
- preprocessing = 8
571
- # get required parameters
572
- if ! args.any?
573
- loginfo "Function 'text_in_box' uses default settings."
574
- return ""
575
- else
576
- if args.include?(:box)
577
- box = args[:box]
578
- end
579
- if args.include?(:similarity)
580
- similarity = args[:similarity]
581
- end
582
- if args.include?(:preprocessing)
583
- preprocessing = args[:preprocessing]
584
- end
585
- end
586
- # check given box
587
- if ! dut.screens.tv_shows.is_a_box(:box=>box)
588
- return ""
589
- end
590
- # create a text roi
591
- sleep 5.sec
592
- text_roi = dut.roi.text.new(:rectangle=>box, :preprocessing=>preprocessing, :similarity=>similarity)
593
- retrieved_text = text_roi.retrieve.gsub(/[^[:print:]]/i, " ") rescue retrieved_text = ""
594
- retrieved_text = dut.screens.tv_shows.rm_spaces(:raw_str=>retrieved_text)
595
- return retrieved_text
596
- end
597
- # Public: Check if a given rgb is valid.
598
- #
599
- # Args:
600
- # rgb: Integer Array of 3 values (0 - 255) for red, green, blue.
601
- #
602
- # Returns Bool. true if rgb meets the requirement, otherwise false
603
- def rgb_validate(args={})
604
- # get required parameters
605
- if ! args.any?
606
- loginfo "Function 'rgb_validate' uses default settings."
607
- return false
608
- else
609
- if args.include?(:rgb)
610
- rgb = args[:rgb]
611
- end
612
- end
613
-
614
- # check if 'rgb' is valid
615
- if ! rgb.is_a?(Array)
616
- loginfo "Given ':rgb' should be an array with 3 integers from 0-255."
617
- return false
618
- else
619
- if rgb.length != 3
620
- loginfo "Given ':rgb' should be an array with 3 integers from 0-255."
621
- return false
622
- else
623
- rgb.each{|aa|
624
- if ! aa.is_a?(Integer)
625
- loginfo "Given ':rgb' should be an array with 3 integers from 0-255."
626
- return false
627
- else
628
- if aa<0 or aa>255
629
- loginfo "Given ':rgb' should be an array with 3 integers from 0-255."
630
- return false
631
- end
632
- end
633
- }
634
- end
635
- end
636
- return true
637
- end
638
-
639
- # Public: Count the number of assets in an asset page along one direction.
640
- #
641
- # Args:
642
- # nav_key: the navigation key pressed for counting. It must one
643
- # of the navigation keys. default: "down_arrow"
644
- # box:
645
- # the rectangle area used to check if the
646
- # image in the area changes as a key is pressed. If not
647
- # changing, it means we are already at the buttom. default:
648
- # {:x=>75,:y=>439,:width=>1700,:height=>622}
649
- #
650
- # nassets: integer. It's the number of assets passed
651
- # when pressing the given key each time. default: 7
652
- #
653
- # similarity: integer.
654
- #
655
- # Notes:
656
- # When counting vertically from row 0, it returns the number of assets
657
- # where every row is fully filled. When counting horizontally from
658
- # column 0 and set nassets 1 and set the box cover the whole row, it
659
- #
660
- # Returns Integer. The number of assets counted when can not move.
661
- # nil if the given 'nassets' is not an integer or 'box' is invalid
662
- def count_assets_one_dir(args={})
663
- # set default parameters
664
- nav_key="down_arrow"
665
- box={:x=>75,:y=>439,:width=>1700,:height=>622}
666
- nassets=7
667
- similarity=95
668
-
669
- # get required parameters
670
- if ! args.any?
671
- loginfo "Function 'count_assets_one_dir' uses default settings."
672
- else
673
- if args.include?(:nav_key)
674
- nav_key = args[:nav_key]
675
- end
676
- if args.include?(:box)
677
- box = args[:box]
678
- end
679
- if args.include?(:nassets)
680
- nassets = args[:nassets]
681
- end
682
- if args.include?(:similarity)
683
- similarity = args[:similarity]
684
- end
685
- end
686
- # check given area
687
- if !dut.screens.tv_shows.is_a_box(:box=>box)
688
- raise ArgumentError.new("'box' is invalid.")
689
- end
690
- # check if nassets is an integer
691
- if !nassets.is_a?(Integer)
692
- raise ArgumentError.new("'nassets' should be an integer.")
693
- end
694
-
695
- # check if similarity is an integer
696
- if !similarity.is_a?(Integer)
697
- raise ArgumentError.new("'similarity' should be an integer.")
698
- end
699
- # count the number of time the key is pressed
700
- ncount = 0
701
- con_check = true
702
- img_args = {
703
- :rectangle=>box,
704
- :similarity=>similarity,
705
- :img_x=>box[:x],
706
- :img_y=>box[:y],
707
- :img_width=>box[:width],
708
- :img_height=>box[:height]
709
- }
710
- while con_check do
711
- snap_img = dut.capture_screen
712
- img_args[:ref_img] = snap_img
713
- dut.press_key(nav_key, :sleep_time=>5.sec)
714
- check_img = dut.roi.image.new(img_args)
715
- con_check = !check_img.displayed?
716
- if con_check
717
- ncount = ncount + 1
718
- end
719
- end
720
- result = ncount*nassets
721
- return result
722
- end
723
- # Public: extract aaset information for a given row in tv shows.
724
- #
725
- # Args:
726
- # nassets: Integer. The number of assets on a row. default: 7
727
- # nav_key: String. The navigation key used to move to next asset.
728
- # option : Integer. 1 = 'continuity', 0 = 'audit'. default: 0
729
- #
730
- # Notes:
731
- # This function needs to be called on all asset page, maybe just
732
- # under the category page if it exists, or just the page under
733
- # provider page if the category page does not exist.
734
- #
735
- # Returns Integer. The number of assets extracted.
736
- def vod_tvshow_assets_extract_one_row(args={})
737
-
738
- # default number of assets per row
739
- nassets = 7
740
- nav_key = "right_arrow"
741
- option = 0
742
- # get required parameters
743
- if ! args.any?
744
- loginfo "Function 'vod_tvshow_assets_extract_one_row' uses default settings."
745
- else
746
- if args.include?(:nassets)
747
- nassets = args[:nassets]
748
- end
749
- if args.include?(:nav_key)
750
- nav_key = args[:nav_key]
751
- end
752
- if args.include?(:option)
753
- option = args[:option]
754
- end
755
- end
756
- # validate nassets
757
- if (!nassets.is_a?(Integer)) or (nassets<1)
758
- loginfo "'nassets' should be a positive integer."
759
- return 0
760
- end
761
- # validate the given nav_key
762
- if (! nav_key.is_a?(String)) or (! ['right_arrow', 'left_arrow'].include?(nav_key))
763
- loginfo "'nav_key' can only be one of ['right_arrow', 'left_arrow']."
764
- return 0
765
- end
766
- # validate option
767
- if ! [0,1].include?(option)
768
- loginfo "'option' should be either 0 or 1."
769
- return 0
770
- end
771
- # count the number of assets scanned
772
- ncount = 0
773
-
774
- # used to check if page goes to episode availability after press OK on asset page
775
- avail_box = {:x=>604,:y=>400,:width=>698,:height=>180}
776
- (1..nassets).each { |ii|
777
- loginfo "Processing Asset #{ii}"
778
- # extract one asset info
779
- dut.press_key('select', :sleep_time=>5.sec)
780
- asset_info = dut.screens.tv_shows.vod_tvshows_assetinfo_extract()
781
- episode_info = []
782
- # if have "BROWSE EPISODES"
783
- if asset_info[:viewoption].include?("BROWSE")
784
- # go to episode page
785
- dut.press_key('select', :sleep_time=>5.sec)
786
- # check if current page is episode availability page after click OK on asset page
787
- avail_text = dut.screens.tv_shows.text_in_box(:box=>avail_box)
788
- # if current page is still asset, click OK to go to availability page
789
- if ! avail_text.include?("Watch")
790
- dut.press_key('select', :sleep_time=>5.sec)
791
- end
792
- # Todo, will add Parental Pin Lock/Onedemand PIN /Purchase Pin handling
793
- dut.press_key('select', :sleep_time=>5.sec)
794
- # extract episode info
795
- episode_info = dut.screens.tv_shows.vod_tvshows_epinfo_extract() rescue episode_info=[]
796
- # go back to the asset page
797
- dut.press_key('last', :sleep_time=>5.sec)
798
-
799
- # check if current page is episode availability page after click LAST on episode page
800
- avail_text = dut.screens.tv_shows.text_in_box(:box=>avail_box)
801
- # if current page is for availability, click LAST one more time to go to asset page
802
- if avail_text.include?("Watch")
803
- dut.press_key('last', :sleep_time=>5.sec)
804
- end
805
- end
806
- # report result to twb
807
- if option==0
808
- dut.screens.tv_shows.vod_tvshows_assets_info_format(:asset_info=>asset_info, :episode_info=>episode_info) rescue loginfo "Asset #{ii} formatting failed."
809
- elsif option==1
810
- dut.screens.tv_shows.vod_tvshows_assets_info_missing_format(:asset_info=>asset_info, :episode_info=>episode_info) rescue loginfo "Asset #{ii} formatting failed."
811
- end
812
-
813
- # go back to all assets page
814
- dut.press_key('last', :sleep_time=>5.sec)
815
- # move to next asset
816
- if ii < nassets
817
- dut.press_key(nav_key, :sleep_time=>5.sec)
818
- end
819
- # update ncount
820
- ncount += 1
821
- }
822
- return ncount
823
- end
824
- # Public: Remove spaces in a given string.
825
- #
826
- # Args:
827
- # raw_str: String. The raw string requiring space removing
828
- # pattn:
829
- #
830
- # Returns String. A string with space removed or nil if no raw string is given.
831
- def rm_spaces(args={})
832
- raw_str = nil
833
- # get required parameters
834
- if ! args.any?
835
- loginfo "Require a string."
836
- return
837
- else
838
- if args.include?(:raw_str)
839
- raw_str = args[:raw_str]
840
- end
841
- end
842
- # remove spaces
843
- raw_str = raw_str.gsub(/\s+/," ").strip
844
- return raw_str
845
- end
846
- # Public: Check if the current page is for category
847
- #
848
- # Args:
849
- # box1:
850
- # the rectangle area used to check if the
851
- # image in the area changes as a key is pressed. If not
852
- # changing, it means we are already at the right. default:
853
- # {:x=>75,:y=>439,:width=>1700,:height=>622}
854
- # similarity: integer.
855
- # box2:
856
- # the rectangle area used to check if it fills with a banner
857
- # {:x=>163,:y=>768,:width=>125,:height=>74}
858
- #
859
- # rgb: Integer Array of 3 values (0 - 255) for red, green, blue (default: [0,41,61]).
860
- #
861
- # bwidth: Integer. Banner width in pixels. default: 230 pixels
862
- #
863
- # Returns Boolean. true if it's category page, false otherwise
864
- def vod_tvshows_category_check(args={})
865
- # set default parameters
866
- similarity=95
867
- box1={:x=>75,:y=>439,:width=>1700,:height=>622}
868
- bwidth=230
869
-
870
- # box: a rectangle to check if it fills with banner
871
- box2 = {:x=>163,:y=>768,:width=>125,:height=>74}
872
- rgb = [0,41,61]
873
-
874
- # get required parameters
875
- if ! args.any?
876
- loginfo "Function 'vod_tvshows_category_check' uses default settings."
877
- else
878
- if args.include?(:box1)
879
- box1 = args[:box1]
880
- end
881
- if args.include?(:box2)
882
- box2 = args[:box2]
883
- end
884
- if args.include?(:similarity)
885
- similarity = args[:similarity]
886
- end
887
- if args.include?(:rgb)
888
- rgb = args[:rgb]
889
- end
890
- if args.include?(:bwidth)
891
- bwidth = args[:bwidth]
892
- end
893
- end
894
- # check given area
895
- if !dut.screens.tv_shows.is_a_box(:box=>box1)
896
- raise ArgumentError.new("Invalid rectangle given.")
897
- end
898
- # validate similarity
899
- if ! (bwidth.is_a?(Integer) and bwidth>=0)
900
- raise ArgumentError.new("Asset width should be positive inetger.")
901
- end
902
-
903
- # check if any asset in a row is a category
904
- result = true
905
- con_check = true
906
- img_args = {
907
- :rectangle=>box1,
908
- :similarity=>similarity,
909
- :img_x=>box1[:x],
910
- :img_y=>box1[:y],
911
- :img_width=>box1[:width],
912
- :img_height=>box1[:height]
913
- }
914
- while con_check do
915
- snap_img = dut.capture_screen
916
- img_args[:ref_img] = snap_img
917
- category_check = dut.screens.tv_shows.if_box_color(:similarity=>similarity, :box=>box2, :rgb=>rgb)
918
- # check if any asset is not a category
919
- if ! category_check
920
- result = category_check
921
- break
922
- else
923
- dut.press_key("right_arrow", :sleep_time=>5.sec)
924
- check_img = dut.roi.image.new(img_args)
925
- con_check = !check_img.displayed?
926
- box2[:x] += bwidth
927
- end
928
- end
929
- # make sure it goes back to the first asset
930
- dut.press_key("last", :sleep_time=>5.sec)
931
- dut.press_key("select", :sleep_time=>5.sec)
932
- return result
933
-
934
- end
935
- # Public: check the missing episodes from test records, mainly from episode records.
936
- #
937
- # Args:
938
- # records: test result from function 'vod_tvshow_assets_extract'. Basically, it's
939
- # an Array. [number of episodes, hash for episode1, hash for episdeX...]
940
- #
941
- # Returns Hash. key = season number, value = list of missing episodes
942
- def vod_tvshows_missing_episode_extract(args={})
943
- result = {}
944
- records = []
945
- # get required parameters
946
- if ! args.any?
947
- raise Exception.new("No episode records given.")
948
- else
949
- if args.include?(:records)
950
- records = args[:records]
951
- end
952
- end
953
- if records.empty?
954
- raise Exception.new("No episode records given.")
955
- end
956
- nepisodes = records[0]
957
- data = {}
958
- # convert episode info to hash, where season number is the key,
959
- # and episode numbers are the value
960
- records[1..-1].each{|rec|
961
- begin
962
- season = Float(rec[:season]).to_i
963
- episode = Float(rec[:number]).to_i
964
- rescue
965
- next
966
- end
967
- if ! data.include?(season)
968
- data[season] = [episode]
969
- else
970
- data[season].push(episode)
971
- end
972
- }
973
- result = Hash[
974
- data.map{|kkk,vvv|
975
- # if ! (Float(kkk)!=nil rescue false)
976
- # next
977
- # end
978
- # vvv = vvv.grep(Numeric)
979
- if vvv.length > 1
980
- minv = vvv.compact.min
981
- maxv = vvv.compact.max
982
- missing_episodes = []
983
- loginfo "Min episode #{minv}, Max episode #{maxv}"
984
- all_episodes = (minv..maxv).to_a
985
- all_episodes.each {|vv|
986
- if ! vvv.include?(vv)
987
- missing_episodes.push(vv.to_s)
988
- end
989
- }
990
-
991
- if ! missing_episodes.empty?
992
- [kkk.to_s, missing_episodes]
993
- end
994
-
995
- end
996
- }
997
- ]
998
- return result
999
- end
1000
- # Public: Play TV Shows
1001
- #
1002
- # Returns boolean
1003
- def play_tv_shows?
1004
- begin
1005
- 5.times{dut.press_key('select', :sleep_time=>5.sec)}
1006
-
1007
- #####################
1008
- ##Handles Exception##
1009
- #####################
1010
- rescue=>exception
1011
- loginfo "play_tv_shows :: failed"
1012
- loginfo exception.message
1013
- loginfo exception.backtrace
1014
- return false
1015
- end
1016
- return true
1017
- end
1018
- # Public: Audit all assets under "All Network" page and report the results
1019
- #
1020
- # Args:
1021
- # name : String. The report name twb requests. default: "TVSHOWS_AuditReport"
1022
- # nassets : Integer. The number of assets per row except the last one. default: 7
1023
- # networks: An array of given netwroks. default: []
1024
- # option : Integer. 1 = 'continuity', 0 = 'audit'. default: 0
1025
- #
1026
- # Notes:
1027
- # This function needs to be called aftern enter "TV Shows"
1028
- #
1029
- # Returns NA
1030
- def vod_tvshow_scan(args={})
1031
- begin
1032
- require "time"
1033
- require "fileutils"
1034
-
1035
- # set default parameters
1036
- ftail = Time.new.to_s.gsub(/[\s:-]/,"_").strip.gsub(/_+/,"_")
1037
- start_time = Time.now
1038
- option = 0
1039
- # default number of assets per row
1040
- nassets = 7
1041
- # default networks
1042
- networks = []
1043
- # default report name
1044
- report_name = "TVSHOWS_AuditReport"
1045
-
1046
- # get required parameters
1047
- if ! args.any?
1048
- loginfo "Default settings used."
1049
- else
1050
- if args.include?(:name)
1051
- report_name = args[:name]
1052
- end
1053
- if args.include?(:nassets)
1054
- nassets = args[:nassets]
1055
- end
1056
- if args.include?(:networks)
1057
- networks = args[:networks]
1058
- end
1059
- if args.include?(:option)
1060
- option = args[:option]
1061
- end
1062
- end
1063
- # validate nassets
1064
- if !nassets.is_a?(Integer)
1065
- ArgumentError.new("'nassets' should be an integer.")
1066
- end
1067
- # validate option
1068
- if ![0,1].include?(option)
1069
- ArgumentError.new("'option' should be either 0 or 1.")
1070
- end
1071
- # validate report name
1072
- if ! report_name.is_a?(String)
1073
- raise ArgumentError.new("'report_name' should be a string")
1074
- end
1075
- report_name = report_name+"_"+ftail
1076
- report_name.gsub!("Audit", "Contintuity") if option==1
1077
-
1078
- # twb report structure
1079
- $fmt = {
1080
- "report_name"=>report_name,
1081
- "progress"=> 0
1082
- }
1083
- # go to "All Networks"
1084
- dut.screens.tv_shows.nav_to_category
1085
- dut.press_key('left_arrow', :sleep_time=>5.sec)
1086
- dut.press_key('select', :sleep_time=>5.sec)
1087
-
1088
- # get the number of rows and number of colums of last row
1089
- nrows = dut.screens.tv_shows.count_assets_one_dir(:nassets=>1,:similarity=>85)
1090
- ncols_last_row = dut.screens.tv_shows.count_assets_one_dir(:nassets=>1,:nav_key=>"right_arrow", :similarity=>85) + 1
1091
- loginfo "*******************************************************"
1092
- loginfo "Providers. Rows: #{nrows}, ncols last row: #{ncols_last_row}"
1093
- loginfo "*******************************************************"
1094
-
1095
- # go back to "ALL Networks"
1096
- dut.press_key('last', :sleep_time=>5.sec)
1097
- dut.press_key('left_arrow', :sleep_time=>5.sec)
1098
- dut.press_key('select', :sleep_time=>5.sec)
1099
-
1100
- col_nav_key = "right_arrow"
1101
- # the number of assets scanned
1102
- ncount = 0
1103
- # loop for each network
1104
- (0..nrows).each {|row|
1105
- col_nav_key = row%2==1 ? "left_arrow" : "right_arrow"
1106
- # for the last row of providers
1107
- if (row == nrows) and (ncols_last_row > 0)
1108
- nassets = ncols_last_row
1109
- end
1110
-
1111
- (1..nassets).each {|inet|
1112
- begin
1113
- # set continue flag
1114
- continue_flag = true
1115
- start_time_per_network = Time.now
1116
- dut.press_key('select', :sleep_time=>5.sec)
1117
- # check if an asset is a category
1118
- category_check = dut.screens.tv_shows.vod_tvshows_category_check(:similarity=>95)
1119
- category = dut.screens.tv_shows.vod_tvshows_category_extract
1120
-
1121
- # if given networks, check if the current network name is in the given array
1122
- # if not, skip the current provider
1123
- if networks.is_a?(Array) and (! networks.empty?)
1124
- log_info "Given netwroks: "
1125
- log_info networks
1126
- continue_flag = false if ! networks.include?(category.split('/')[0].gsub(/\s/,'')) rescue continue_flag = false
1127
- continue_flag = networks.include?([row, inet]) if !continue_flag
1128
- end
1129
- loginfo "Checking (#{row}, #{inet}) network."
1130
- if (!category_check.nil?) and continue_flag
1131
- loginfo "working on network #{category}(#{row}, #{inet}), be patient..."
1132
- $fmt["category"] = category
1133
- if category_check
1134
- dut.press_key('select', :sleep_time=>5.sec)
1135
- end
1136
- ntmp = dut.screens.tv_shows.vod_tvshow_assets_extract(:option=>option) rescue ntmp=0
1137
- # ncount update
1138
- ncount += ntmp
1139
- if category_check
1140
- dut.press_key('last', :sleep_time=>5.sec)
1141
- end
1142
- end
1143
-
1144
- # go back to all provider page
1145
- dut.press_key('last', :sleep_time=>5.sec)
1146
-
1147
- if inet < nassets
1148
- dut.press_key(col_nav_key, :sleep_time=>5.sec)
1149
- end
1150
- loginfo "Time took for this network(sec): #{Time.now - start_time_per_network}, #{ntmp} assets scanned."
1151
- rescue
1152
- next
1153
- end
1154
- }
1155
- # go to next row
1156
- if row < nrows
1157
- dut.press_key('down_arrow', :sleep_time=>5.sec)
1158
- end
1159
- }
1160
-
1161
- loginfo "Total time took (hours): #{(Time.now - start_time)/60/60}, #{ncount} assets scanned."
1162
- rescue =>e
1163
- loginfo "'vod_tvshow_audit' exception: #{e.message}"
1164
- return false
1165
- end
1166
- return true
1167
- end
1168
-
1169
- # Public: extract information of an episode in tv shows.
1170
- #
1171
- # Args:
1172
- # lbox: list_box of episodes. It covers the episode list area and is used
1173
- # to count the number of episodes. default:
1174
- # {:x=>68,:y=>417,:width=>655,:height=>658}
1175
- #
1176
- # nbox: A rectangle used to retrieve episode name. default:
1177
- # {:x=>773,:y=>492,:width=>864,:height=>74}
1178
- #
1179
- # nbbox: A rectangle used to retrieve episode number and season number.
1180
- # default:
1181
- # {:x=>773,:y=>546,:width=>178,:height=>74}
1182
- #
1183
- # wbox: A rectangle covers the buttons. It is used to check if WATCH button
1184
- # is there. default:
1185
- # watch_box = {:x=>765,:y=>729,:width=>562,:height=>341}
1186
- #
1187
- # vbox: A window to check if the episode is playable.
1188
- #
1189
- # Note:
1190
- # All box should contain ':x', ':y', ':width', and ':height'
1191
- #
1192
- # Returns Array. An array for episode information. Each element of the array
1193
- # is a hash, which consists of the following factors:
1194
- # epi_info = {
1195
- # :name=>nil,
1196
- # :number=>0,
1197
- # :playable=>false,
1198
- # :status=>nil
1199
- # }
1200
- def vod_tvshows_epinfo_extract(args={})
1201
- require '../../../../Program Files/Time Warner Cable/TMCExecutionService/rubylocation/test_cases/sandbox/log_info'
1202
- # set default return
1203
- result = []
1204
- list_box = {:x=>68,:y=>417,:width=>655,:height=>658}
1205
- name_box = {:x=>773,:y=>492,:width=>864,:height=>74}
1206
- numb_box = {:x=>773,:y=>546,:width=>178,:height=>74}
1207
- watch_box = {:x=>765,:y=>729,:width=>562,:height=>341}
1208
- video_box = {:x=>240,:y=>142,:width=>713,:height=>412}
1209
- # get required parameters
1210
- if ! args.any?
1211
- log_info "Function 'vod_tvshows_epinfo_extract' uses default settings."
1212
- else
1213
- if args.include?(:lbox)
1214
- list_box = args[:lbox]
1215
- end
1216
- if args.include?(:nbox)
1217
- name_box = args[:nbox]
1218
- end
1219
- if args.include?(:nbbox)
1220
- numb_box = args[:nbbox]
1221
- end
1222
- if args.include?(:wbox)
1223
- watch_box = args[:wbox]
1224
- end
1225
- if args.include?(:vbox)
1226
- video_box = args[:vbox]
1227
- end
1228
- end
1229
-
1230
- # check if each box is valid
1231
- boxes = [list_box, name_box, numb_box, watch_box, video_box]
1232
- boxes.each {|bx|
1233
- if ! dut.screens.tv_shows.is_a_box(:box=>bx)
1234
- return []
1235
- end
1236
- }
1237
-
1238
- # check if current page is in play mode
1239
- is_playing = dut.screens.tv_shows.text_in_box(:box=>name_box)
1240
- if is_playing.empty?
1241
- dut.press_key('stop', :sleep_time=>5.sec)
1242
- else
1243
- # take care "Unable play" prompt if any
1244
- unable_play = dut.screens.tv_shows.text_in_box(:box=>video_box)
1245
- if unable_play.include?("Unable") and unable_play.include?("sorry")
1246
- dut.press_key('select', :sleep_time=>5.sec)
1247
- end
1248
- end
1249
-
1250
- # get the number of episodes
1251
- nepisodes = dut.screens.tv_shows.count_assets_one_dir(
1252
- :nassets=>1,
1253
- :box=>list_box,
1254
- :similarity=>85)
1255
- if nepisodes>=0
1256
- result[0] = nepisodes + 1
1257
- else
1258
- return []
1259
- end
1260
- log_info "Total #{nepisodes+1} episodes found."
1261
- (0..nepisodes).each {|ii|
1262
- # init info for each episode
1263
- epi_info = {
1264
- :name=>nil,
1265
- :number=>0,
1266
- :playable=>false,
1267
- :season=>0,
1268
- :status=>nil
1269
- }
1270
- # update episode information for each one
1271
-
1272
- # check if WATCH button is there
1273
- watch_btn = dut.screens.tv_shows.include_in_box(:text=>"WATCH", :box=>watch_box)
1274
- if watch_btn
1275
- dut.press_key.SELECT(:sleep_time=>5.sec)
1276
- # handle pins
1277
- pin_text = dut.screens.video_store.vod_handle_pin rescue pint_text=''
1278
-
1279
- # check if 'Menu is not available' show up
1280
- if pin_text.include?('Not Available')
1281
- epi_info[:playable] = 'NA'
1282
- epi_info[:status] = 'NA'
1283
- dut.press_key('last', :sleep_time=>5.sec)
1284
- else
1285
- # check if episode is playable
1286
- video_win = dut.roi.video.new(:rectangle=>video_box)
1287
- playable = video_win.displayed?(:timeout => 10000)
1288
- if playable
1289
- epi_info[:playable] = 'PLAYABLE'
1290
- epi_info[:status] = 'PRESENT'
1291
- dut.press_key('stop', :sleep_time=>5.sec)
1292
- else
1293
- epi_info[:playable] = 'NA'
1294
- epi_info[:status] = 'NA'
1295
- # take care "Unable play" prompt if any
1296
- unable_play = dut.screens.tv_shows.include_in_box(:text=>"Unable", :box=>video_box)
1297
- if unable_play
1298
- dut.press_key('select', :sleep_time=>5.sec)
1299
- end
1300
- end
1301
- end
1302
- else
1303
- # check if 'restart' is there
1304
- restart = dut.screens.tv_shows.include_in_box(:text=>"RESTART", :box=>watch_box)
1305
- if restart
1306
- epi_info[:playable] = 'PLAYABLE'
1307
- epi_info[:status] = 'PRESENT'
1308
- else
1309
- epi_info[:playable] = 'NA'
1310
- epi_info[:status] = 'NA'
1311
- end
1312
- end
1313
- # get episode name
1314
- epi_name = dut.screens.tv_shows.text_in_box(:box=>name_box)
1315
- if ! epi_name.nil?
1316
- epi_name = epi_name.delete("^A-Za-z0-9\s")
1317
- end
1318
- if epi_name.empty?
1319
- epi_info[:name] = "NA"
1320
- else
1321
- epi_info[:name] = epi_name
1322
- end
1323
- # check episode number for each one
1324
- epi_num = dut.screens.tv_shows.text_in_box(:box=>numb_box).gsub(/[ilI]/,'1')
1325
- epi_num = epi_num.gsub(/[\s.]/,',').gsub(/,+/,',').gsub(/[Ss]/,'5')
1326
- if ! epi_num.nil?
1327
- epi_num = epi_num.delete("^0-9,")
1328
- end
1329
-
1330
- log_info "Retrieved episode number text #{ epi_num }"
1331
-
1332
- if (! epi_num.nil?) and (! epi_num.empty?)
1333
- epi_num = epi_num.split(',')
1334
- if epi_num.length>1
1335
- epi_info[:number] = epi_num[1]
1336
- end
1337
- epi_info[:season] = epi_num[0][1..-1]
1338
- else
1339
- epi_info[:number] = "NA"
1340
- epi_info[:season] = "NA"
1341
- end
1342
- log_info "Episode info:"
1343
- log_info epi_info
1344
- result[nepisodes+1-ii] = epi_info
1345
- if ii < nepisodes
1346
- dut.press_key.ARROW_UP(:sleep_time=>5.sec)
1347
- end
1348
- }
1349
- return result
1350
- end
1351
-
1352
- # Public: Convert the test records saved in an array to the report format twb requests.
1353
- #
1354
- # Args:
1355
- # images : String. default: "{\"images\":[]}"
1356
- # asset_info : A hash kept asset information. default: {}
1357
- # episode_info: An array containing episode information. deault: []
1358
- #
1359
- # Returns NA
1360
- def vod_tvshows_assets_info_format(args={})
1361
- require '../../../../Program Files/Time Warner Cable/TMCExecutionService/rubylocation/test_cases/sandbox/twb_upload_lib'
1362
- begin
1363
- # set default parameters
1364
- images = "{\"images\":[]}"
1365
- asset_info = {}
1366
- episode_info = []
1367
-
1368
-
1369
- # get required parameters
1370
- if ! args.any?
1371
- loginfo "Default settings used."
1372
- return
1373
- else
1374
- if args.include?(:asset_info)
1375
- asset_info = args[:asset_info]
1376
- end
1377
- if args.include?(:episode_info)
1378
- episode_info = args[:episode_info]
1379
- end
1380
- if args.include?(:images)
1381
- images = args[:images]
1382
- end
1383
- end
1384
-
1385
- # create twb upload connection
1386
- begin
1387
- twb_handler = RecordsReport.new
1388
- twb_handler.verbose = true
1389
- rescue => e
1390
- loginfo "TWB Connection Creating error: #{e.message}. No TWB upload."
1391
- twb_handler = nil
1392
- end
1393
-
1394
- # start formatting the data
1395
- $fmt["screenshots"] = images
1396
- $fmt["title"] = asset_info[:title]
1397
- $fmt["view_option"] = asset_info[:viewoption]
1398
- $fmt["banner_presence"] = asset_info[:poster]
1399
- # check if episode information is available
1400
- if episode_info.empty? or episode_info.length<2
1401
- nloop = 1
1402
- $fmt["quantity"] = 1
1403
- else
1404
- nloop = episode_info.length-1
1405
- $fmt["quantity"] = episode_info[0]
1406
- end
1407
- # loop through episode info.
1408
- (1..nloop).each{|inx|
1409
- begin
1410
- # if episode info is available
1411
- if !(episode_info.empty? or episode_info.length<2)
1412
- $fmt["season_number"] = episode_info[inx][:season]
1413
- $fmt["episode_number"] = episode_info[inx][:number]
1414
- $fmt["episode_name"] = episode_info[inx][:name]
1415
- $fmt["status"] = episode_info[inx][:status]
1416
- $fmt["playback_status"] = episode_info[inx][:playable]
1417
- end
1418
- # prepare the output string for the csv file
1419
- record = $fmt.values.join(",")+"\n"
1420
- append_to_file "vod_reports/"+$fmt["report_name"]+".csv", record rescue loginfo "vod_reports csv writing failed."
1421
- loginfo "Record #{inx}: #{record}"
1422
- # twb report
1423
- if !twb_handler.nil?
1424
- loginfo "Reporting to twb..."
1425
- twb_handler.send_one_record($fmt)
1426
- end
1427
- # update progress
1428
- $fmt["progress"] = 50 if $fmt["progress"]==0
1429
-
1430
- rescue => e
1431
- loginfo "Record formatting error. #{e.message}"
1432
- next
1433
- end
1434
- }
1435
- rescue => e
1436
- loginfo "Test record formatting error: #{e.message}."
1437
- return
1438
- end
1439
- end
1440
-
1441
- # Public: Convert the test records saved in an array to the report format twb requests.
1442
- #
1443
- # Args:
1444
- # images : String. default: "{\"images\":[]}"
1445
- # asset_info : A hash kept asset information. default: {}
1446
- # episode_info: An array containing episode information. deault: []
1447
- #
1448
- # Returns NA
1449
- def vod_tvshows_assets_info_missing_format(args={})
1450
- require '../../../../Program Files/Time Warner Cable/TMCExecutionService/rubylocation/test_cases/sandbox/twb_upload_lib'
1451
- # set default parameters
1452
- images = "{\"images\":[]}"
1453
- asset_info = {}
1454
- episode_info = []
1455
-
1456
-
1457
- # get required parameters
1458
- if ! args.any?
1459
- loginfo "Default settings used."
1460
- return
1461
- else
1462
- if args.include?(:asset_info)
1463
- asset_info = args[:asset_info]
1464
- end
1465
- if args.include?(:episode_info)
1466
- episode_info = args[:episode_info]
1467
- end
1468
- if args.include?(:images)
1469
- images = args[:images]
1470
- end
1471
- end
1472
-
1473
- # create twb upload connection
1474
- begin
1475
- twb_handler = RecordsReport.new
1476
- twb_handler.verbose = true
1477
- rescue => e
1478
- loginfo "TWB Connection Creating error: #{e}. No TWB upload."
1479
- twb_handler = nil
1480
- end
1481
-
1482
- $fmt["screenshots"] = images
1483
- $fmt["title"] = asset_info[:title]
1484
- $fmt["view_option"] = asset_info[:viewoption]
1485
- $fmt["banner_presence"] = asset_info[:poster]
1486
- nloop = 0
1487
- # check the number of available episodes
1488
- if ! episode_info.empty?
1489
- nloop = episode_info[0]
1490
- else
1491
- loginfo "#{asset_info[:title]} has no episode information, ignored."
1492
- return
1493
- end
1494
- $fmt["quantity"] = nloop
1495
- # check the missing episodes
1496
- episode_info = dut.screens.tv_shows.vod_tvshows_missing_episode_extract(:records=>episode_info) rescue episode_info={}
1497
- # check if episode information is available
1498
- if episode_info.is_a?(Hash) and episode_info.any?
1499
- loginfo "Missing episodes: "
1500
- loginfo "#{episode_info}"
1501
- else
1502
- raise RuntimeError.new("Formatting error, ignored.")
1503
- end
1504
- # loop through episode info.
1505
- episode_info.each{|kkk, vvv|
1506
- if ! vvv.any?
1507
- next
1508
- end
1509
- vvv.each{|epi|
1510
- $fmt["season_number"] = kkk
1511
- $fmt["episode_number"] = epi
1512
- $fmt["status"] = "Missing"
1513
- # prepare the output string for the csv file
1514
- record = $fmt.values.join(",")+"\n"
1515
- append_to_file "vod_reports/"+$fmt["report_name"]+".csv", record rescue loginfo "vod_reports csv writing failed."
1516
- # twb report
1517
- if !twb_handler.nil?
1518
- loginfo "Reporting to twb..."
1519
- twb_handler.send_one_record($fmt)
1520
- end
1521
- # update progress
1522
- $fmt["progress"] = 50 if $fmt["progress"]==0
1523
- }
1524
- }
1525
- rescue => e
1526
- loginfo "Test record formatting error: #{e.message}."
1527
- return
1528
- end
1529
-
1530
- end
1531
-
1532
-