package test.resource;

import org.osgi.resource.Capability;
import org.osgi.resource.Requirement;

import aQute.bnd.osgi.resource.CapabilityBuilder;
import aQute.bnd.osgi.resource.RequirementBuilder;
import aQute.bnd.osgi.resource.ResourceUtils;
import junit.framework.TestCase;

public class CapReqFilterTest extends TestCase {

	public void testReqNoFilterDifferentNamespace() throws Exception {
		Capability cap = new CapabilityBuilder("run.amock")
				.buildSyntheticCapability();
		Requirement req = new RequirementBuilder("bamboozled")
				.buildSyntheticRequirement();

		assertFalse(ResourceUtils.matches(req, cap));
	}

	public void testReqNoFilterCapWithAttr() throws Exception {
		Capability cap = new CapabilityBuilder("foobar")
				.addAttribute("blah", "baz")
				.addAttribute("version", "42")
				.buildSyntheticCapability();
		Requirement req = new RequirementBuilder("foobar")
				.buildSyntheticRequirement();

		assertTrue(ResourceUtils.matches(req, cap));
	}

	public void testReqNoFilterCapWithNoAttr() {
		Capability cap = new CapabilityBuilder("foobar")
				.buildSyntheticCapability();
		Requirement req = new RequirementBuilder("foobar")
				.buildSyntheticRequirement();

		assertTrue(ResourceUtils.matches(req, cap));
	}

	public void testReqWithFilter() {
		Capability cap = new CapabilityBuilder("foobar")
				.buildSyntheticCapability();
		Requirement req = new RequirementBuilder("foobar")
				.addDirective("filter", "(something=true)")
				.buildSyntheticRequirement();

		assertFalse(ResourceUtils.matches(req, cap));
	}

}
