// Copyright 2014 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

import 'package:flutter_driver/flutter_driver.dart';
import 'package:flutter_driver/src/driver/memory_summarizer.dart';

import '../common.dart';

TimelineEvent newGPUTraceEvent(double ms) => TimelineEvent(<String, dynamic>{
  'name': 'AllocatorVK',
  'ph': 'b',
  'args': <String, String>{
    'MemoryBudgetUsageMB': ms.toString()
  },
});

void main() {
  test('Can process GPU memory usage times.', () {
    final GPUMemorySumarizer summarizer = GPUMemorySumarizer(<TimelineEvent>[
      newGPUTraceEvent(1024),
      newGPUTraceEvent(1024),
      newGPUTraceEvent(512),
      newGPUTraceEvent(2048),
    ]);

    expect(summarizer.computeAverageMemoryUsage(), closeTo(1152, 0.1));
    expect(summarizer.computePercentileMemoryUsage(50.0), closeTo(1024, 0.1));
    expect(summarizer.computeWorstMemoryUsage(), 2048);
  });
}