private void verifyLauncherArgs(IInstallableUnit iu) {
   Collection<ITouchpointData> touchpointData = iu.getTouchpointData();
   assertEquals(1, touchpointData.size());
   ITouchpointData data = touchpointData.iterator().next();
   ITouchpointInstruction instruction = data.getInstruction("configure"); // $NON-NLS-1$
   String body = instruction.getBody();
   assertTrue(
       "arg -foo bar",
       body.indexOf("addProgramArg(programArg:-foo bar);") > -1); // $NON-NLS-1$ //$NON-NLS-2$
   assertTrue(
       "vmarg -agentlib",
       body.indexOf(
               "addJvmArg(jvmArg:-agentlib${#58}jdwp=transport=dt_socket${#44}server=y${#44}suspend=n${#44}address=8272);")
           > -1); //$NON-NLS-1$ //$NON-NLS-2$
   assertTrue(
       "arg -product com,ma",
       body.indexOf("addProgramArg(programArg:-product);addProgramArg(programArg:com${#44}ma);")
           > -1); //$NON-NLS-1$ //$NON-NLS-2$
 }
 private void verifyConfigProperties(IInstallableUnit iu) {
   Collection<ITouchpointData> touchpointData = iu.getTouchpointData();
   assertEquals(1, touchpointData.size());
   ITouchpointData data = touchpointData.iterator().next();
   ITouchpointInstruction instruction = data.getInstruction("configure"); // $NON-NLS-1$
   String body = instruction.getBody();
   assertTrue(
       "eclipse.product",
       body.indexOf(
               "setProgramProperty(propName:eclipse.product,propValue:org.eclipse.platform.ide);")
           > -1); //$NON-NLS-1$ //$NON-NLS-2$
   assertTrue(
       "eclipse.buildId",
       body.indexOf("setProgramProperty(propName:eclipse.buildId,propValue:TEST-ID);")
           > -1); //$NON-NLS-1$ //$NON-NLS-2$
   assertTrue(
       "my.property",
       body.indexOf(
               "setProgramProperty(propName:my.property,propValue:${#123}a${#44}b${#58}c${#59}${#36}d${#125});")
           > -1); //$NON-NLS-1$ //$NON-NLS-2$
 }
  private void verifyBundleCU() {

    final String bundleCUId = flavor + configSpec + ORG_ECLIPSE_CORE_COMMANDS;
    IQueryResult queryResult =
        publisherResult.query(QueryUtil.createIUQuery(bundleCUId), new NullProgressMonitor());
    assertEquals(1, queryResultSize(queryResult));
    IInstallableUnitFragment fragment = (IInstallableUnitFragment) queryResult.iterator().next();

    assertNull(fragment.getFilter()); // no filter if config spec is ANY

    assertTrue(fragment.getVersion().equals(version));

    assertFalse(fragment.isSingleton());

    final Collection<IProvidedCapability> providedCapabilities = fragment.getProvidedCapabilities();
    verifyProvidedCapability(
        providedCapabilities, IInstallableUnit.NAMESPACE_IU_ID, bundleCUId, version);
    verifyProvidedCapability(
        providedCapabilities,
        "org.eclipse.equinox.p2.flavor",
        flavor + configSpec,
        version); //$NON-NLS-1$
    assertEquals(2, providedCapabilities.size());

    assertEquals(0, fragment.getRequirements().size());

    final Collection<IRequirement> hostRequirements = fragment.getHost();
    verifyRequiredCapability(
        hostRequirements,
        "osgi.bundle",
        ORG_ECLIPSE_CORE_COMMANDS,
        new VersionRange(BUNDLE_VERSION)); // $NON-NLS-1$
    verifyRequiredCapability(
        hostRequirements,
        "org.eclipse.equinox.p2.eclipse.type",
        "bundle",
        new VersionRange(Version.create("1.0.0"), true, Version.create("2.0.0"), false),
        1,
        1,
        false); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
    assertTrue(hostRequirements.size() == 2);

    final Collection<ITouchpointData> touchpointData = fragment.getTouchpointData();
    assertEquals(1, touchpointData.size());
    ITouchpointData data = touchpointData.iterator().next();
    ITouchpointInstruction instruction = data.getInstruction("install"); // $NON-NLS-1$
    assertEquals("installBundle(bundle:${artifact})", instruction.getBody()); // $NON-NLS-1$
    instruction = data.getInstruction("uninstall"); // $NON-NLS-1$
    assertEquals("uninstallBundle(bundle:${artifact})", instruction.getBody()); // $NON-NLS-1$
    instruction = data.getInstruction("configure"); // $NON-NLS-1$
    assertEquals("setStartLevel(startLevel:2);", instruction.getBody()); // $NON-NLS-1$
    instruction = data.getInstruction("unconfigure"); // $NON-NLS-1$
    assertEquals("setStartLevel(startLevel:-1);", instruction.getBody()); // $NON-NLS-1$
  }
  private void verifyFragment(String cuType) {
    ArrayList IUs = new ArrayList(publisherResult.getIUs(null, IPublisherResult.NON_ROOT));
    for (int i = 0; i < IUs.size(); i++) {
      InstallableUnit iu = (InstallableUnit) IUs.get(i);
      if (iu.getId()
          .equals(flavor + id + "." + cuType + "." + configSpec)) { // $NON-NLS-1$ //$NON-NLS-2$

        assertNull(iu.getFilter()); // no filter if config spec is ANY

        assertTrue(iu.getVersion().equals(version));

        assertFalse(iu.isSingleton());

        Collection<IProvidedCapability> providedCapabilities = iu.getProvidedCapabilities();
        verifyProvidedCapability(
            providedCapabilities,
            IInstallableUnit.NAMESPACE_IU_ID,
            flavor + id + "." + cuType + "." + configSpec,
            version); //$NON-NLS-1$//$NON-NLS-2$
        verifyProvidedCapability(
            providedCapabilities, flavor + id, id + "." + cuType, version); // $NON-NLS-1$
        assertTrue(providedCapabilities.size() == 2);

        assertTrue(iu.getRequirements().size() == 0);

        if (cuType.equals("ini")) // $NON-NLS-1$
        verifyLauncherArgs(iu);
        if (cuType.equals("config")) // $NON-NLS-1$
        verifyConfigProperties(iu);
        return; // pass
      }
    }
    fail(
        "Configuration unit of type "
            + cuType
            + " was not enocuntered among fragments"); //$NON-NLS-1$
  }
  private void verifyAction() {
    ArrayList IUs = new ArrayList(publisherResult.getIUs(null, IPublisherResult.ROOT));
    assertTrue(IUs.size() == 1);
    InstallableUnit iu = (InstallableUnit) IUs.get(0);
    assertTrue(iu.getId().equalsIgnoreCase(flavor + id + ".configuration")); // $NON-NLS-1$

    // verify ProvidedCapabilities
    Collection<IProvidedCapability> providedCapabilities = iu.getProvidedCapabilities();
    verifyProvidedCapability(
        providedCapabilities, "org.eclipse.equinox.p2.iu", iu.getId(), version); // $NON-NLS-1$
    assertTrue(providedCapabilities.size() == 1);

    // verify RequiredCapabilities
    List<IRequirement> requiredCapability = iu.getRequirements();
    assertTrue(requiredCapability.size() == 3);
    verifyRequiredCapability(
        requiredCapability,
        IInstallableUnit.NAMESPACE_IU_ID,
        flavor + id + ".config." + configSpec,
        new VersionRange(version, true, version, true)); // $NON-NLS-1$
    verifyRequiredCapability(
        requiredCapability,
        IInstallableUnit.NAMESPACE_IU_ID,
        flavor + id + ".ini." + configSpec,
        new VersionRange(version, true, version, true)); // $NON-NLS-1$
    verifyRequiredCapability(
        requiredCapability,
        IInstallableUnit.NAMESPACE_IU_ID,
        flavor + configSpec + ORG_ECLIPSE_CORE_COMMANDS,
        new VersionRange(version, true, version, true));

    // verify non root IUs
    verifyFragment("ini"); // $NON-NLS-1$
    verifyFragment("config"); // $NON-NLS-1$
    verifyBundleCU();
  }