blob: 839a453d8f5c071d33228a3c2761416fa3991c1b [file] [log] [blame]
// 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/rendering.dart';
import 'package:test/test.dart';
import 'rendering_tester.dart';
void main() {
test('Stack can layout with top, right, bottom, left 0.0', () {
final RenderBox size = new RenderConstrainedBox(
additionalConstraints: new BoxConstraints.tight(const Size(100.0, 100.0))
);
final RenderBox red = new RenderDecoratedBox(
decoration: const BoxDecoration(
color: const Color(0xFFFF0000),
),
child: size
);
final RenderBox green = new RenderDecoratedBox(
decoration: const BoxDecoration(
color: const Color(0xFFFF0000),
),
);
final RenderBox stack = new RenderStack(
textDirection: TextDirection.ltr,
children: <RenderBox>[red, green],
);
final StackParentData greenParentData = green.parentData;
greenParentData
..top = 0.0
..right = 0.0
..bottom = 0.0
..left = 0.0;
layout(stack, constraints: const BoxConstraints());
expect(stack.size.width, equals(100.0));
expect(stack.size.height, equals(100.0));
expect(red.size.width, equals(100.0));
expect(red.size.height, equals(100.0));
expect(green.size.width, equals(100.0));
expect(green.size.height, equals(100.0));
});
test('Stack can layout with no children', () {
final RenderBox stack = new RenderStack(
textDirection: TextDirection.ltr,
children: <RenderBox>[],
);
layout(stack, constraints: new BoxConstraints.tight(const Size(100.0, 100.0)));
expect(stack.size.width, equals(100.0));
expect(stack.size.height, equals(100.0));
});
group('RenderIndexedStack', () {
test('visitChildrenForSemantics only visits displayed child', () {
final RenderBox child1 = new RenderConstrainedBox(
additionalConstraints: new BoxConstraints.tight(const Size(100.0, 100.0))
);
final RenderBox child2 = new RenderConstrainedBox(
additionalConstraints: new BoxConstraints.tight(const Size(100.0, 100.0))
);
final RenderBox child3 = new RenderConstrainedBox(
additionalConstraints: new BoxConstraints.tight(const Size(100.0, 100.0))
);
final RenderBox stack = new RenderIndexedStack(
index: 1,
textDirection: TextDirection.ltr,
children: <RenderBox>[child1, child2, child3],
);
final List<RenderObject> visitedChildren = <RenderObject>[];
final RenderObjectVisitor visitor = (RenderObject child) {
visitedChildren.add(child);
};
stack.visitChildrenForSemantics(visitor);
expect(visitedChildren, hasLength(1));
expect(visitedChildren.first, child2);
});
});
// More tests in ../widgets/stack_test.dart
}