main function

void main()

Implementation

void main() {
  test('TestParsingInvalid', () {
    // Malformed strings.
    expect(H264Utils.parseProfileLevelId(null), null);
    expect(H264Utils.parseProfileLevelId(''), null);
    expect(H264Utils.parseProfileLevelId(' 42e01f'), null);
    expect(H264Utils.parseProfileLevelId('4242e01f'), null);
    expect(H264Utils.parseProfileLevelId('e01f'), null);
    expect(H264Utils.parseProfileLevelId('gggggg'), null);

    // Invalid level.
    expect(H264Utils.parseProfileLevelId('42e000'), null);
    expect(H264Utils.parseProfileLevelId('42e00f'), null);
    expect(H264Utils.parseProfileLevelId('42e0ff'), null);

    // Invalid profile.
    expect(H264Utils.parseProfileLevelId('42e11f'), null);
    expect(H264Utils.parseProfileLevelId('58601f'), null);
    expect(H264Utils.parseProfileLevelId('64e01f'), null);
  });

  test('TestParsingLevel', () {
    expect(H264Utils.parseProfileLevelId('42e01f')?.level, H264Utils.Level3_1);
    expect(H264Utils.parseProfileLevelId('42e00b')?.level, H264Utils.Level1_1);
    expect(H264Utils.parseProfileLevelId('42f00b')?.level, H264Utils.Level1_b);
    expect(H264Utils.parseProfileLevelId('42C02A')?.level, H264Utils.Level4_2);
    expect(H264Utils.parseProfileLevelId('640c34')?.level, H264Utils.Level5_2);
  });

  test('TestParsingConstrainedBaseline', () {
    expect(H264Utils.parseProfileLevelId('42e01f')?.profile, H264Utils.ProfileConstrainedBaseline);
    expect(H264Utils.parseProfileLevelId('42C02A')?.profile, H264Utils.ProfileConstrainedBaseline);
    expect(H264Utils.parseProfileLevelId('4de01f')?.profile, H264Utils.ProfileConstrainedBaseline);
    expect(H264Utils.parseProfileLevelId('58f01f')?.profile, H264Utils.ProfileConstrainedBaseline);
  });

  test('TestParsingBaseline', () {
    expect(H264Utils.parseProfileLevelId('42a01f')?.profile, H264Utils.ProfileBaseline);
    expect(H264Utils.parseProfileLevelId('58A01F')?.profile, H264Utils.ProfileBaseline);
  });

  test('TestParsingMain', () {
    expect(H264Utils.parseProfileLevelId('4D401f')?.profile, H264Utils.ProfileMain);
  });

  test('TestParsingHigh', () {
    expect(H264Utils.parseProfileLevelId('64001f')?.profile, H264Utils.ProfileHigh);
  });

  test('TestParsingConstrainedHigh', () {
    expect(H264Utils.parseProfileLevelId('640c1f')?.profile, H264Utils.ProfileConstrainedHigh);
  });

  test('TestToString', () {
    expect(H264Utils.profileLevelIdToString(new ProfileLevelId(profile: H264Utils.ProfileConstrainedBaseline, level: H264Utils.Level3_1)), '42e01f');
    expect(H264Utils.profileLevelIdToString(new ProfileLevelId(profile: H264Utils.ProfileBaseline, level: H264Utils.Level1)), '42000a');
    expect(H264Utils.profileLevelIdToString(new ProfileLevelId(profile: H264Utils.ProfileMain, level: H264Utils.Level3_1)), '4d001f');
    expect(H264Utils.profileLevelIdToString(new ProfileLevelId(profile: H264Utils.ProfileConstrainedHigh, level: H264Utils.Level4_2)), '640c2a');
    expect(H264Utils.profileLevelIdToString(new ProfileLevelId(profile: H264Utils.ProfileHigh, level: H264Utils.Level4_2)), '64002a');
  });

  test('TestToStringLevel1b', () {
    expect(H264Utils.profileLevelIdToString(H264Utils.parseProfileLevelId('42e01f')!), '42e01f');
    expect(H264Utils.profileLevelIdToString(H264Utils.parseProfileLevelId('42E01F')!), '42e01f');
    expect(H264Utils.profileLevelIdToString(H264Utils.parseProfileLevelId('4d100b')!), '4d100b');
    expect(H264Utils.profileLevelIdToString(H264Utils.parseProfileLevelId('4D100B')!), '4d100b');
    expect(H264Utils.profileLevelIdToString(H264Utils.parseProfileLevelId('640c2a')!), '640c2a');
    expect(H264Utils.profileLevelIdToString(H264Utils.parseProfileLevelId('640C2A')!), '640c2a');
  });

  test('TestToStringInvalid', () {
    expect(H264Utils.profileLevelIdToString(new ProfileLevelId(profile: H264Utils.ProfileHigh, level: H264Utils.Level1_b)), null);
    expect(H264Utils.profileLevelIdToString(new ProfileLevelId(profile: H264Utils.ProfileConstrainedHigh, level: H264Utils.Level1_b)), null);
    expect(H264Utils.profileLevelIdToString(new ProfileLevelId(profile: 255, level: H264Utils.Level3_1)), null);
  });

  test('TestParseSdpProfileLevelIdEmpty', () {
    final profile_level_id = H264Utils.parseSdpProfileLevelId();

    expect(profile_level_id?.profile, H264Utils.ProfileConstrainedBaseline);
    expect(profile_level_id?.level, H264Utils.Level3_1);
  });

  test('TestParseSdpProfileLevelIdConstrainedHigh', () {
    final params = <String, String>{ 'profile-level-id': '640c2a' };
    final profile_level_id = H264Utils.parseSdpProfileLevelId(params: params);

    expect(profile_level_id?.profile, H264Utils.ProfileConstrainedHigh);
    expect(profile_level_id?.level, H264Utils.Level4_2);
  });

  test('TestParseSdpProfileLevelIdInvalid', () {
    final params = <String, String>{ 'profile-level-id': 'foobar' };

    expect(H264Utils.parseSdpProfileLevelId(params: params), null);
  });

  test('TestIsSameProfile', () {
    expect(H264Utils.isSameProfile(<String, String>{ 'foo': 'foo'}, <String, String>{ 'bar': 'bar'}), true);
    expect(H264Utils.isSameProfile(<String, String>{ 'profile-level-id': '42e01f'}, <String, String>{ 'profile-level-id': '42C02A'}), true);
    expect(H264Utils.isSameProfile(<String, String>{ 'profile-level-id': '42a01f'}, <String, String>{ 'profile-level-id': '58A01F'}), true);
    expect(H264Utils.isSameProfile(<String, String>{ 'profile-level-id': '42e01f'}, {}), true);
  });

  test('TestIsNotSameProfile', () {
    expect(H264Utils.isSameProfile({}, <String, String>{ 'profile-level-id': '4d001f' }), false);
    expect(H264Utils.isSameProfile(<String, String>{ 'profile-level-id': '42a01f' }, <String, String>{ 'profile-level-id': '640c1f' }), false);
    expect(H264Utils.isSameProfile(<String, String>{ 'profile-level-id': '42000a' }, <String, String>{ 'profile-level-id': '64002a' }), false);
  });

  test('TestGenerateProfileLevelIdForAnswerEmpty', () {
    expect(H264Utils.generateProfileLevelIdForAnswer(local_supported_params: {}, remote_offered_params: {}), null);
  });

  test('TestGenerateProfileLevelIdForAnswerLevelSymmetryCapped', () {
    final low_level = <String, String>{ 'profile-level-id': '42e015' };
    final high_level = <String, String>{ 'profile-level-id': '42e015' };

    expect(H264Utils.generateProfileLevelIdForAnswer(local_supported_params: low_level, remote_offered_params: high_level), '42e015');
    expect(H264Utils.generateProfileLevelIdForAnswer(local_supported_params: high_level, remote_offered_params: low_level), '42e015');
  });

  test('TestGenerateProfileLevelIdForAnswerConstrainedBaselineLevelAsymmetry', () {
    final local_params = <String, String>{
      'profile-level-id': '42e01f',
      'level-asymmetry-allowed': '1',
    };
    final remote_params = <String, String>{
      'profile-level-id': '42e015',
      'level-asymmetry-allowed' : '1',
    };

    expect(H264Utils.generateProfileLevelIdForAnswer(local_supported_params: local_params, remote_offered_params: remote_params), '42e01f');
  });
}