@Test
public void testGetRequestPropertyIds() {

  Set<String> providerPropertyIds = new HashSet<String>();
  providerPropertyIds.add("foo");
  providerPropertyIds.add("bar");
  providerPropertyIds.add("cat1/sub1");
  BaseProvider provider = new TestProvider(providerPropertyIds);
  Request request = PropertyHelper.getReadRequest("foo");
  Set<String> requestedPropertyIds = provider.getRequestPropertyIds(request, null);
  assertEquals(1, requestedPropertyIds.size());
  assertTrue(requestedPropertyIds.contains("foo"));
  request = PropertyHelper.getReadRequest("foo", "bar");
  requestedPropertyIds = provider.getRequestPropertyIds(request, null);
  assertEquals(2, requestedPropertyIds.size());
  assertTrue(requestedPropertyIds.contains("foo"));
  assertTrue(requestedPropertyIds.contains("bar"));
  request = PropertyHelper.getReadRequest("foo", "baz", "bar", "cat", "cat1/prop1");
  requestedPropertyIds = provider.getRequestPropertyIds(request, null);
  assertEquals(2, requestedPropertyIds.size());
  assertTrue(requestedPropertyIds.contains("foo"));
  assertTrue(requestedPropertyIds.contains("bar"));
  // ask for a property that isn't specified as supported, but its category is... the property
  // should end up in the returned set for the case where the category is a Map property
  request = PropertyHelper.getReadRequest("foo", "cat1/sub1/prop1");
  requestedPropertyIds = provider.getRequestPropertyIds(request, null);
  assertEquals(2, requestedPropertyIds.size());
  assertTrue(requestedPropertyIds.contains("foo"));
  assertTrue(requestedPropertyIds.contains("cat1/sub1/prop1"));
}