flutter/packages/unit/test/rendering/box_test.dart
Hans Muller d9153a13c6 Update shadow rendering
Shadows now render as three seprate MaskFilter.blur components per the most recent Material spec.

The shadows Map was replaced by a similar Map called elevationToShadow with entries that match the 10 elevations specifed by http://www.google.com/design/spec/what-is-material/elevation-shadows.html.

The "level" property (many classes) is now called "elevation", to match the Material spec.

BoxShadow now includes a spreadRadius parameter - as in CSS box-shadow. Renamed the BoxShadow blur property to blurRadius to further align BoxShadow with CSS box-shadow.
2015-11-18 07:58:28 -08:00

98 lines
3.0 KiB
Dart

import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';
import 'package:test/test.dart';
import 'rendering_tester.dart';
void main() {
test("should size to render view", () {
RenderBox root = new RenderDecoratedBox(
decoration: new BoxDecoration(
backgroundColor: const Color(0xFF00FF00),
gradient: new RadialGradient(
center: Point.origin, radius: 500.0,
colors: <Color>[Colors.yellow[500], Colors.blue[500]]),
boxShadow: elevationToShadow[3])
);
layout(root);
expect(root.size.width, equals(800.0));
expect(root.size.height, equals(600.0));
});
test('Flex and padding', () {
RenderBox size = new RenderConstrainedBox(
additionalConstraints: new BoxConstraints().tightenHeight(100.0)
);
RenderBox inner = new RenderDecoratedBox(
decoration: new BoxDecoration(
backgroundColor: const Color(0xFF00FF00)
),
child: size
);
RenderBox padding = new RenderPadding(
padding: new EdgeDims.all(50.0),
child: inner
);
RenderBox flex = new RenderFlex(
children: <RenderBox>[padding],
direction: FlexDirection.vertical,
alignItems: FlexAlignItems.stretch
);
RenderBox outer = new RenderDecoratedBox(
decoration: new BoxDecoration(
backgroundColor: const Color(0xFF0000FF)
),
child: flex
);
layout(outer);
expect(size.size.width, equals(700.0));
expect(size.size.height, equals(100.0));
expect(inner.size.width, equals(700.0));
expect(inner.size.height, equals(100.0));
expect(padding.size.width, equals(800.0));
expect(padding.size.height, equals(200.0));
expect(flex.size.width, equals(800.0));
expect(flex.size.height, equals(600.0));
expect(outer.size.width, equals(800.0));
expect(outer.size.height, equals(600.0));
});
test("should not have a 0 sized colored Box", () {
var coloredBox = new RenderDecoratedBox(
decoration: new BoxDecoration()
);
var paddingBox = new RenderPadding(padding: const EdgeDims.all(10.0),
child: coloredBox);
RenderBox root = new RenderDecoratedBox(
decoration: new BoxDecoration(),
child: paddingBox
);
layout(root);
expect(coloredBox.size.width, equals(780.0));
expect(coloredBox.size.height, equals(580.0));
});
test("reparenting should clear position", () {
RenderDecoratedBox coloredBox = new RenderDecoratedBox(
decoration: new BoxDecoration());
RenderPadding paddedBox = new RenderPadding(
child: coloredBox, padding: const EdgeDims.all(10.0));
layout(paddedBox);
BoxParentData parentData = coloredBox.parentData;
expect(parentData.position.x, isNot(equals(0.0)));
paddedBox.child = null;
RenderConstrainedBox constraintedBox = new RenderConstrainedBox(
child: coloredBox, additionalConstraints: const BoxConstraints());
layout(constraintedBox);
parentData = coloredBox.parentData;
expect(parentData.position.x, equals(0.0));
});
}