### Question:
MultiDomainServerState implements Iterable<DN> { @Override public String toString() { final StringBuilder buffer = new StringBuilder(); toString(buffer); return buffer.toString(); } MultiDomainServerState();  MultiDomainServerState(MultiDomainServerState cookie);  MultiDomainServerState(String cookie); void clear(); boolean update(DN baseDN, CSN csn); void update(DN baseDN, ServerState serverState); void replace(DN baseDN, ServerState serverState); void update(MultiDomainServerState state); Map<DN, List<CSN>> getSnapshot(); @Override String toString(); void toString(StringBuilder buffer); boolean isEmpty(); @Override Iterator<DN> iterator(); ServerState getServerState(DN baseDN); CSN getCSN(DN baseDN, int serverId); Pair<DN, CSN> getOldestCSNExcluding(MultiDomainServerState excludedCSNs); boolean removeCSN(DN baseDN, CSN expectedCSN); boolean equalsTo(MultiDomainServerState other); boolean cover(MultiDomainServerState covered); boolean cover(DN baseDN, CSN csn);  }### Answer:
@Test(dataProvider = "decodeAndEncodeData") public void decodeAndEncode(String cookie, String expectedCookie) throws Exception { final MultiDomainServerState state = new MultiDomainServerState(cookie); assertEquals(state.toString(), expectedCookie); }
@Test(dataProvider = "copyCtorData") public void copyCtor(String cookie) throws Exception { final MultiDomainServerState state = new MultiDomainServerState(cookie); final MultiDomainServerState copy = new MultiDomainServerState(state); assertEquals(copy.toString(), cookie); }