@Override
  public abstract boolean equals(Object other);
@Test
  public void testEnumDataSchema() throws Exception
  {
    final String schemaString = "{ \"type\" : \"enum\", \"name\" : \"numbers\", \"symbols\" : [ \"ONE\", \"TWO\", \"THREE\", \"FOUR\", \"FIVE\"], \"symbolDocs\" : { \"FIVE\" : \"DOC_FIVE\", \"ONE\" : \"DOC_ONE\" } }";
    PegasusSchemaParser parser = schemaParserFromString(schemaString);
    EnumDataSchema schema = (EnumDataSchema)parser.topLevelDataSchemas().get(0);

    String[] orderedSymbols = {"ONE", "TWO", "THREE", "FOUR", "FIVE" };
    for (int i = 0; i < orderedSymbols.length; ++i)
    {
      Assert.assertEquals(schema.index(orderedSymbols[i]), i);
      Assert.assertTrue(schema.contains(orderedSymbols[i]));
    }

    String[] missingSymbols = {"SIX", "SEVEN", "EIGHT"};
    for (String missingSymbol : missingSymbols)
    {
      Assert.assertFalse(schema.contains(missingSymbol));
      Assert.assertEquals(schema.index(missingSymbol), -1);
    }

    Assert.assertEquals(schema.getSymbols(), Arrays.asList(orderedSymbols));

    String[] symbolDocKeys = {"ONE", "FIVE"};
    for (String symbolDocKey : symbolDocKeys)
    {
      Assert.assertTrue(schema.getSymbolDocs().containsKey(symbolDocKey) && schema.getSymbolDocs().get(symbolDocKey).equals("DOC_" + symbolDocKey));
    }

    String[] missingSymbolDocs = {"TWO", "THREE", "FOUR"};
    for (String missingSymbol : missingSymbols)
    {
      Assert.assertFalse(schema.getSymbolDocs().containsKey(missingSymbol));
    }
  }