@Test
  public void testSortByParent() {
    Set<DataIdentifier> nameList = new HashSet<DataIdentifier>();
    Set<DataIdentifier> actionList = new HashSet<DataIdentifier>();
    DataIdentifier nameId = null;
    DataIdentifier actionId = null;
    try {
      nameId =
          DataIdentifierFactory.create(
              DataIdentifierScheme.CONTEXT, "fooCss", CtxAttributeTypes.NAME);
      nameList.add(
          DataIdentifierFactory.fromUri(
              DataIdentifierScheme.CONTEXT
                  + "://fooCss/ENTITY/person/1/ATTRIBUTE/"
                  + CtxAttributeTypes.NAME_FIRST
                  + "/33"));
      nameList.add(
          DataIdentifierFactory.fromUri(
              DataIdentifierScheme.CONTEXT
                  + "://fooCss/ENTITY/person/1/ATTRIBUTE/"
                  + CtxAttributeTypes.NAME_LAST
                  + "/38"));
      actionId =
          DataIdentifierFactory.fromUri(
              DataIdentifierScheme.CONTEXT
                  + "://fooCss/ENTITY/person/1/ATTRIBUTE/"
                  + CtxAttributeTypes.ACTION
                  + "/42");
      actionList.add(actionId);
    } catch (MalformedCtxIdentifierException e) {
      LOG.error("Faillure during data id creation from URI", e);
      fail("Faillure during data id creation from URI: " + e);
    }
    // - List1
    // Parameters
    Set<DataIdentifier> list1 = new HashSet<DataIdentifier>();
    list1.addAll(nameList);
    list1.add(actionId);
    // Expected
    Map<String, Set<DataIdentifier>> expectedMap1 = new HashMap<String, Set<DataIdentifier>>();
    expectedMap1.put(nameId.getType(), nameList);
    expectedMap1.put(actionId.getType(), actionList);
    assertEquals(
        "NAME_FIRST (leaf), NAME_LAST (leaf), ACTION (root and leaf)  should be sorted as: NAME -> NAME_FIRST, NAME_LAST ; ACTION -> ACTION",
        expectedMap1,
        DataIdentifierUtils.sortByParent(list1));

    // - List2
    // Parameters
    Set<DataIdentifier> list2 = new HashSet<DataIdentifier>();
    list2.addAll(nameList);
    list2.add(nameId);
    list2.add(actionId);
    assertEquals(
        "NAME (root not leaf), NAME_FIRST (leaf), NAME_LAST (leaf), ACTION (root and leaf) should be sorted as: NAME -> NAME_FIRST, NAME_LAST ; ACTION -> ACTION",
        expectedMap1,
        DataIdentifierUtils.sortByParent(list2));

    // - List3
    // Parameters
    Set<DataIdentifier> list3 = new HashSet<DataIdentifier>();
    list3.add(nameId);
    list3.add(actionId);
    // Expected
    Map<String, Set<DataIdentifier>> expectedMap3 = new HashMap<String, Set<DataIdentifier>>();
    expectedMap3.put(nameId.getType(), null);
    expectedMap3.put(actionId.getType(), actionList);
    assertEquals(
        "NAME (root not leaf), ACTION (root and leaf) should be sorted as: NAME -> null ; ACTION -> ACTION",
        expectedMap3,
        DataIdentifierUtils.sortByParent(list3));
  }