semantics_2_test.dart 7.34 KB
Newer Older
Hixie's avatar
Hixie committed
1 2 3 4 5 6 7 8 9
// 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/material.dart';
import 'package:flutter/rendering.dart';
import 'package:flutter/widgets.dart';
import 'package:flutter_test/flutter_test.dart';

10
import '../rendering/test_semantics_client.dart';
Hixie's avatar
Hixie committed
11 12

void main() {
13
  testWidgets('Semantics 2', (WidgetTester tester) async {
14
    TestSemanticsClient client = new TestSemanticsClient(tester.binding.pipelineOwner);
Hixie's avatar
Hixie committed
15

16 17 18
    // this test is the same as the test in Semantics 1, but
    // starting with the second branch being ignored and then
    // switching to not ignoring it.
Hixie's avatar
Hixie committed
19

20
    // forking semantics
21
    await tester.pumpWidget(
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
      new Column(
        children: <Widget>[
          new Container(
            height: 10.0,
            child: new Semantics(label: 'child1')
          ),
          new Container(
            height: 10.0,
            child: new IgnorePointer(
              ignoring: false,
              child: new Semantics(label: 'child2')
            )
          ),
        ],
        crossAxisAlignment: CrossAxisAlignment.stretch
      )
    );
39
    expect(client.updates.length, equals(1));
40
    expect(client.updates[0].id, equals(0));
41
    expect(client.updates[0].actions, isEmpty);
42 43 44 45 46 47 48 49 50 51
    expect(client.updates[0].flags.hasCheckedState, isFalse);
    expect(client.updates[0].flags.isChecked, isFalse);
    expect(client.updates[0].strings.label, equals(''));
    expect(client.updates[0].geometry.transform, isNull);
    expect(client.updates[0].geometry.left, equals(0.0));
    expect(client.updates[0].geometry.top, equals(0.0));
    expect(client.updates[0].geometry.width, equals(800.0));
    expect(client.updates[0].geometry.height, equals(600.0));
    expect(client.updates[0].children.length, equals(2));
    expect(client.updates[0].children[0].id, equals(1));
52
    expect(client.updates[0].children[0].actions, isEmpty);
53 54 55 56 57 58 59 60 61 62
    expect(client.updates[0].children[0].flags.hasCheckedState, isFalse);
    expect(client.updates[0].children[0].flags.isChecked, isFalse);
    expect(client.updates[0].children[0].strings.label, equals('child1'));
    expect(client.updates[0].children[0].geometry.transform, isNull);
    expect(client.updates[0].children[0].geometry.left, equals(0.0));
    expect(client.updates[0].children[0].geometry.top, equals(0.0));
    expect(client.updates[0].children[0].geometry.width, equals(800.0));
    expect(client.updates[0].children[0].geometry.height, equals(10.0));
    expect(client.updates[0].children[0].children.length, equals(0));
    expect(client.updates[0].children[1].id, equals(2));
63
    expect(client.updates[0].children[1].actions, isEmpty);
64 65 66
    expect(client.updates[0].children[1].flags.hasCheckedState, isFalse);
    expect(client.updates[0].children[1].flags.isChecked, isFalse);
    expect(client.updates[0].children[1].strings.label, equals('child2'));
67
    expect(client.updates[0].children[1].geometry.transform, equals(<double>[1.0,0.0,0.0,0.0, 0.0,1.0,0.0,0.0, 0.0,0.0,1.0,0.0, 0.0,10.0,0.0,1.0]));
68 69 70 71 72 73
    expect(client.updates[0].children[1].geometry.left, equals(0.0));
    expect(client.updates[0].children[1].geometry.top, equals(0.0));
    expect(client.updates[0].children[1].geometry.width, equals(800.0));
    expect(client.updates[0].children[1].geometry.height, equals(10.0));
    expect(client.updates[0].children[1].children.length, equals(0));
    client.updates.clear();
Hixie's avatar
Hixie committed
74

75
    // toggle a branch off
76
    await tester.pumpWidget(
77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
      new Column(
        children: <Widget>[
          new Container(
            height: 10.0,
            child: new Semantics(label: 'child1')
          ),
          new Container(
            height: 10.0,
            child: new IgnorePointer(
              ignoring: true,
              child: new Semantics(label: 'child2')
            )
          ),
        ],
        crossAxisAlignment: CrossAxisAlignment.stretch
      )
    );
94
    expect(client.updates.length, equals(1));
95
    expect(client.updates[0].id, equals(0));
96
    expect(client.updates[0].actions, isEmpty);
97 98 99 100 101 102 103 104 105 106
    expect(client.updates[0].flags.hasCheckedState, isFalse);
    expect(client.updates[0].flags.isChecked, isFalse);
    expect(client.updates[0].strings.label, equals('child1'));
    expect(client.updates[0].geometry.transform, isNull);
    expect(client.updates[0].geometry.left, equals(0.0));
    expect(client.updates[0].geometry.top, equals(0.0));
    expect(client.updates[0].geometry.width, equals(800.0));
    expect(client.updates[0].geometry.height, equals(600.0));
    expect(client.updates[0].children.length, equals(0));
    client.updates.clear();
Hixie's avatar
Hixie committed
107

108
    // toggle a branch back on
109
    await tester.pumpWidget(
110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126
      new Column(
        children: <Widget>[
          new Container(
            height: 10.0,
            child: new Semantics(label: 'child1')
          ),
          new Container(
            height: 10.0,
            child: new IgnorePointer(
              ignoring: false,
              child: new Semantics(label: 'child2')
            )
          ),
        ],
        crossAxisAlignment: CrossAxisAlignment.stretch
      )
    );
127
    expect(client.updates.length, equals(1));
128
    expect(client.updates[0].id, equals(0));
129
    expect(client.updates[0].actions, isEmpty);
130 131 132 133 134 135 136 137 138 139
    expect(client.updates[0].flags.hasCheckedState, isFalse);
    expect(client.updates[0].flags.isChecked, isFalse);
    expect(client.updates[0].strings.label, equals(''));
    expect(client.updates[0].geometry.transform, isNull);
    expect(client.updates[0].geometry.left, equals(0.0));
    expect(client.updates[0].geometry.top, equals(0.0));
    expect(client.updates[0].geometry.width, equals(800.0));
    expect(client.updates[0].geometry.height, equals(600.0));
    expect(client.updates[0].children.length, equals(2));
    expect(client.updates[0].children[0].id, equals(3));
140
    expect(client.updates[0].children[0].actions, isEmpty);
141 142 143 144 145 146 147 148 149 150
    expect(client.updates[0].children[0].flags.hasCheckedState, isFalse);
    expect(client.updates[0].children[0].flags.isChecked, isFalse);
    expect(client.updates[0].children[0].strings.label, equals('child1'));
    expect(client.updates[0].children[0].geometry.transform, isNull);
    expect(client.updates[0].children[0].geometry.left, equals(0.0));
    expect(client.updates[0].children[0].geometry.top, equals(0.0));
    expect(client.updates[0].children[0].geometry.width, equals(800.0));
    expect(client.updates[0].children[0].geometry.height, equals(10.0));
    expect(client.updates[0].children[0].children.length, equals(0));
    expect(client.updates[0].children[1].id, equals(2));
151
    expect(client.updates[0].children[1].actions, isEmpty);
152 153 154
    expect(client.updates[0].children[1].flags.hasCheckedState, isFalse);
    expect(client.updates[0].children[1].flags.isChecked, isFalse);
    expect(client.updates[0].children[1].strings.label, equals('child2'));
155
    expect(client.updates[0].children[1].geometry.transform, equals(<double>[1.0,0.0,0.0,0.0, 0.0,1.0,0.0,0.0, 0.0,0.0,1.0,0.0, 0.0,10.0,0.0,1.0]));
156 157 158 159 160 161
    expect(client.updates[0].children[1].geometry.left, equals(0.0));
    expect(client.updates[0].children[1].geometry.top, equals(0.0));
    expect(client.updates[0].children[1].geometry.width, equals(800.0));
    expect(client.updates[0].children[1].geometry.height, equals(10.0));
    expect(client.updates[0].children[1].children.length, equals(0));
    client.updates.clear();
162
    client.dispose();
Hixie's avatar
Hixie committed
163 164
  });
}