### Question:
PahoRxMqttClient implements RxMqttClient { public static Builder builder(String brokerUri) { return builder(brokerUri, MqttAsyncClient.generateClientId()); } private  PahoRxMqttClient(final Builder builder); @Override Single<String> getClientId(); @Override Single<String> getServerUri(); @Override Single<Boolean> isConnected(); @Override Completable close(); @Override Single<RxMqttToken> connect(); @Override Single<RxMqttToken> disconnect(); @Override Completable disconnectForcibly(); @Override Single<RxMqttToken> publish(String topic, RxMqttMessage message); @Override Flowable<RxMqttMessage> on(String topic); @Override Flowable<RxMqttMessage> on(String topic, Consumer<RxMqttToken> doOnComplete); @Override Flowable<RxMqttMessage> on(String[] topics); @Override Flowable<RxMqttMessage> on(String[] topics, Consumer<RxMqttToken> doOnComplete); @Override Flowable<RxMqttMessage> on(String topic, RxMqttQoS qos); @Override Flowable<RxMqttMessage> on(String topic, RxMqttQoS qos,
      Consumer<RxMqttToken> doOnComplete); @Override Flowable<RxMqttMessage> on(String[] topics, RxMqttQoS[] qos); @Override Flowable<RxMqttMessage> on(String[] topics, RxMqttQoS[] qos,
      Consumer<RxMqttToken> doOnComplete); @Override Flowable<RxMqttMessage> on(String topic, BackpressureStrategy strategy); @Override Flowable<RxMqttMessage> on(String topic, BackpressureStrategy strategy,
      Consumer<RxMqttToken> doOnComplete); @Override Flowable<RxMqttMessage> on(String topic, RxMqttQoS qos, BackpressureStrategy strategy); @Override Flowable<RxMqttMessage> on(String topic, RxMqttQoS qos, BackpressureStrategy strategy,
      Consumer<RxMqttToken> doOnComplete); @Override Flowable<RxMqttMessage> on(
      String[] topics, RxMqttQoS[] rxMqttQos, BackpressureStrategy strategy); @Override Flowable<RxMqttMessage> on(String[] topics, RxMqttQoS[] qos, BackpressureStrategy strategy,
      Consumer<RxMqttToken> doOnComplete); @Override Single<RxMqttToken> off(String... topics); static Builder builder(String brokerUri); static Builder builder(String brokerUri, String clientId); static Builder builder(
      String brokerUri, String clientId, MqttClientPersistence persistence); static Builder builder(IMqttAsyncClient client);  }### Answer:
@Test(expected = NullPointerException.class) public void whenNullClientIsPassedThenThrowsAnError() { PahoRxMqttClient.builder((IMqttAsyncClient) null).build(); }
@Test(expected = NullPointerException.class) public void whenNullBrokerUriIsPassedThenThrowsAnError() { PahoRxMqttClient.builder((String) null).build(); }
@Test(expected = IllegalArgumentException.class) public void whenNullBrokerUriAndClientIdIsPassedThenThrowsAnError() { PahoRxMqttClient.builder(null, null).build(); }
@Test(expected = IllegalArgumentException.class) public void whenNullBrokerUriAndClientIdAndMqttClientPersistenceIsPassedThenThrowsAnError() { PahoRxMqttClient.builder(null, null, null).build(); }