@@ -722,7 +722,7 @@ describe('VisionCamera - NativePreviewView', () => {
722722 }
723723 } )
724724
725- it ( 'switches a running session between two mounted NativePreviewViews ' , async ( ) => {
725+ it ( 'starts a replacement preview and stops the removed preview while running ' , async ( ) => {
726726 const session = await VisionCamera . createCameraSession ( false )
727727 const firstPreviewOutput = VisionCamera . createPreviewOutput ( )
728728 const secondPreviewOutput = VisionCamera . createPreviewOutput ( )
@@ -739,13 +739,18 @@ describe('VisionCamera - NativePreviewView', () => {
739739 const firstLayout = deferred < Layout > ( )
740740 const secondLayout = deferred < Layout > ( )
741741 const firstPreviewStarted = deferred ( )
742+ const firstPreviewStopped = deferred ( )
742743 const secondPreviewStarted = deferred ( )
744+ const onFirstPreviewStarted = fn ( ( ) => firstPreviewStarted . resolve ( ) )
745+ const onFirstPreviewStopped = fn ( ( ) => firstPreviewStopped . resolve ( ) )
746+ const onSecondPreviewStarted = fn ( ( ) => secondPreviewStarted . resolve ( ) )
743747 const errorSub = session . addOnErrorListener ( ( error ) => {
744748 firstRef . reject ( error )
745749 secondRef . reject ( error )
746750 firstLayout . reject ( error )
747751 secondLayout . reject ( error )
748752 firstPreviewStarted . reject ( error )
753+ firstPreviewStopped . reject ( error )
749754 secondPreviewStarted . reject ( error )
750755 } )
751756
@@ -761,7 +766,8 @@ describe('VisionCamera - NativePreviewView', () => {
761766 onLayout = { ( event ) => {
762767 firstLayout . resolve ( toLayout ( event ) )
763768 } }
764- onPreviewStarted = { callback ( firstPreviewStarted . resolve ) }
769+ onPreviewStarted = { callback ( onFirstPreviewStarted ) }
770+ onPreviewStopped = { callback ( onFirstPreviewStopped ) }
765771 />
766772 < NativePreviewView
767773 style = { styles . switchPreview }
@@ -772,7 +778,7 @@ describe('VisionCamera - NativePreviewView', () => {
772778 onLayout = { ( event ) => {
773779 secondLayout . resolve ( toLayout ( event ) )
774780 } }
775- onPreviewStarted = { callback ( secondPreviewStarted . resolve ) }
781+ onPreviewStarted = { callback ( onSecondPreviewStarted ) }
776782 />
777783 </ View > ,
778784 )
@@ -804,6 +810,9 @@ describe('VisionCamera - NativePreviewView', () => {
804810 15_000 ,
805811 'first NativePreviewView onPreviewStarted' ,
806812 )
813+ expect ( onFirstPreviewStarted ) . toHaveBeenCalledOnce ( )
814+ expect ( onFirstPreviewStopped ) . not . toHaveBeenCalled ( )
815+ expect ( onSecondPreviewStarted ) . not . toHaveBeenCalled ( )
807816 expectPreviewGeometry ( firstPreview , firstPreviewLayout )
808817
809818 await session . configure ( [
@@ -818,6 +827,13 @@ describe('VisionCamera - NativePreviewView', () => {
818827 15_000 ,
819828 'second NativePreviewView onPreviewStarted' ,
820829 )
830+ await withTimeout (
831+ firstPreviewStopped . promise ,
832+ 10_000 ,
833+ 'first NativePreviewView onPreviewStopped' ,
834+ )
835+ expect ( onSecondPreviewStarted ) . toHaveBeenCalledOnce ( )
836+ expect ( onFirstPreviewStopped ) . toHaveBeenCalledOnce ( )
821837 expectPreviewGeometry ( secondPreview , secondPreviewLayout )
822838 } finally {
823839 errorSub . remove ( )
0 commit comments