@@ -578,6 +578,41 @@ public void testAddOnSystemCapabilityListenerThenGetCapability() {
578578 verify (onSystemCapabilityListener3 , times (4 )).onCapabilityRetrieved (any (Object .class ));
579579 }
580580
581+ public void testGetAndAddListenerForDisplaysCapability () {
582+ ISdl internalInterface ;
583+ SystemCapabilityManager scm ;
584+ OnSystemCapabilityListener onSystemCapabilityListener ;
585+ DisplayCapabilities retrievedCapability ;
586+
587+
588+ // Test case 1 (capability cached, listener not null, forceUpdate true)
589+ // Force updating DISPLAYS capability should call onError()
590+ internalInterface = mock (ISdl .class );
591+ scm = new SystemCapabilityManager (internalInterface );
592+ onSystemCapabilityListener = mock (OnSystemCapabilityListener .class );
593+ doAnswer (createOnSendGetSystemCapabilityAnswer (true , null )).when (internalInterface ).sendRPC (any (GetSystemCapability .class ));
594+ scm .setCapability (SystemCapabilityType .DISPLAYS , new DisplayCapabilities ());
595+ retrievedCapability = (DisplayCapabilities ) scm .getCapability (SystemCapabilityType .DISPLAYS , onSystemCapabilityListener , true );
596+ assertNotNull (retrievedCapability );
597+ verify (internalInterface , times (0 )).sendRPC (any (GetSystemCapability .class ));
598+ verify (onSystemCapabilityListener , times (0 )).onCapabilityRetrieved (any (Object .class ));
599+ verify (onSystemCapabilityListener , times (1 )).onError (any (String .class ));
600+
601+
602+ // Test case 2 (Add listener)
603+ // When the first DISPLAYS listener is added, GetSystemCapability request should not go out
604+ OnSystemCapabilityListener onSystemCapabilityListener1 = mock (OnSystemCapabilityListener .class );
605+ scm .addOnSystemCapabilityListener (SystemCapabilityType .DISPLAYS , onSystemCapabilityListener1 );
606+ verify (internalInterface , times (0 )).sendRPC (any (GetSystemCapability .class ));
607+ verify (onSystemCapabilityListener1 , times (1 )).onCapabilityRetrieved (any (Object .class ));
608+
609+
610+ // Test case 3 (Remove listener)
611+ // When the last DISPLAY listener is removed, GetSystemCapability request should not go out
612+ scm .removeOnSystemCapabilityListener (SystemCapabilityType .DISPLAYS , onSystemCapabilityListener1 );
613+ verify (internalInterface , times (0 )).sendRPC (any (GetSystemCapability .class ));
614+ }
615+
581616 public void testListConversion (){
582617 SystemCapabilityManager systemCapabilityManager = createSampleManager ();
583618 Object capability = systemCapabilityManager .getCapability (SystemCapabilityType .SOFTBUTTON );
0 commit comments