@Test
 public void testGetPublicationsEmptyList() {
   SlaveServer mockSlave = mock(SlaveServer.class);
   when(mockSlave.getPublications()).thenReturn(Lists.<DefaultPublisher<?>>newArrayList());
   SlaveXmlRpcEndpointImpl slave = new SlaveXmlRpcEndpointImpl(mockSlave);
   List<Object> response = slave.getPublications("/foo");
   assertEquals(response.get(0), StatusCode.SUCCESS.toInt());
   assertEquals(response.get(2), Lists.newArrayList());
 }
 @Test
 public void testGetPidNotSupported() {
   SlaveServer mockSlave = mock(SlaveServer.class);
   AdvertiseAddress address = AdvertiseAddress.newPrivate();
   address.setStaticPort(1234);
   when(mockSlave.getPid()).thenThrow(new UnsupportedOperationException());
   SlaveXmlRpcEndpointImpl slave = new SlaveXmlRpcEndpointImpl(mockSlave);
   List<Object> response = slave.getPid("/foo");
   assertEquals(response.get(0), StatusCode.FAILURE.toInt());
 }
 @Test
 public void testGetPid() {
   SlaveServer mockSlave = mock(SlaveServer.class);
   AdvertiseAddress address = AdvertiseAddress.newPrivate();
   address.setStaticPort(1234);
   when(mockSlave.getPid()).thenReturn(1234);
   SlaveXmlRpcEndpointImpl slave = new SlaveXmlRpcEndpointImpl(mockSlave);
   List<Object> response = slave.getPid("/foo");
   assertEquals(response.get(0), StatusCode.SUCCESS.toInt());
   assertEquals(response.get(2), 1234);
 }
 @Test
 public void testRequestTopic() throws ServerException {
   SlaveServer mockSlave = mock(SlaveServer.class);
   AdvertiseAddress address = AdvertiseAddress.newPrivate();
   address.setStaticPort(1234);
   TcpRosProtocolDescription protocol = new TcpRosProtocolDescription(address);
   when(mockSlave.requestTopic(
           Matchers.<String>any(),
           Matchers.eq(Sets.newHashSet(ProtocolNames.TCPROS, ProtocolNames.UDPROS))))
       .thenReturn(protocol);
   SlaveXmlRpcEndpointImpl slave = new SlaveXmlRpcEndpointImpl(mockSlave);
   Object[][] protocols = new Object[][] {{ProtocolNames.TCPROS}, {ProtocolNames.UDPROS}};
   List<Object> response = slave.requestTopic("/foo", "/bar", protocols);
   assertEquals(response.get(0), StatusCode.SUCCESS.toInt());
   assertEquals(response.get(2), protocol.toList());
 }
 @Test
 public void testGetPublications() {
   SlaveServer mockSlave = mock(SlaveServer.class);
   DefaultPublisher<?> mockPublisher = mock(DefaultPublisher.class);
   when(mockSlave.getPublications())
       .thenReturn(Lists.<DefaultPublisher<?>>newArrayList(mockPublisher));
   when(mockPublisher.getTopicName()).thenReturn(GraphName.of("/bar"));
   when(mockPublisher.getTopicMessageType()).thenReturn("/baz");
   when(mockPublisher.getTopicDeclarationAsList()).thenReturn(Lists.newArrayList("/bar", "/baz"));
   SlaveXmlRpcEndpointImpl slave = new SlaveXmlRpcEndpointImpl(mockSlave);
   List<Object> response = slave.getPublications("/foo");
   assertEquals(StatusCode.SUCCESS.toInt(), response.get(0));
   List<List<String>> protocols = Lists.newArrayList();
   protocols.add(Lists.newArrayList("/bar", "/baz"));
   assertEquals(protocols, response.get(2));
 }