@Test
public void testParseDescriptor() throws Exception {

  int n = 10;
  int maxnbAttributes = 100;
  Random rng = RandomUtils.getRandom();
  
  for (int nloop = 0; nloop < n; nloop++) {
    int nbAttributes = rng.nextInt(maxnbAttributes) + 1;
    char[] tokens = Utils.randomTokens(rng, nbAttributes);
    Attribute[] attrs = DescriptorUtils.parseDescriptor(Utils.generateDescriptor(tokens));
    // verify that the attributes matches the token list
    assertEquals("attributes size", nbAttributes, attrs.length);
    for (int attr = 0; attr < nbAttributes; attr++) {
      switch (tokens[attr]) {
        case 'I':
          assertTrue(attrs[attr].isIgnored());
          break;
        case 'N':
          assertTrue(attrs[attr].isNumerical());
          break;
        case 'C':
          assertTrue(attrs[attr].isCategorical());
          break;
        case 'L':
          assertTrue(attrs[attr].isLabel());
          break;
      }
    }
  }
}