@@ -739,7 +739,7 @@ module.exports = function (appClient) {
739739 stub . restore ( ) ;
740740 } ) ;
741741
742- it ( 'testAddOnSystemCapabilityListenerWithSubscriptionsNotSupportedAndCapabilityNotCached' , async function ( ) {
742+ it ( 'testAddOnSystemCapabilityListenerWithSubscriptionsNotSupportedAndCapabilityNotCached' , async function ( ) {
743743 const sdlManager = appClient . _sdlManager ;
744744 const lifecycleManager = sdlManager . _lifecycleManager ;
745745 const scm = createSampleManager ( lifecycleManager ) ;
@@ -765,31 +765,31 @@ module.exports = function (appClient) {
765765 . setPatchVersion ( 0 ) ;
766766 } ) ;
767767
768- scm . _setCapability ( SDL . rpc . enums . SystemCapabilityType . VIDEO_STREAMING , null ) ;
768+ scm . _setCapability ( SDL . rpc . enums . SystemCapabilityType . VIDEO_STREAMING , videoStreamingCapability ) ;
769769
770770 // Add listener1
771771 const onSystemCapabilityListener1 = sinon . fake ( ( ) => { } ) ;
772- // When the first listener is added, GetSystemCapability request should out because because capability is not cached
772+ // When the first listener is added, GetSystemCapability request should go out with subscribe=false
773773 // SCM uses sendRpcMessage and not sendRpcResolve
774774 const stub = sinon . stub ( sdlManager . _lifecycleManager , 'sendRpcMessage' )
775775 stub . withArgs ( sinon . match . instanceOf ( SDL . rpc . messages . GetSystemCapability ) ) . callsFake ( createOnSendGetSystemCapabilityAnswer ( true , false , scm ) ) ;
776776
777777 scm . addOnSystemCapabilityListener ( SDL . rpc . enums . SystemCapabilityType . VIDEO_STREAMING , onSystemCapabilityListener1 ) ;
778778 Validator . assertTrue ( stub . calledOnce ) ;
779- Validator . assertTrue ( onSystemCapabilityListener1 . calledOnce ) ;
779+ Validator . assertNotNull ( onSystemCapabilityListener1 . calledOnce ) ;
780780 stub . restore ( ) ;
781781
782782 // Add listener2
783783 const onSystemCapabilityListener2 = sinon . fake ( ( ) => { } ) ;
784784 scm . addOnSystemCapabilityListener ( SDL . rpc . enums . SystemCapabilityType . VIDEO_STREAMING , onSystemCapabilityListener2 ) ;
785785 await sleep ( 200 ) ;
786- Validator . assertTrue ( onSystemCapabilityListener2 . calledOnce ) ;
786+ Validator . assertNotNull ( onSystemCapabilityListener2 . calledOnce ) ;
787787
788788 // Add listener3
789789 const onSystemCapabilityListener3 = sinon . fake ( ( ) => { } ) ;
790790 scm . addOnSystemCapabilityListener ( SDL . rpc . enums . SystemCapabilityType . VIDEO_STREAMING , onSystemCapabilityListener3 ) ;
791791 await sleep ( 200 ) ;
792- Validator . assertTrue ( onSystemCapabilityListener3 . calledOnce ) ;
792+ Validator . assertNotNull ( onSystemCapabilityListener3 . calledOnce ) ;
793793
794794 // Remove listener1
795795 scm . removeOnSystemCapabilityListener ( SDL . rpc . enums . SystemCapabilityType . VIDEO_STREAMING , onSystemCapabilityListener1 ) ;
@@ -809,110 +809,92 @@ module.exports = function (appClient) {
809809 stub . restore ( ) ;
810810 } ) ;
811811
812- it ( 'testAddOnSystemCapabilityListenerThenGetCapabilityWhenSubscriptionsAreNotSupported' , function ( done ) {
812+ it ( 'testAddOnSystemCapabilityListenerThenGetCapabilityWhenSubscriptionsAreNotSupported' , async function ( ) {
813813 const sdlManager = appClient . _sdlManager ;
814814 const lifecycleManager = sdlManager . _lifecycleManager ;
815815 const scm = createSampleManager ( lifecycleManager ) ;
816-
816+
817817 const sdlMsgVersion = new SDL . rpc . structs . SdlMsgVersion ( )
818- . setMajorVersion ( 5 )
818+ . setMajorVersion ( 5 ) // This version doesn't support capability subscriptions
819819 . setMinorVersion ( 0 )
820820 . setPatchVersion ( 0 ) ;
821821
822- //Raed
823- const HMIStatusAnswer = sinon . stub ( lifecycleManager , 'addOnRPCListener' )
824- . callsFake ( createOnHMIStatusAnswer ( HMILevel . HMI_FULL ) ) ;
822+ const hmiStatusAnswer = sinon . stub ( lifecycleManager , 'addRpcListener' )
823+ . callsFake ( function ( ) {
824+ const responseSuccess = new SDL . rpc . messages . OnHMIStatus ( {
825+ functionName : SDL . rpc . enums . FunctionID . OnHMIStatus ,
826+ } )
827+ . setHmiLevel ( SDL . rpc . enums . HMILevel . HMI_FULL ) ;
828+ } ) ;
829+
825830 const versionStub = sinon . stub ( lifecycleManager , 'getSdlMsgVersion' )
826831 . callsFake ( function ( ) {
827832 return new SDL . rpc . structs . SdlMsgVersion ( )
828- . setMajorVersion ( 6 )
833+ . setMajorVersion ( 5 )
829834 . setMinorVersion ( 0 )
830835 . setPatchVersion ( 0 ) ;
831836 } ) ;
832837
833-
834838 scm . _setCapability ( SDL . rpc . enums . SystemCapabilityType . VIDEO_STREAMING , videoStreamingCapability ) ;
835839
836840 // Add listener1
841+ const onSystemCapabilityListener1 = sinon . fake ( ( ) => { } ) ;
837842 // When the first listener is added, GetSystemCapability request should go out with subscribe=false
838- let onSystemCapabilityListener1 //= mock(OnSystemCapabilityListener.class);
839- SystemCapabilityAnswer = sinon . stub ( internalInterface , 'sendRPC' )
840- . callsFake ( createOnSendGetSystemCapabilityAnswer ( true , false , scm ) ) ;
841- scm . addOnSystemCapabilityListener ( SDL . rpc . enums . SystemCapabilityType . VIDEO_STREAMING , onSystemCapabilityListener1 ) ;
842- verify ( internalInterface , times ( 0 ) ) . sendRPC ( any ( GetSystemCapability . class ) ) ;
843- verify ( onSystemCapabilityListener1 , times ( 1 ) ) . onCapabilityRetrieved ( any ( Object . class ) ) ;
844-
845-
846- // Get Capability (should notify listener1 again)
847- scm . getCapability ( SDL . rpc . enums . SystemCapabilityType . VIDEO_STREAMING ) ;
848- verify ( internalInterface , times ( 1 ) ) . sendRPC ( any ( GetSystemCapability . class ) ) ;
849- verify ( onSystemCapabilityListener1 , times ( 2 ) ) . onCapabilityRetrieved ( any ( Object . class ) ) ;
843+ // SCM uses sendRpcMessage and not sendRpcResolve
844+ const stub = sinon . stub ( sdlManager . _lifecycleManager , 'sendRpcMessage' )
845+ stub . withArgs ( sinon . match . instanceOf ( SDL . rpc . messages . GetSystemCapability ) ) . callsFake ( createOnSendGetSystemCapabilityAnswer ( true , false , scm ) ) ;
850846
847+ scm . addOnSystemCapabilityListener ( SDL . rpc . enums . SystemCapabilityType . VIDEO_STREAMING , onSystemCapabilityListener1 ) ;
848+ Validator . assertTrue ( stub . calledOnce ) ;
849+ Validator . assertNotNull ( onSystemCapabilityListener1 . calledOnce ) ;
850+ stub . restore ( ) ;
851851
852852 // Add listener2
853- const onSystemCapabilityListener2 = mock ( OnSystemCapabilityListener . class ) ;
853+ const onSystemCapabilityListener2 = sinon . fake ( ( ) => { } ) ;
854854 scm . addOnSystemCapabilityListener ( SDL . rpc . enums . SystemCapabilityType . VIDEO_STREAMING , onSystemCapabilityListener2 ) ;
855- verify ( onSystemCapabilityListener2 , times ( 1 ) ) . onCapabilityRetrieved ( any ( Object . class ) ) ;
856-
857-
858- // Get Capability (should notify listener1 & listener2 again)
859- scm . getCapability ( SDL . rpc . enums . SystemCapabilityType . VIDEO_STREAMING ) ;
860- verify ( internalInterface , times ( 2 ) ) . sendRPC ( any ( GetSystemCapability . class ) ) ;
861- verify ( onSystemCapabilityListener1 , times ( 3 ) ) . onCapabilityRetrieved ( any ( Object . class ) ) ;
862- verify ( onSystemCapabilityListener2 , times ( 2 ) ) . onCapabilityRetrieved ( any ( Object . class ) ) ;
863-
855+ await sleep ( 200 ) ;
856+ Validator . assertTrue ( stub . calledOnce ) ;
857+ Validator . assertNotNull ( onSystemCapabilityListener1 . calledOnce ) ;
858+ Validator . assertNotNull ( onSystemCapabilityListener2 . calledOnce ) ;
864859
865860 // Add listener3
866- const onSystemCapabilityListener3 = mock ( OnSystemCapabilityListener . class ) ;
861+ const onSystemCapabilityListener3 = sinon . fake ( ( ) => { } ) ;
867862 scm . addOnSystemCapabilityListener ( SDL . rpc . enums . SystemCapabilityType . VIDEO_STREAMING , onSystemCapabilityListener3 ) ;
868- verify ( onSystemCapabilityListener3 , times ( 1 ) ) . onCapabilityRetrieved ( any ( Object . class ) ) ;
869-
870-
871- // Get Capability (should notify listener1 & listener2 & listener3 again)
872- scm . getCapability ( SDL . rpc . enums . SystemCapabilityType . VIDEO_STREAMING ) ;
873- verify ( internalInterface , times ( 3 ) ) . sendRPC ( any ( GetSystemCapability . class ) ) ;
874- verify ( onSystemCapabilityListener1 , times ( 4 ) ) . onCapabilityRetrieved ( any ( Object . class ) ) ;
875- verify ( onSystemCapabilityListener2 , times ( 3 ) ) . onCapabilityRetrieved ( any ( Object . class ) ) ;
876- verify ( onSystemCapabilityListener3 , times ( 2 ) ) . onCapabilityRetrieved ( any ( Object . class ) ) ;
877-
863+ await sleep ( 200 ) ;
864+ Validator . assertTrue ( stub . calledOnce ) ;
865+ Validator . assertNotNull ( onSystemCapabilityListener1 . calledOnce ) ;
866+ Validator . assertNotNull ( onSystemCapabilityListener2 . calledOnce ) ;
867+ Validator . assertNotNull ( onSystemCapabilityListener3 . calledOnce ) ;
878868
879869 // Remove listener1
880870 scm . removeOnSystemCapabilityListener ( SDL . rpc . enums . SystemCapabilityType . VIDEO_STREAMING , onSystemCapabilityListener1 ) ;
871+ await sleep ( 200 ) ;
872+ Validator . assertTrue ( stub . calledOnce ) ;
873+ Validator . assertNotNull ( onSystemCapabilityListener1 . calledOnce ) ;
874+ Validator . assertNotNull ( onSystemCapabilityListener2 . calledOnce ) ;
875+ Validator . assertNotNull ( onSystemCapabilityListener3 . calledOnce ) ;
881876
882-
883- // Get Capability (should notify listener2 & listener3 again)
884- scm . getCapability ( SDL . rpc . enums . SystemCapabilityType . VIDEO_STREAMING ) ;
885- verify ( internalInterface , times ( 4 ) ) . sendRPC ( any ( GetSystemCapability . class ) ) ;
886- verify ( onSystemCapabilityListener1 , times ( 4 ) ) . onCapabilityRetrieved ( any ( Object . class ) ) ;
887- verify ( onSystemCapabilityListener2 , times ( 4 ) ) . onCapabilityRetrieved ( any ( Object . class ) ) ;
888- verify ( onSystemCapabilityListener3 , times ( 3 ) ) . onCapabilityRetrieved ( any ( Object . class ) ) ;
889-
890-
891- // Remove listener2
877+ // Remove listener1
892878 scm . removeOnSystemCapabilityListener ( SDL . rpc . enums . SystemCapabilityType . VIDEO_STREAMING , onSystemCapabilityListener2 ) ;
893-
894-
895- // Get Capability (should notify listener3 again)
896- scm . getCapability ( SDL . rpc . enums . SystemCapabilityType . VIDEO_STREAMING ) ;
897- verify ( internalInterface , times ( 5 ) ) . sendRPC ( any ( GetSystemCapability . class ) ) ;
898- verify ( onSystemCapabilityListener1 , times ( 4 ) ) . onCapabilityRetrieved ( any ( Object . class ) ) ;
899- verify ( onSystemCapabilityListener2 , times ( 4 ) ) . onCapabilityRetrieved ( any ( Object . class ) ) ;
900- verify ( onSystemCapabilityListener3 , times ( 4 ) ) . onCapabilityRetrieved ( any ( Object . class ) ) ;
879+ await sleep ( 200 ) ;
880+ Validator . assertTrue ( stub . calledOnce ) ;
881+ Validator . assertNotNull ( onSystemCapabilityListener1 . calledOnce ) ;
882+ Validator . assertNotNull ( onSystemCapabilityListener2 . calledOnce ) ;
883+ Validator . assertNotNull ( onSystemCapabilityListener3 . calledOnce ) ;
901884
902885
903886 // Remove listener3
887+ // When the last listener is removed, GetSystemCapability request should not go out because subscription is not supported
888+ const stub2 = sinon . stub ( sdlManager . _lifecycleManager , 'sendRpcMessage' )
889+ stub2 . withArgs ( sinon . match . instanceOf ( SDL . rpc . messages . GetSystemCapability ) ) . callsFake ( createOnSendGetSystemCapabilityAnswer ( true , false , scm ) ) ;
904890 scm . removeOnSystemCapabilityListener ( SDL . rpc . enums . SystemCapabilityType . VIDEO_STREAMING , onSystemCapabilityListener3 ) ;
905- verify ( internalInterface , times ( 5 ) ) . sendRPC ( any ( GetSystemCapability . class ) ) ;
906-
891+ await sleep ( 200 ) ;
892+ Validator . assertTrue ( stub . called ) ;
907893
908- // Get Capability (should not notify any listener again because they are all removed)
909- scm . getCapability ( SDL . rpc . enums . SystemCapabilityType . VIDEO_STREAMING ) ;
910- verify ( internalInterface , times ( 6 ) ) . sendRPC ( any ( GetSystemCapability . class ) ) ;
911- verify ( onSystemCapabilityListener1 , times ( 4 ) ) . onCapabilityRetrieved ( any ( Object . class ) ) ;
912- verify ( onSystemCapabilityListener2 , times ( 4 ) ) . onCapabilityRetrieved ( any ( Object . class ) ) ;
913- verify ( onSystemCapabilityListener3 , times ( 4 ) ) . onCapabilityRetrieved ( any ( Object . class ) ) ;
914- done ( ) ;
915- } ) ;
894+ hmiStatusAnswer . restore ( ) ;
895+ versionStub . restore ( ) ;
896+ stub . restore ( ) ;
897+ } ) ;
916898
917899 it ( 'testGetAndAddListenerForDisplaysCapability' , function ( done ) {
918900 const sdlManager = appClient . _sdlManager ;
0 commit comments