package test;
import java.io.BufferedReader;
import java.io.File;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Properties;
import aQute.bnd.osgi.Builder;
import aQute.bnd.osgi.Jar;
import aQute.bnd.osgi.Resource;
import aQute.lib.io.IO;
import junit.framework.TestCase;
@SuppressWarnings("resource")
public class MergeTest extends TestCase {
public static void testFirst() throws Exception {
testMerge("first", new String[] {
"A", "C"
}, new String[] {
"B"
}, "first", 0, 0);
}
public static void testMergeFirst() throws Exception {
testMerge("merge-first", new String[] {
"A", "B", "C"
}, new String[] {
""
}, "first", 0, 0);
}
public static void testDefault() throws Exception {
testMerge(null, new String[] {
"A", "B", "C"
}, new String[] {}, "first", 0, 1);
}
public static void testMergeLast() throws Exception {
testMerge("merge-last", new String[] {
"A", "B", "C"
}, new String[] {
""
}, "last", 0, 0);
}
public static void testError() throws Exception {
testMerge("error", null, null, null, 1, 1);
}
static void testMerge(String type, String[] in, String[] out, String c, int errors, int warnings) throws Exception {
Builder b = new Builder();
try {
b.setClasspath(new File[] {
IO.getFile("src/test/split/split-a.jar"), IO.getFile("src/test/split/split-b.jar")
});
Properties p = new Properties();
if (type != null)
p.put("Export-Package", "test.split;-split-package:=" + type);
else
p.put("Export-Package", "test.split");
p.put("Import-Package", "");
b.setProperties(p);
Jar jar = b.build();
System.err.println("Errors :" + b.getErrors());
System.err.println("Warnings :" + b.getWarnings());
assertEquals(errors, b.getErrors().size());
assertEquals(warnings, b.getWarnings().size());
if (errors != 0)
return;
for (int i = 0; in != null && i < in.length; i++)
assertNotNull("Contains " + in[i], jar.getResource("test/split/" + in[i]));
for (int i = 0; out != null && i < out.length; i++)
assertNull("Does not contain " + out[i], jar.getResource("test/split/" + out[i]));
Resource r = jar.getResource("test/split/C");
InputStream is = r.openInputStream();
BufferedReader dis = new BufferedReader(new InputStreamReader(is));
String s = dis.readLine();
assertEquals(s, c);
} finally {
b.close();
}
}
}