mirror of
https://github.com/flutter/flutter.git
synced 2025-06-03 00:51:18 +00:00
242 lines
6.3 KiB
Dart
242 lines
6.3 KiB
Dart
import 'package:flutter/gestures.dart';
|
|
import 'package:test/test.dart';
|
|
|
|
typedef void GestureArenaCallback(Object key);
|
|
|
|
class TestGestureArenaMember extends GestureArenaMember {
|
|
TestGestureArenaMember({ this.onAcceptGesture, this.onRejectGesture });
|
|
|
|
final GestureArenaCallback onAcceptGesture;
|
|
final GestureArenaCallback onRejectGesture;
|
|
|
|
void acceptGesture(Object key) {
|
|
onAcceptGesture(key);
|
|
}
|
|
|
|
void rejectGesture(Object key) {
|
|
onRejectGesture(key);
|
|
}
|
|
}
|
|
|
|
void main() {
|
|
test('Should win by accepting', () {
|
|
GestureArena arena = new GestureArena();
|
|
|
|
int primaryKey = 4;
|
|
bool firstAcceptRan = false;
|
|
bool firstRejectRan = false;
|
|
bool secondAcceptRan = false;
|
|
bool secondRejectRan = false;
|
|
|
|
TestGestureArenaMember first = new TestGestureArenaMember(
|
|
onAcceptGesture: (int key) {
|
|
expect(key, equals(primaryKey));
|
|
firstAcceptRan = true;
|
|
},
|
|
onRejectGesture: (int key) {
|
|
expect(key, equals(primaryKey));
|
|
firstRejectRan = true;
|
|
}
|
|
);
|
|
|
|
TestGestureArenaMember second = new TestGestureArenaMember(
|
|
onAcceptGesture: (int key) {
|
|
expect(key, equals(primaryKey));
|
|
secondAcceptRan = true;
|
|
},
|
|
onRejectGesture: (int key) {
|
|
expect(key, equals(primaryKey));
|
|
secondRejectRan = true;
|
|
}
|
|
);
|
|
|
|
GestureArenaEntry firstEntry = arena.add(primaryKey, first);
|
|
arena.add(primaryKey, second);
|
|
arena.close(primaryKey);
|
|
|
|
expect(firstAcceptRan, isFalse);
|
|
expect(firstRejectRan, isFalse);
|
|
expect(secondAcceptRan, isFalse);
|
|
expect(secondRejectRan, isFalse);
|
|
|
|
firstEntry.resolve(GestureDisposition.accepted);
|
|
|
|
expect(firstAcceptRan, isTrue);
|
|
expect(firstRejectRan, isFalse);
|
|
expect(secondAcceptRan, isFalse);
|
|
expect(secondRejectRan, isTrue);
|
|
});
|
|
|
|
test('Should win by sweep', () {
|
|
GestureArena arena = new GestureArena();
|
|
|
|
int primaryKey = 4;
|
|
bool firstAcceptRan = false;
|
|
bool firstRejectRan = false;
|
|
bool secondAcceptRan = false;
|
|
bool secondRejectRan = false;
|
|
|
|
TestGestureArenaMember first = new TestGestureArenaMember(
|
|
onAcceptGesture: (int key) {
|
|
expect(key, equals(primaryKey));
|
|
firstAcceptRan = true;
|
|
},
|
|
onRejectGesture: (int key) {
|
|
expect(key, equals(primaryKey));
|
|
firstRejectRan = true;
|
|
}
|
|
);
|
|
|
|
TestGestureArenaMember second = new TestGestureArenaMember(
|
|
onAcceptGesture: (int key) {
|
|
expect(key, equals(primaryKey));
|
|
secondAcceptRan = true;
|
|
},
|
|
onRejectGesture: (int key) {
|
|
expect(key, equals(primaryKey));
|
|
secondRejectRan = true;
|
|
}
|
|
);
|
|
|
|
arena.add(primaryKey, first);
|
|
arena.add(primaryKey, second);
|
|
arena.close(primaryKey);
|
|
|
|
expect(firstAcceptRan, isFalse);
|
|
expect(firstRejectRan, isFalse);
|
|
expect(secondAcceptRan, isFalse);
|
|
expect(secondRejectRan, isFalse);
|
|
|
|
arena.sweep(primaryKey);
|
|
|
|
expect(firstAcceptRan, isTrue);
|
|
expect(firstRejectRan, isFalse);
|
|
expect(secondAcceptRan, isFalse);
|
|
expect(secondRejectRan, isTrue);
|
|
});
|
|
|
|
test('Should win on release after hold sweep release', () {
|
|
GestureArena arena = new GestureArena();
|
|
|
|
int primaryKey = 4;
|
|
bool firstAcceptRan = false;
|
|
bool firstRejectRan = false;
|
|
bool secondAcceptRan = false;
|
|
bool secondRejectRan = false;
|
|
|
|
TestGestureArenaMember first = new TestGestureArenaMember(
|
|
onAcceptGesture: (int key) {
|
|
expect(key, equals(primaryKey));
|
|
firstAcceptRan = true;
|
|
},
|
|
onRejectGesture: (int key) {
|
|
expect(key, equals(primaryKey));
|
|
firstRejectRan = true;
|
|
}
|
|
);
|
|
|
|
TestGestureArenaMember second = new TestGestureArenaMember(
|
|
onAcceptGesture: (int key) {
|
|
expect(key, equals(primaryKey));
|
|
secondAcceptRan = true;
|
|
},
|
|
onRejectGesture: (int key) {
|
|
expect(key, equals(primaryKey));
|
|
secondRejectRan = true;
|
|
}
|
|
);
|
|
|
|
arena.add(primaryKey, first);
|
|
arena.add(primaryKey, second);
|
|
arena.close(primaryKey);
|
|
|
|
expect(firstAcceptRan, isFalse);
|
|
expect(firstRejectRan, isFalse);
|
|
expect(secondAcceptRan, isFalse);
|
|
expect(secondRejectRan, isFalse);
|
|
|
|
arena.hold(primaryKey);
|
|
|
|
expect(firstAcceptRan, isFalse);
|
|
expect(firstRejectRan, isFalse);
|
|
expect(secondAcceptRan, isFalse);
|
|
expect(secondRejectRan, isFalse);
|
|
|
|
arena.sweep(primaryKey);
|
|
|
|
expect(firstAcceptRan, isFalse);
|
|
expect(firstRejectRan, isFalse);
|
|
expect(secondAcceptRan, isFalse);
|
|
expect(secondRejectRan, isFalse);
|
|
|
|
arena.release(primaryKey);
|
|
|
|
expect(firstAcceptRan, isTrue);
|
|
expect(firstRejectRan, isFalse);
|
|
expect(secondAcceptRan, isFalse);
|
|
expect(secondRejectRan, isTrue);
|
|
});
|
|
|
|
test('Should win on sweep after hold release sweep', () {
|
|
GestureArena arena = new GestureArena();
|
|
|
|
int primaryKey = 4;
|
|
bool firstAcceptRan = false;
|
|
bool firstRejectRan = false;
|
|
bool secondAcceptRan = false;
|
|
bool secondRejectRan = false;
|
|
|
|
TestGestureArenaMember first = new TestGestureArenaMember(
|
|
onAcceptGesture: (int key) {
|
|
expect(key, equals(primaryKey));
|
|
firstAcceptRan = true;
|
|
},
|
|
onRejectGesture: (int key) {
|
|
expect(key, equals(primaryKey));
|
|
firstRejectRan = true;
|
|
}
|
|
);
|
|
|
|
TestGestureArenaMember second = new TestGestureArenaMember(
|
|
onAcceptGesture: (int key) {
|
|
expect(key, equals(primaryKey));
|
|
secondAcceptRan = true;
|
|
},
|
|
onRejectGesture: (int key) {
|
|
expect(key, equals(primaryKey));
|
|
secondRejectRan = true;
|
|
}
|
|
);
|
|
|
|
arena.add(primaryKey, first);
|
|
arena.add(primaryKey, second);
|
|
arena.close(primaryKey);
|
|
|
|
expect(firstAcceptRan, isFalse);
|
|
expect(firstRejectRan, isFalse);
|
|
expect(secondAcceptRan, isFalse);
|
|
expect(secondRejectRan, isFalse);
|
|
|
|
arena.hold(primaryKey);
|
|
|
|
expect(firstAcceptRan, isFalse);
|
|
expect(firstRejectRan, isFalse);
|
|
expect(secondAcceptRan, isFalse);
|
|
expect(secondRejectRan, isFalse);
|
|
|
|
arena.release(primaryKey);
|
|
|
|
expect(firstAcceptRan, isFalse);
|
|
expect(firstRejectRan, isFalse);
|
|
expect(secondAcceptRan, isFalse);
|
|
expect(secondRejectRan, isFalse);
|
|
|
|
arena.sweep(primaryKey);
|
|
|
|
expect(firstAcceptRan, isTrue);
|
|
expect(firstRejectRan, isFalse);
|
|
expect(secondAcceptRan, isFalse);
|
|
expect(secondRejectRan, isTrue);
|
|
});
|
|
}
|