mirror of
https://github.com/flutter/flutter.git
synced 2025-06-03 00:51:18 +00:00

- force the time dilation to 1.0 for the Widget tests, so that a local change doesn't break all the tests during development. - add missing license block to all the files. - set ui.window.onBeginFrame to null when you use WidgetTester, so that the engine doesn't trigger any confusing frames after our fake frames.
169 lines
4.9 KiB
Dart
169 lines
4.9 KiB
Dart
// Copyright 2015 The Chromium 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/widgets.dart';
|
|
import 'package:test/test.dart';
|
|
|
|
import 'widget_tester.dart';
|
|
import 'test_widgets.dart';
|
|
|
|
void main() {
|
|
test('HomogeneousViewport mount/dismount smoke test', () {
|
|
testWidgets((WidgetTester tester) {
|
|
List<int> callbackTracker = <int>[];
|
|
|
|
// the root view is 800x600 in the test environment
|
|
// so if our widget is 100 pixels tall, it should fit exactly 6 times.
|
|
|
|
Widget builder() {
|
|
return new FlipComponent(
|
|
left: new HomogeneousViewport(
|
|
builder: (BuildContext context, int start, int count) {
|
|
List<Widget> result = <Widget>[];
|
|
for (int index = start; index < start + count; index += 1) {
|
|
callbackTracker.add(index);
|
|
result.add(new Container(
|
|
key: new ValueKey<int>(index),
|
|
height: 100.0,
|
|
child: new Text("$index")
|
|
));
|
|
}
|
|
return result;
|
|
},
|
|
startOffset: 0.0,
|
|
itemExtent: 100.0
|
|
),
|
|
right: new Text('Not Today')
|
|
);
|
|
}
|
|
|
|
tester.pumpWidget(builder());
|
|
|
|
StatefulComponentElement element = tester.findElement((Element element) => element.widget is FlipComponent);
|
|
FlipComponentState testComponent = element.state;
|
|
|
|
expect(callbackTracker, equals([0, 1, 2, 3, 4, 5]));
|
|
|
|
callbackTracker.clear();
|
|
testComponent.flip();
|
|
tester.pump();
|
|
|
|
expect(callbackTracker, equals([]));
|
|
|
|
callbackTracker.clear();
|
|
testComponent.flip();
|
|
tester.pump();
|
|
|
|
expect(callbackTracker, equals([0, 1, 2, 3, 4, 5]));
|
|
});
|
|
});
|
|
|
|
test('HomogeneousViewport vertical', () {
|
|
testWidgets((WidgetTester tester) {
|
|
List<int> callbackTracker = <int>[];
|
|
|
|
// the root view is 800x600 in the test environment
|
|
// so if our widget is 200 pixels tall, it should fit exactly 3 times.
|
|
// but if we are offset by 300 pixels, there will be 4, numbered 1-4.
|
|
|
|
double offset = 300.0;
|
|
|
|
ListBuilder itemBuilder = (BuildContext context, int start, int count) {
|
|
List<Widget> result = <Widget>[];
|
|
for (int index = start; index < start + count; index += 1) {
|
|
callbackTracker.add(index);
|
|
result.add(new Container(
|
|
key: new ValueKey<int>(index),
|
|
width: 500.0, // this should be ignored
|
|
height: 400.0, // should be overridden by itemExtent
|
|
child: new Text("$index")
|
|
));
|
|
}
|
|
return result;
|
|
};
|
|
|
|
FlipComponent testComponent;
|
|
Widget builder() {
|
|
testComponent = new FlipComponent(
|
|
left: new HomogeneousViewport(
|
|
builder: itemBuilder,
|
|
startOffset: offset,
|
|
itemExtent: 200.0
|
|
),
|
|
right: new Text('Not Today')
|
|
);
|
|
return testComponent;
|
|
}
|
|
|
|
tester.pumpWidget(builder());
|
|
|
|
expect(callbackTracker, equals([1, 2, 3, 4]));
|
|
|
|
callbackTracker.clear();
|
|
|
|
offset = 400.0; // now only 3 should fit, numbered 2-4.
|
|
|
|
tester.pumpWidget(builder());
|
|
|
|
expect(callbackTracker, equals([2, 3, 4]));
|
|
|
|
callbackTracker.clear();
|
|
});
|
|
});
|
|
|
|
test('HomogeneousViewport horizontal', () {
|
|
testWidgets((WidgetTester tester) {
|
|
List<int> callbackTracker = <int>[];
|
|
|
|
// the root view is 800x600 in the test environment
|
|
// so if our widget is 200 pixels wide, it should fit exactly 4 times.
|
|
// but if we are offset by 300 pixels, there will be 5, numbered 1-5.
|
|
|
|
double offset = 300.0;
|
|
|
|
ListBuilder itemBuilder = (BuildContext context, int start, int count) {
|
|
List<Widget> result = <Widget>[];
|
|
for (int index = start; index < start + count; index += 1) {
|
|
callbackTracker.add(index);
|
|
result.add(new Container(
|
|
key: new ValueKey<int>(index),
|
|
width: 400.0, // this should be overridden by itemExtent
|
|
height: 500.0, // this should be ignored
|
|
child: new Text("$index")
|
|
));
|
|
}
|
|
return result;
|
|
};
|
|
|
|
FlipComponent testComponent;
|
|
Widget builder() {
|
|
testComponent = new FlipComponent(
|
|
left: new HomogeneousViewport(
|
|
builder: itemBuilder,
|
|
startOffset: offset,
|
|
itemExtent: 200.0,
|
|
direction: ScrollDirection.horizontal
|
|
),
|
|
right: new Text('Not Today')
|
|
);
|
|
return testComponent;
|
|
}
|
|
|
|
tester.pumpWidget(builder());
|
|
|
|
expect(callbackTracker, equals([1, 2, 3, 4, 5]));
|
|
|
|
callbackTracker.clear();
|
|
|
|
offset = 400.0; // now only 4 should fit, numbered 2-5.
|
|
|
|
tester.pumpWidget(builder());
|
|
|
|
expect(callbackTracker, equals([2, 3, 4, 5]));
|
|
|
|
callbackTracker.clear();
|
|
});
|
|
});
|
|
}
|