private void assertCodecConfigurationForModel(CodecGroupType codecGroup, String phoneModelId)
      throws Exception {

    // Initialize the phone.
    m_phone = new PolycomPhone();
    m_phone.setModel(phoneModelBuilder(phoneModelId, getClass()));
    PhoneTestDriver.supplyTestData(m_phone, new LinkedList<User>());

    // Each model belongs to exactly one codec group.
    Collection<Setting> codecPref = m_phone.getSettings().getSetting("voice/codecPref").getValues();
    assertTrue(
        String.format("The '%s' model does not have a codec group.", phoneModelId),
        0 != codecPref.size());
    String str_groups = "";
    for (Setting s : codecPref) {
      str_groups += "-" + s.getName();
    }
    assertEquals(
        String.format(
            "The '%s' model has more than one codec group ('%s'):", phoneModelId, str_groups),
        1,
        codecPref.size());

    // Make sure it's the correct codec group.
    Setting codec_adaptor = codecPref.iterator().next();
    assertEquals(
        String.format("The '%s' model has the wrong codec group:", phoneModelId),
        codecGroup.toString(),
        codec_adaptor.getName());

    // Collect the major types of the supported codec options.  (Remove the minor bit/sample rates.)
    HashSet<String> major_supported_codecs = new HashSet<String>();
    Collection<String> options = ((MultiEnumSetting) codec_adaptor.getType()).getEnums().values();
    for (String option : options) {
      int i = option.indexOf('.');
      if (-1 != i) {
        option = option.substring(0, i);
      }
      major_supported_codecs.add(StringUtils.remove(option, "_"));
    }

    // Loop though the audioProfiles for the model.  There should be one for major supported codec
    // type.
    Collection<Setting> audioProfile =
        m_phone.getSettings().getSetting("voice/audioProfile").getValues();
    for (Setting s : audioProfile) {
      assertTrue(
          String.format(
              "The '%s' model has an audioProfile for unsupported codec type '%s'.",
              phoneModelId, s.getName()),
          major_supported_codecs.remove(s.getName()));
    }
    assertEquals(
        String.format(
            "The '%s' model is missing an audioProfile for the following supported code type(s): %s.",
            phoneModelId, major_supported_codecs),
        0,
        major_supported_codecs.size());
  }
  @Override
  protected void setUp() throws Exception {
    XMLUnit.setIgnoreWhitespace(true);
    phone = new PolycomPhone();
    PolycomModel model = new PolycomModel();
    model.setMaxLineCount(6);
    phone.setModel(model);
    PhoneTestDriver.supplyTestData(phone);

    m_location = new MemoryProfileLocation();

    VelocityProfileGenerator pg = new VelocityProfileGenerator();
    pg.setVelocityEngine(TestHelper.getVelocityEngine());
    m_pg = pg;
  }