/* Ċ Ġ* ĠCopyright ĠAmazon . com , ĠInc . Ġor Ġits Ġaffiliates . ĠAll ĠRights ĠReserved . Ċ Ġ* ĠSPDX - License - Identifier : ĠApache - 2 . 0 Ċ Ġ*/ Ċ Ċ package Ġcom . amazonaws . services . ch ime . sdk . meet ings . audio video . video . capture Ċ Ċ import Ġandroid . graphics . Surface Texture Ċ import Ġandroid . opengl . EGL 1 4 Ċ import Ġandroid . opengl . EGL Surface Ċ import Ġandroid . os . Handler Ċ import Ġandroid . os . Handler Thread Ċ import Ġandroid . os . Looper Ċ import Ġcom . amazonaws . services . ch ime . sdk . meet ings . audio video . video . Video Content Hint Ċ import Ġcom . amazonaws . services . ch ime . sdk . meet ings . audio video . video . Video Sink Ċ import Ġcom . amazonaws . services . ch ime . sdk . meet ings . audio video . video . gl . E gl Core Ċ import Ġcom . amazonaws . services . ch ime . sdk . meet ings . audio video . video . gl . E gl Core Factory Ċ import Ġcom . amazonaws . services . ch ime . sdk . meet ings . utils . logger . Logger Ċ import Ġcom . x ode e . client . video . Timestamp Align er Ċ import Ġio . mock k . Mock K Annotations Ċ import Ġio . mock k . every Ċ import Ġio . mock k . impl . annotations . Mock K Ċ import Ġio . mock k . just Ċ import Ġio . mock k . mock k Constructor Ċ import Ġio . mock k . mock k Static Ċ import Ġio . mock k . runs Ċ import Ġio . mock k . slot Ċ import Ġio . mock k . verify Ċ import Ġjava . lang . Runnable Ċ import Ġorg . junit . Assert . assertNot Equals Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ Ċ class ĠDefault Surface Texture Capture Source Test Ġ{ ĊĠĠĠ Ġ@ Mock K ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmock Logger : ĠLogger ĊĊĠĠĠ Ġ@ Mock K ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmock E gl Core Factory : ĠE gl Core Factory ĊĊĠĠĠ Ġ@ Mock K ( relax ed Ġ= Ġtrue ) ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmock E gl Core : ĠE gl Core ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtest Surface Texture Capture Source : ĠDefault Surface Texture Capture Source ĊĊĠĠĠ Ġ@ Mock K ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmock Looper : ĠL ooper ĊĊĠĠĠ Ġ@ Mock K ( relax ed Ġ= Ġtrue ) ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmock E gl Surface : ĠE GL Surface ĊĊĠĠĠ Ġ@ Mock K ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmock Video Sink : ĠVideo Sink ĊĊĠĠĠ Ġ@ Mock K ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmock Surface Texture : ĠSurface Texture ĊĊĠĠĠ Ġprivate Ġval Ġtest Width Ġ= Ġ 1 ĊĠĠĠ Ġprivate Ġval Ġtest Height Ġ= Ġ 2 ĊĠĠĠ Ġprivate Ġval Ġtest Content Hint Ġ= ĠVideo Content Hint . Motion ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ ĠMock K Annotations . init ( this , Ġrelax Unit Fun Ġ= Ġtrue ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠSetup Ġhandler / thread Ġmocks ĊĠĠĠĠĠĠĠ Ġmock k Constructor ( Handler Thread :: class ) ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġany Construct ed < Handler Thread >(). lo oper Ġ} Ġreturns Ġmock Looper ĊĠĠĠĠĠĠĠ Ġmock k Constructor ( Handler :: class ) ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġany Construct ed < Handler >(). lo oper Ġ} Ġreturns Ġmock Looper ĊĠĠĠĠĠĠĠ Ġval Ġslot Ġ= Ġslot < Runnable >() ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġany Construct ed < Handler >(). post ( capture ( slot )) Ġ} Ġanswers Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġslot . captured . run () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġmock Looper . quit () Ġ} Ġjust Ġruns ĊĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġmock E gl Core Factory . create E gl Core () Ġ} Ġreturns Ġmock E gl Core ĊĊĠĠĠĠĠĠĠ Ġmock k Static ( EGL 1 4 :: class ) ĊĠĠĠĠĠĠĠ Ġevery Ġ{ ĠE GL 1 4 . e gl Create P buffer Surface ( any (), Ġany (), Ġany (), Ġany ()) Ġ} Ġreturns Ġmock E gl Surface ĊĊĠĠĠĠĠĠĠ Ġmock k Constructor ( Surface Texture :: class ) ĊĊĠĠĠĠĠĠĠ Ġmock k Constructor ( Timestamp Align er :: class ) ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġany Construct ed < Timestamp Align er >(). translate Timestamp ( any ()) Ġ} Ġreturns Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġtest Surface Texture Capture Source Ġ= ĠDefault Surface Texture Capture Source ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmock Logger , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtest Width , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtest Height , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtest Content Hint , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmock E gl Core Factory ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` constructor Ġsets Ġexpected Ġdimensions Ġof Ġsurface `() Ġ{ ĊĠĠĠĠĠĠĠ ĠDefault Surface Texture Capture Source ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmock Logger , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtest Width , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtest Height , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtest Content Hint , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmock E gl Core Factory ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġverify Ġ{ Ġany Construct ed < Surface Texture >(). setDefault BufferSize ( test Width , Ġtest Height ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` start Ġcalls Ġset On Frame Available Listener Ġwith Ġnon - null Ġlistener `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġslot Ġ= Ġslot < Surface Texture . On Frame Available Listener >() ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġany Construct ed < Surface Texture >(). setOn Frame Available Listener ( capture ( slot ), Ġany ()) Ġ} Ġjust Ġruns ĊĊĠĠĠĠĠĠĠ Ġtest Surface Texture Capture Source . start () ĊĊĠĠĠĠĠĠĠ Ġassert Not Equals ( slot . captured , Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` stop Ġcalls Ġset On Frame Available Listener Ġwith Ġnull Ġlistener `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġslot Ġ= Ġslot < Surface Texture . On Frame Available Listener >() ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġany Construct ed < Surface Texture >(). setOn Frame Available Listener ( capture ( slot )) Ġ} Ġjust Ġruns ĊĊĠĠĠĠĠĠĠ Ġtest Surface Texture Capture Source . stop () ĊĊĠĠĠĠĠĠĠ Ġverify Ġ{ Ġany Construct ed < Surface Texture >(). setOn Frame Available Listener ( null ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` surface Ġtexture Ġframe Ġis Ġpassed Ġalong Ġto Ġvideo Ġsink `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġslot Ġ= Ġslot < Surface Texture . On Frame Available Listener >() ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġany Construct ed < Surface Texture >(). setOn Frame Available Listener ( capture ( slot ), Ġany ()) Ġ} Ġjust Ġruns ĊĊĠĠĠĠĠĠĠ Ġtest Surface Texture Capture Source . start () ĊĠĠĠĠĠĠĠ Ġtest Surface Texture Capture Source . add Video Sink ( mock Video Sink ) ĊĊĠĠĠĠĠĠĠ Ġslot . captured . on Frame Available ( mock Surface Texture ) ĊĊĠĠĠĠĠĠĠ Ġverify Ġ{ Ġany Construct ed < Surface Texture >(). update TexImage () Ġ} ĊĠĠĠĠĠĠĠ Ġverify Ġ{ Ġmock Video Sink . on Video Frame Received ( any ()) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` release Ġwill Ġrelease Ġresources Ġif Ġthere Ġis Ġno Ġframe Ġin Ġflight `() Ġ{ ĊĠĠĠĠĠĠĠ Ġtest Surface Texture Capture Source . release () ĊĊĠĠĠĠĠĠĠ Ġverify Ġ{ Ġany Construct ed < Surface Texture >(). release () Ġ} ĊĠĠĠĠĠĠĠ Ġverify Ġ{ Ġmock E gl Core . release () Ġ} ĊĠĠĠĠĠĠĠ Ġverify Ġ{ Ġany Construct ed < Timestamp Align er >(). dispose () Ġ} ĊĠĠĠĠĠĠĠ Ġverify Ġ{ Ġmock Looper . quit () Ġ} ĊĠĠĠ Ġ} Ċ } Ċ