/**
   * @throws NoSuchRecordFieldException
   * @throws IOException
   */
  @Test
  public void testComputedField() throws NoSuchRecordFieldException, IOException {
    List<Panel> panelList = database.getPanels();

    for (Panel panel : panelList) {
      List<Field> fieldList = panel.getFields();

      for (Iterator<Record> recordIterator = panel.recordIterator(); recordIterator.hasNext(); ) {
        Record record = recordIterator.next();
        Iterator<Field> fieldIterator = fieldList.iterator();

        while (fieldIterator.hasNext()) {
          Field field = fieldIterator.next();

          if (field.getInitialization() != null) {
            assertTrue(field.getInitialization() != null);

            if (field.isComputedField()) {
              assertTrue(field.isComputedField());
              assertTrue(record.getValueAsString(field.getNumber()) == null);
            } else {
              assertFalse(field.isComputedField());
              assertTrue(record.getValueAsString(field.getNumber()) != null);
            }
          } else {
            if (field.getLink() == null || field.getLink().getType() == LinkType.DATA_LINK) {
              assertTrue(record.getValueAsString(field.getNumber()) != null);
            }
          }
        }
      }
    }
  }