import 'package:flutter/gestures.dart';
import 'package:test/test.dart';
import 'velocity_tracker_data.dart';

const int kNumIters = 10000;
const int kBatchSize = 1000;
const int kBatchOffset = 50;
const int kNumMarks = 130;

List<PointerInputEvent> _eventFromMap(List<Map> intermediate) {
  List<PointerInputEvent> events = new List<PointerInputEvent>();
  for (Map entry in intermediate)
    events.add(_eventFor(entry));
  return events;
}

PointerInputEvent _eventFor(Map entry) {
  PointerInputEvent result = new PointerInputEvent(
    type: entry['type'],
    timeStamp: entry['timeStamp'],
    pointer: entry['pointer'],
    x: entry['x'],
    y: entry['y']
  );
  return result;
}

void main() {
  List<PointerInputEvent> events = _eventFromMap(velocityEventData);

  test('Dart velocity tracker performance', () {
    VelocityTracker tracker = new VelocityTracker();
    Stopwatch watch = new Stopwatch();
    watch.start();
    for (int i = 0; i < kNumIters; i++) {
      for (PointerInputEvent event in events) {
        if (event.type == 'pointerdown' || event.type == 'pointermove')
          tracker.addPosition(event.timeStamp, event.x, event.y);
        if (event.type == 'pointerup')
          tracker.getVelocity();
      }
    }
    watch.stop();
    print("Dart tracker: " + watch.elapsed.toString());
  });
}