package biz.aQute.bnd.reporter.plugins.resource.converter;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.util.Map;
import java.util.jar.Manifest;

import org.junit.jupiter.api.Test;

public class ManifestConverterPluginTest {

	@Test
	public void testManifestConvertion() throws Exception {
		ByteArrayOutputStream out;
		Manifest manifest = null;
		Object entry = null;
		final Map<String, Object> expected = null;

		manifest = new Manifest();
		out = new ByteArrayOutputStream();
		manifest.write(out);
		entry = new ManifestConverterPlugin().extract(new ByteArrayInputStream(out.toByteArray()));
		assertEquals(expected, entry);

		manifest = new Manifest();
		manifest.getMainAttributes()
			.putValue("Bundle-SymbolicName", "test");
		manifest.getMainAttributes()
			.putValue("Export-Package", "test;version=\"1.0.0\";direc:=test");
		manifest.getMainAttributes()
			.putValue("Manifest-Version", "1.0");
		out = new ByteArrayOutputStream();
		manifest.write(out);
		entry = new ManifestConverterPlugin().extract(new ByteArrayInputStream(out.toByteArray()));

		@SuppressWarnings("unchecked")
		final Map<Object, Object> entryMap = (Map<Object, Object>) entry;
		assertEquals(3, entryMap.size());
		assertTrue(entryMap.containsKey("Bundle-SymbolicName"));
		assertTrue(entryMap.containsKey("Export-Package"));
		assertTrue(entryMap.containsKey("Manifest-Version"));
	}
}
