### Question:
CouchClientWrapper implements CouchDB { @Override public void putCheckpoint(String checkpointId, String sequence) { Misc.checkNotNullOrEmpty(checkpointId, "Checkpoint id"); Misc.checkNotNullOrEmpty(sequence, "Sequence"); String replicatorLocalDocId = getCheckpointLocalDocId(checkpointId); RemoteCheckpointDoc checkpointDoc; try { checkpointDoc = couchClient.getDocument(replicatorLocalDocId, RemoteCheckpointDoc .class); checkpointDoc.setLastSequence(sequence); } catch (NoResourceException e) { checkpointDoc = new RemoteCheckpointDoc(sequence); } try { Response response = couchClient.putUpdate(replicatorLocalDocId, checkpointDoc); logger.fine(String.format("Response: %s", response)); } catch (DocumentConflictException e) { } } CouchClientWrapper(CouchClient client);  CouchClientWrapper(URI rootUri,
                              List<HttpConnectionRequestInterceptor> requestInterceptors,
                              List<HttpConnectionResponseInterceptor> responseInterceptors); CouchClient getCouchClient(); @Override String getIdentifier(); @Override boolean exists(); @Override String getCheckpoint(String checkpointId); @Override void putCheckpoint(String checkpointId, String sequence); @Override ChangesResult changes(Object lastSequence, int limit); @Override ChangesResult changes(PullFilter filter, Object lastSequence, int limit); @Override ChangesResult changes(String selector, Object lastSequence, int limit); @Override ChangesResult changes(List<String> docIds, Object lastSequence, int limit); @Override Iterable<DocumentRevsList> bulkGetRevisions(List<BulkGetRequest> requests,
                                                       boolean pullAttachmentsInline); @Override List<DocumentRevs> getRevisions(String documentId,
                                           Collection<String> revisionIds,
                                           Collection<String> attsSince,
                                           boolean pullAttachmentsInline); @Override Response create(Object object); @Override Response update(String id, Object object); @Override T get(Class<T> classType, String id); @Override Response delete(String id, String rev); void createDatabase(); @Override void bulkCreateDocs(List<InternalDocumentRevision> revisions); @Override void bulkCreateSerializedDocs(List<String> serializedDocs); @Override List<Response> putMultiparts(List<MultipartAttachmentWriter> multiparts); @Override Map<String, CouchClient.MissingRevisions> revsDiff(Map<String, Set<String>> revisions); @Override boolean isBulkSupported(); @Override T pullAttachmentWithRetry(String id, String rev, String name, CouchClient
            .InputStreamProcessor<T> streamProcessor);  }### Answer:
@Test(expected = IllegalArgumentException.class) public void putCheckpoint_putNull_exception() { remoteDb.putCheckpoint(REPLICATOR_IDENTIFIER, null); }
@Test(expected = IllegalArgumentException.class) public void putCheckpoint_nullCheckpointId_exception() { remoteDb.putCheckpoint(null, "101"); }
@Test(expected = IllegalArgumentException.class) public void putCheckpoint_emptyCheckpointId_exception() { remoteDb.putCheckpoint("", "101"); }