package net.azib.ipscan.util;

import org.junit.Before;
import org.junit.Test;

import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.net.InetAddress;

import static org.junit.Assert.assertEquals;

public class MDNSResolverTest {
	MDNSResolver resolver;

	@Before
	public void setUp() throws Exception {
		resolver = new MDNSResolver(3000);
	}

	@Test
	public void encodeNameForDNS() throws Exception {
		var baos = new ByteArrayOutputStream();
		var out = new DataOutputStream(baos);
		resolver.writeName(out, "a.bb.ccc.dddd");
		assertEquals("\u0001a\u0002bb\u0003ccc\u0004dddd\u0000", new String(baos.toByteArray()));
	}

	@Test
	public void decodeNameFromDNS() throws Exception {
		var data = "\u0000\u0000\u0001a\u0002bb\u0003ccc\u0004dddd\u0000".getBytes();
		assertEquals("a.bb.ccc.dddd", resolver.decodeName(data, 2, data.length - 2));
	}

	@Test
	public void reverseLookupName() throws Exception {
		assertEquals("2.0.168.192.in-addr.arpa", resolver.reverseName(InetAddress.getByName("192.168.0.2").getAddress()));
	}
}
