/** IDE-1391 */
  @Test
  public void canInitialize() {
    Assert.assertFalse(PropertiesUtil.canInitialize(null));

    String[] initializeTrue =
        new String[] {
          "simple_property",
          "simplesequence_property",
          "struct_property",
          "structsequence_property",
          "simple_configure_property",
          "simple_readonly_property",
          "simplesequence_readonly_property",
          "struct_readonly_property",
          "structsequence_readonly_property"
        };

    String[] initializeFalse =
        new String[] {
          "simple_configure",
          "simple_empty",
          "simplesequence_empty",
          "struct_empty",
          "structsequence_empty",
          "simple_execparam_property",
          "simple_execparam",
          "simple_commandline_property",
          "simple_readonly_commandline_property"
        };

    Assert.assertEquals(
        initializeTrue.length + initializeFalse.length, props.getProperties().size());
    for (String property : initializeTrue) {
      AbstractProperty prop = props.getProperty(property);
      Assert.assertNotNull("Property not found in PRF: " + property, prop);
      Assert.assertTrue(
          "Should be able to initialize " + property, PropertiesUtil.canInitialize(prop));
    }
    for (String property : initializeFalse) {
      AbstractProperty prop = props.getProperty(property);
      Assert.assertNotNull("Property not found in PRF: " + property, prop);
      Assert.assertFalse(
          "Should NOT be able to initialize " + property, PropertiesUtil.canInitialize(prop));
    }
  }
  /** IDE-1654 */
  @Test
  public void isCommandLine() {
    String[] isCmdLnTrue =
        new String[] {
          "simple_execparam_property",
          "simple_execparam",
          "simple_commandline_property",
          "simple_readonly_commandline_property",
        };

    String[] isCmdLnFalse =
        new String[] {
          "simple_property",
          "simplesequence_property",
          "struct_property",
          "structsequence_property",
          "simple_empty",
          "simplesequence_empty",
          "struct_empty",
          "structsequence_empty",
          "simple_configure",
          "simple_configure_property",
          "simple_readonly_property",
          "simplesequence_readonly_property",
          "struct_readonly_property",
          "structsequence_readonly_property"
        };

    Assert.assertEquals(isCmdLnTrue.length + isCmdLnFalse.length, props.getProperties().size());
    for (String property : isCmdLnTrue) {
      AbstractProperty prop = props.getProperty(property);
      Assert.assertNotNull("Property not found in PRF: " + property, prop);
      Assert.assertTrue(
          property + " should be a valid command-line property",
          PropertiesUtil.isCommandLine(prop));
    }
    for (String property : isCmdLnFalse) {
      AbstractProperty prop = props.getProperty(property);
      Assert.assertNotNull("Property not found in PRF: " + property, prop);
      Assert.assertFalse(
          property + " should NOT be a valid command-line property",
          PropertiesUtil.isCommandLine(prop));
    }
  }
 protected void updateSimpleRefs(Notification notification) {
   Simple simple = (Simple) notification.getNewValue();
   if (simple != null) { // Add Simple Refs associated with new value
     for (StructValue structValue : getStructValue()) {
       SimpleRef ref = PrfFactory.eINSTANCE.createSimpleRef();
       ref.setRefID(simple.getId());
       ref.setValue(PropertiesUtil.getDefaultValue(simple));
       SimpleRef oldRef = null;
       for (SimpleRef sr : structValue.getSimpleRef()) {
         if (sr.getRefID() != null && sr.getRefID().equals(simple.getId())) {
           oldRef = sr;
           break;
         }
       }
       if (oldRef != null) {
         structValue.getSimpleRef().remove(oldRef);
       }
       int index = this.getStruct().getSimple().indexOf(simple);
       structValue.getSimpleRef().add(index, ref);
     }
   } else { // Remove SimpleRefs associated with the oldValue
     simple = (Simple) notification.getOldValue();
     if (simple != null) {
       for (StructValue structValue : getStructValue()) {
         Collection<SimpleRef> removeRefs = null;
         for (SimpleRef ref : structValue.getSimpleRef()) {
           if (ref.getRefID() != null && simple.getId() != null) {
             if (ref.getRefID().equals(simple.getId())) {
               removeRefs = Collections.singletonList(ref);
               break;
             }
           } else if (ref.getRefID() == null && simple.getId() == null) {
             removeRefs = Collections.singletonList(ref);
             break;
           }
         }
         if (removeRefs != null) {
           structValue.getSimpleRef().removeAll(removeRefs);
         }
       }
     }
   }
 }