describe method

String describe()

A report for a test that prints it or a CI job that keeps it in the log.

Implementation

String describe() {
  final buffer = StringBuffer()
    ..writeln(
      '${componentUses.keys.length} of ${catalogComponents.length} '
      'components used across $sessions '
      'session${sessions == 1 ? '' : 's'} and $surfaces '
      'surface${surfaces == 1 ? '' : 's'}',
    );

  final unused = unusedComponents.toList()..sort();
  if (unused.isNotEmpty) {
    final GenUiCatalogWeight? w = weight;
    buffer.writeln('  never composed:');
    for (final String name in unused) {
      final int? cost = w?.byComponent[name];
      buffer.writeln(
        cost == null
            ? '    $name'
            : '    ${cost.toString().padLeft(6)}  '
                  '${(w!.shareOf(name) * 100).toStringAsFixed(1)}%  $name',
      );
    }
    final int? wasted = wastedCharacters;
    if (wasted != null && w != null && w.total > 0) {
      buffer.writeln(
        '    ${wasted.toString().padLeft(6)}  '
        '${(wasted / w.total * 100).toStringAsFixed(1)}%  in every request, '
        'for components the agent never asked for',
      );
    }
  }

  final unusedProps = unusedProperties;
  if (unusedProps.isNotEmpty) {
    buffer.writeln('  composed, with properties never filled:');
    final names = unusedProps.keys.toList()..sort();
    for (final String name in names) {
      final props = unusedProps[name]!.toList()..sort();
      buffer.writeln('    $name: ${props.join(', ')}');
    }
  }

  final unusedEnums = unusedEnumValues;
  if (unusedEnums.isNotEmpty) {
    buffer.writeln('  enum values never chosen:');
    final keys = unusedEnums.keys.toList()..sort();
    for (final String key in keys) {
      final values = unusedEnums[key]!.toList()..sort();
      buffer.writeln('    $key: ${values.join(', ')}');
    }
  }

  return buffer.toString();
}