@SuppressWarnings("unused")
  public void testMandatoryConformance_TargetMatching_1_through_53() throws Exception {
    TestPDP pdp = null;
    for (int i = 1; i <= 53; i++) {
      System.out.println("Checking TargetMatching_conformance:" + i);
      String fileName = null;
      if (i < 10) fileName = mandatoryBase + "IIB00" + i + "Policy.xml";
      else fileName = mandatoryBase + "IIB0" + i + "Policy.xml";

      String[] policies = new String[] {fileName};
      pdp = new TestPDP(policies);
      pdp.createInternalPDP();

      String requestFile = null;
      if (i < 10) requestFile = mandatoryBase + "IIB00" + i + "Request.xml";
      else requestFile = mandatoryBase + "IIB0" + i + "Request.xml";
      ResponseCtx actualResponse = pdp.evaluate(requestFile);
      assertNotNull("Response for" + i, actualResponse);

      String responseFile = null;
      if (i < 10) responseFile = mandatoryBase + "IIB00" + i + "Response.xml";
      else responseFile = mandatoryBase + "IIB0" + i + "Response.xml";

      InputStream responseStream = new FileInputStream(responseFile);
      if (responseStream == null)
        throw new IllegalStateException("responseStream for IIB0" + i + " is null");
      ResponseCtx expectedResponse = ResponseCtx.getInstance(responseStream);

      Result actualResult = (Result) actualResponse.getResults().iterator().next();
      Result expectedResult = (Result) expectedResponse.getResults().iterator().next();
      assertEquals("IIB0" + i, expectedResult.getDecision(), actualResult.getDecision());
    }
  }
  @SuppressWarnings("unused")
  public void testMandatoryConformance_FunctionEvaluation_1_through_232() throws Exception {
    TestPDP pdp = null;
    for (int i = 1; i <= 232; i++) {
      System.out.println("Checking FunctionEvaluation_conformance:" + i);
      if (i == 3 || i == 14 || i == 12) // Policy/request errors
      {
        System.out.println("Ignoring FunctionEvaluation_conformance:" + i);
        continue;
      }

      if (i == 23 || i == 54 || i == 55 || i == 88 || i == 89 || i == 92 || i == 93 || i == 98
          || i == 99) // Test is not present
      continue;

      String fileName = null;

      if (i < 10) fileName = mandatoryBase + "IIC00" + i + "Policy.xml";
      else if (i < 100) fileName = mandatoryBase + "IIC0" + i + "Policy.xml";
      else fileName = mandatoryBase + "IIC" + i + "Policy.xml";

      String[] policies = new String[] {fileName};
      pdp = new TestPDP(policies);
      pdp.createInternalPDP();

      String requestFile = null;
      if (i < 10) requestFile = mandatoryBase + "IIC00" + i + "Request.xml";
      else if (i < 100) requestFile = mandatoryBase + "IIC0" + i + "Request.xml";
      else requestFile = mandatoryBase + "IIC" + i + "Request.xml";

      ResponseCtx actualResponse = pdp.evaluate(requestFile);
      assertNotNull("Response for" + i, actualResponse);

      String responseFile = null;
      if (i < 10) responseFile = mandatoryBase + "IIC00" + i + "Response.xml";
      else if (i < 100) responseFile = mandatoryBase + "IIC0" + i + "Response.xml";
      else responseFile = mandatoryBase + "IIC" + i + "Response.xml";

      InputStream responseStream = new FileInputStream(responseFile);
      if (responseStream == null)
        throw new IllegalStateException("responseStream for IIC0" + i + " is null");
      ResponseCtx expectedResponse = ResponseCtx.getInstance(responseStream);

      Result actualResult = (Result) actualResponse.getResults().iterator().next();
      Result expectedResult = (Result) expectedResponse.getResults().iterator().next();
      assertEquals("IIC0" + i, expectedResult.getDecision(), actualResult.getDecision());
    }
  }
  @SuppressWarnings("unused")
  public void testMandatoryConformance_AttributeReferences_01_through_21() throws Exception {
    TestPDP pdp = null;
    for (int i = 1; i <= 21; i++) {
      System.out.println("Checking AttributeReferences_conformance:" + i);

      if (i == 4 || i == 5 || i == 12) // policy or request has an error
      {
        System.out.println("Ignoring AttributeReferences_conformance:" + i);
        continue;
      }

      String fileName = null;

      if (i < 10) fileName = mandatoryBase + "IIA00" + i + "Policy.xml";
      else fileName = mandatoryBase + "IIA0" + i + "Policy.xml";
      String[] policies = new String[] {fileName};
      pdp = new TestPDP(policies);

      if (i == 2) pdp.addAttributeFinderModule(new TestAttributeFinderModule());

      pdp.createInternalPDP();

      String requestFile = null;
      if (i < 10) requestFile = mandatoryBase + "IIA00" + i + "Request.xml";
      else requestFile = mandatoryBase + "IIA0" + i + "Request.xml";
      ResponseCtx actualResponse = pdp.evaluate(requestFile);
      assertNotNull("Response for" + i, actualResponse);

      String responseFile = null;
      if (i < 10) responseFile = mandatoryBase + "IIA00" + i + "Response.xml";
      else responseFile = mandatoryBase + "IIA0" + i + "Response.xml";
      InputStream responseStream = new FileInputStream(responseFile);
      if (responseStream == null)
        throw new IllegalStateException("responseStream for IIA00" + i + " is null");
      ResponseCtx expectedResponse = ResponseCtx.getInstance(responseStream);

      Result actualResult = (Result) actualResponse.getResults().iterator().next();
      Result expectedResult = (Result) expectedResponse.getResults().iterator().next();
      assertEquals("IIA00" + i, expectedResult.getDecision(), actualResult.getDecision());
    }
  }
 protected static final boolean denyBiasedAuthz(Set<Result> set) {
   int nPermits = 0; // explicit permit returned
   int nDenies = 0; // explicit deny returned
   int nNotApplicables = 0; // no targets matched
   int nIndeterminates = 0; // for targets matched, no rules matched
   int nWrongs = 0; // none of the above, i.e., unreported failure, should not happen
   Iterator<Result> it = set.iterator();
   while (it.hasNext()) {
     Result result = it.next();
     int decision = result.getDecision();
     switch (decision) {
       case Result.DECISION_PERMIT:
         nPermits++;
         break;
       case Result.DECISION_DENY:
         nDenies++;
         break;
       case Result.DECISION_INDETERMINATE:
         nIndeterminates++;
         break;
       case Result.DECISION_NOT_APPLICABLE:
         nNotApplicables++;
         break;
       default:
         nWrongs++;
         break;
     }
   }
   if (logger.isDebugEnabled()) {
     logger.debug(
         "AUTHZ:  permits="
             + nPermits
             + " denies="
             + nDenies
             + " indeterminates="
             + nIndeterminates
             + " notApplicables="
             + nNotApplicables
             + " unexpecteds="
             + nWrongs);
   }
   return nPermits >= 1
       && nDenies == 0
       && nIndeterminates == 0
       && nWrongs == 0; // don't care about NotApplicables
 }