two_level_list_test.dart 2.64 KB
Newer Older
Hans Muller's avatar
Hans Muller committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
// Copyright 2016 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_test/flutter_test.dart';
import 'package:flutter/widgets.dart';
import 'package:flutter/material.dart';
import 'package:test/test.dart';

void main() {
  test('TwoLeveList basics', () {
    final Key topKey = new UniqueKey();
    final Key sublistKey = new UniqueKey();
    final Key bottomKey = new UniqueKey();

16
    final Map<String, WidgetBuilder> routes = <String, WidgetBuilder>{
Hans Muller's avatar
Hans Muller committed
17 18 19 20 21
      '/': (_) {
        return new Material(
          child: new Viewport(
            child: new TwoLevelList(
              items: <Widget>[
22
                new TwoLevelListItem(title: new Text('Top'), key: topKey),
Hans Muller's avatar
Hans Muller committed
23 24
                new TwoLevelSublist(
                  key: sublistKey,
25
                  title: new Text('Sublist'),
Hans Muller's avatar
Hans Muller committed
26
                  children: <Widget>[
27 28
                    new TwoLevelListItem(title: new Text('0')),
                    new TwoLevelListItem(title: new Text('1'))
Hans Muller's avatar
Hans Muller committed
29 30
                  ]
                ),
31
                new TwoLevelListItem(title: new Text('Bottom'), key: bottomKey)
Hans Muller's avatar
Hans Muller committed
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
              ]
            )
          )
        );
      }
    };

    testWidgets((WidgetTester tester) {
      tester.pumpWidget(new MaterialApp(routes: routes));

      expect(tester.findText('Top'), isNotNull);
      expect(tester.findText('Sublist'), isNotNull);
      expect(tester.findText('Bottom'), isNotNull);

      double getY(Key key) => tester.getTopLeft(tester.findElementByKey(key)).y;
      double getHeight(Key key) => tester.getSize(tester.findElementByKey(key)).height;

      expect(getY(topKey), lessThan(getY(sublistKey)));
      expect(getY(sublistKey), lessThan(getY(bottomKey)));

52 53 54
      // The sublist has a one pixel border above and below.
      expect(getHeight(topKey), equals(getHeight(sublistKey) - 2.0));
      expect(getHeight(bottomKey), equals(getHeight(sublistKey) - 2.0));
Hans Muller's avatar
Hans Muller committed
55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72

      tester.tap(tester.findText('Sublist'));
      tester.pump(const Duration(seconds: 1));
      tester.pump(const Duration(seconds: 1));

      expect(tester.findText('Top'), isNotNull);
      expect(tester.findText('Sublist'), isNotNull);
      expect(tester.findText('0'), isNotNull);
      expect(tester.findText('1'), isNotNull);
      expect(tester.findText('Bottom'), isNotNull);

      expect(getY(topKey), lessThan(getY(sublistKey)));
      expect(getY(sublistKey), lessThan(getY(bottomKey)));
      expect(getY(bottomKey) - getY(sublistKey), greaterThan(getHeight(topKey)));
      expect(getY(bottomKey) - getY(sublistKey), greaterThan(getHeight(bottomKey)));
    });
  });
}