### Question:
KVPair { public static KVPair parseHttpHeader(String str) { int idx = str.indexOf(':'); if (idx == 0) { return null; } if (idx > 0) { if (idx < str.length() - 1) { int si = idx + 1; while (Character.isWhitespace(str.charAt(si)) && si < str.length() - 1) { si++; } return new KVPair(str.substring(0, idx), str.substring(si)); } else { return new KVPair(str.substring(0, idx), ""); } } else { return new KVPair(str, ""); } } KVPair(String key, String val); static KVPair parsePair(String str); static KVPair parseHttpHeader(String str); void setKeyValue(String key, String val); String getKey(); boolean keyMatch(String k); void setKey(String nk); String setValue(String nv); String getValue(); String toQuotedKeyString(); String toString(); boolean equals(KVPair other);  }### Answer:
@Test public void parseHttpHeader() { testPair(KVPair.parseHttpHeader("abc:def"), "abc", "def"); testPair(KVPair.parseHttpHeader("abc: def"), "abc", "def"); testPair(KVPair.parseHttpHeader("abc: def"), "abc", "def"); testPair(KVPair.parseHttpHeader("abc: def"), "abc", "def"); testPair(KVPair.parseHttpHeader("abc: "), "abc", " "); testPair(KVPair.parseHttpHeader("abc: "), "abc", " "); testPair(KVPair.parseHttpHeader("abc:"), "abc", ""); testPair(KVPair.parseHttpHeader("abc"), "abc", ""); assertEquals(KVPair.parseHttpHeader(":"), null); }