package test;
import org.osgi.framework.namespace.NativeNamespace;
import org.osgi.resource.Requirement;
import aQute.bnd.osgi.Verifier;
import aQute.bnd.osgi.resource.FilterParser;
import aQute.bnd.osgi.resource.FilterParser.Expression;
import aQute.bnd.osgi.resource.ResourceBuilder;
import junit.framework.TestCase;
public class NativeCodeHeaderTest extends TestCase {
public void testBadSelectionFilter() throws Exception {
}
public void testNative() throws Exception {
ResourceBuilder rb = new ResourceBuilder();
Requirement nativeCode = rb.getNativeCode(//
"f1;"//
+ " osname=Windows95;" //
+ " processor=x86;" //
+ " selection-filter='(com.acme.windowing=win32)';" //
+ " language=en;" //
+ " osname=Windows98;" //
+ " language=se, " //
+ "lib/solaris/libhttp.so;" //
+ " osname=Solaris;" //
+ " osname = SunOS ;" //
+ " processor = sparc, "//
+ "lib/linux/libhttp.so ; " //
+ " osname = Linux ; "//
+ " processor = mips; "//
+ " selection-filter = '(com.acme.windowing=gtk)',"//
+ "*")
.synthetic();
assertEquals(NativeNamespace.NATIVE_NAMESPACE, nativeCode.getNamespace());
assertEquals("optional", nativeCode.getDirectives().get("resolution"));
String filter = nativeCode.getDirectives().get("filter");
assertEquals(null, Verifier.validateFilter(filter));
FilterParser p = new FilterParser();
Expression parse = p.parse(filter);
assertEquals(
"(|(&(|(osgi.native.osname=Windows95)(osgi.native.osname=Windows98))(osgi.native.processor=x86)(|(osgi.native.language=en)(osgi.native.language=se))(com.acme.windowing=win32))(&(|(osgi.native.osname=Solaris)(osgi.native.osname=SunOS))(osgi.native.processor=sparc))(&(osgi.native.osname=Linux)(osgi.native.processor=mips)(com.acme.windowing=gtk)))",
filter);
System.out.println(nativeCode);
}
}