diff --git a/dnssd/src/main/java/com/github/druk/dnssd/DNSSD.java b/dnssd/src/main/java/com/github/druk/dnssd/DNSSD.java index 02afc2a..e60ae53 100644 --- a/dnssd/src/main/java/com/github/druk/dnssd/DNSSD.java +++ b/dnssd/src/main/java/com/github/druk/dnssd/DNSSD.java @@ -637,7 +637,7 @@ static Map parseTXTRecords(TXTRecord record) { Map result = new HashMap<>(record.size()); for (int i = 0; i < record.size(); i++) { try { - if (!TextUtils.isEmpty(record.getKey(i)) && TextUtils.isEmpty(record.getValueAsString(i))) { + if (!TextUtils.isEmpty(record.getKey(i))) { result.put(record.getKey(i), record.getValueAsString(i)); } } catch (Exception e) { diff --git a/dnssd/src/test/java/com/github/druk/dnssd/DnssdTest.java b/dnssd/src/test/java/com/github/druk/dnssd/DnssdTest.java index b3f5f24..fd64ddb 100644 --- a/dnssd/src/test/java/com/github/druk/dnssd/DnssdTest.java +++ b/dnssd/src/test/java/com/github/druk/dnssd/DnssdTest.java @@ -15,6 +15,7 @@ */ package com.github.druk.dnssd; +import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -28,11 +29,14 @@ import android.content.Context; import android.os.Build; import android.os.Handler; +import android.text.TextUtils; +import android.util.Log; import java.net.Inet4Address; import java.net.Inet6Address; import java.net.InetAddress; import java.util.HashMap; +import java.util.Map; import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyInt; @@ -220,4 +224,38 @@ public void test_query_records_failure() throws DNSSDException { verify(queryListener).operationFailed(any(DNSSDService.class), eq(0)); } + @Test + public void test_txt_record_parse_empty() { + TXTRecord record = new TXTRecord(); + Map map = DNSSD.parseTXTRecords(record); + Assert.assertTrue(map.isEmpty()); + } + + @Test + public void test_txt_record_parse_empty_value() { + TXTRecord record = new TXTRecord(); + record.set("key", (String) null); + Map map = DNSSD.parseTXTRecords(record); + Assert.assertEquals(map.size(), 1); + Assert.assertNull(map.get("key")); + } + + @Test + public void test_txt_record_parse_with_string_value() { + TXTRecord record = new TXTRecord(); + record.set("key", "value"); + Map map = DNSSD.parseTXTRecords(record); + Assert.assertEquals(map.size(), 1); + Assert.assertEquals(map.get("key"), "value"); + } + + @Test + public void test_txt_record_parse_with_byte_value() { + TXTRecord record = new TXTRecord(); + record.set("key", "value".getBytes()); + Map map = DNSSD.parseTXTRecords(record); + Assert.assertEquals(map.size(), 1); + Assert.assertEquals(map.get("key"), "value"); + } + }