Commit 53194ed4 authored by Ian Hickson's avatar Ian Hickson Committed by GitHub

ShapeBorder (#12335)

This class lays the groundwork for RTL borders.
parent 437e4c08
...@@ -51,34 +51,34 @@ void main() { ...@@ -51,34 +51,34 @@ void main() {
final BorderSide yellow2 = const BorderSide(color: const Color(0xFFFFFF00), width: 2.0); final BorderSide yellow2 = const BorderSide(color: const Color(0xFFFFFF00), width: 2.0);
final BorderSide yellowNone0 = const BorderSide(color: const Color(0xFFFFFF00), width: 0.0, style: BorderStyle.none); final BorderSide yellowNone0 = const BorderSide(color: const Color(0xFFFFFF00), width: 0.0, style: BorderStyle.none);
expect( expect(
new Border(top: yellow2).add(new Border(right: magenta3)), new Border(top: yellow2) + new Border(right: magenta3),
new Border(top: yellow2, right: magenta3), new Border(top: yellow2, right: magenta3),
); );
expect( expect(
new Border(bottom: magenta3).add(new Border(bottom: magenta3)), new Border(bottom: magenta3) + new Border(bottom: magenta3),
new Border(bottom: magenta6), new Border(bottom: magenta6),
); );
expect( expect(
new Border(left: magenta3, right: yellowNone0).add(new Border(right: yellow2)), new Border(left: magenta3, right: yellowNone0) + new Border(right: yellow2),
new Border(left: magenta3, right: yellow2), new Border(left: magenta3, right: yellow2),
); );
expect( expect(
const Border().add(const Border()), const Border() + const Border(),
const Border(), const Border(),
); );
expect( expect(
new Border(left: magenta3).add(new Border(left: yellow2)), new Border(left: magenta3) + new Border(left: yellow2),
isNull, isNot(const isInstanceOf<Border>()), // see shape_border_test.dart for better tests of this case
); );
final Border b3 = new Border(top: magenta3); final Border b3 = new Border(top: magenta3);
final Border b6 = new Border(top: magenta6); final Border b6 = new Border(top: magenta6);
expect(b3.add(b3), b6); expect(b3 + b3, b6);
final Border b0 = new Border(top: yellowNone0); final Border b0 = new Border(top: yellowNone0);
final Border bZ = const Border(); final Border bZ = const Border();
expect(b0.add(b0), bZ); expect(b0 + b0, bZ);
expect(bZ.add(bZ), bZ); expect(bZ + bZ, bZ);
expect(b0.add(bZ), bZ); expect(b0 + bZ, bZ);
expect(bZ.add(b0), bZ); expect(bZ + b0, bZ);
}); });
test('Border.scale', () { test('Border.scale', () {
......
// Copyright 2017 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/painting.dart';
import 'package:flutter_test/flutter_test.dart';
import '../rendering/mock_canvas.dart';
void main() {
test('Compound borders', () {
final Border b1 = new Border.all(color: const Color(0xFF00FF00));
final Border b2 = new Border.all(color: const Color(0xFF0000FF));
expect(
(b1 + b2).toString(),
'Border.all(BorderSide(Color(0xff00ff00), 1.0, BorderStyle.solid)) + '
'Border.all(BorderSide(Color(0xff0000ff), 1.0, BorderStyle.solid))',
);
expect(
(b1 + (b2 + b2)).toString(),
'Border.all(BorderSide(Color(0xff00ff00), 1.0, BorderStyle.solid)) + '
'Border.all(BorderSide(Color(0xff0000ff), 2.0, BorderStyle.solid))',
);
expect(
((b1 + b2) + b2).toString(),
'Border.all(BorderSide(Color(0xff00ff00), 1.0, BorderStyle.solid)) + '
'Border.all(BorderSide(Color(0xff0000ff), 2.0, BorderStyle.solid))',
);
expect((b1 + b2) + b2, b1 + (b2 + b2));
expect(
(b1 + b2).scale(3.0).toString(),
'Border.all(BorderSide(Color(0xff00ff00), 3.0, BorderStyle.solid)) + '
'Border.all(BorderSide(Color(0xff0000ff), 3.0, BorderStyle.solid))',
);
expect(
(b1 + b2).scale(0.0).toString(),
'Border.all(BorderSide(Color(0xff00ff00), 0.0, BorderStyle.none)) + '
'Border.all(BorderSide(Color(0xff0000ff), 0.0, BorderStyle.none))',
);
expect(
ShapeBorder.lerp(b2 + b1, b1 + b2, 0.0).toString(),
'Border.all(BorderSide(Color(0xff0000ff), 1.0, BorderStyle.solid)) + '
'Border.all(BorderSide(Color(0xff00ff00), 1.0, BorderStyle.solid))',
);
expect(
ShapeBorder.lerp(b2 + b1, b1 + b2, 0.25).toString(),
'Border.all(BorderSide(Color(0xff003fbf), 1.0, BorderStyle.solid)) + '
'Border.all(BorderSide(Color(0xff00bf3f), 1.0, BorderStyle.solid))',
);
expect(
ShapeBorder.lerp(b2 + b1, b1 + b2, 0.5).toString(),
'Border.all(BorderSide(Color(0xff007f7f), 1.0, BorderStyle.solid)) + '
'Border.all(BorderSide(Color(0xff007f7f), 1.0, BorderStyle.solid))',
);
expect(
ShapeBorder.lerp(b2 + b1, b1 + b2, 1.0).toString(),
'Border.all(BorderSide(Color(0xff00ff00), 1.0, BorderStyle.solid)) + '
'Border.all(BorderSide(Color(0xff0000ff), 1.0, BorderStyle.solid))'
);
expect((b1 + b2).dimensions, const EdgeInsets.all(2.0));
final Rect rect = new Rect.fromLTRB(11.0, 15.0, 299.0, 175.0);
expect((Canvas canvas) => (b1 + b2).paint(canvas, rect), paints
..rect(rect: rect.deflate(0.5), color: b2.top.color)
..rect(rect: rect.deflate(1.5), color: b1.top.color)
);
expect((b1 + b2 + b1).dimensions, const EdgeInsets.all(3.0));
expect((Canvas canvas) => (b1 + b2 + b1).paint(canvas, rect), paints
..rect(rect: rect.deflate(0.5), color: b1.top.color)
..rect(rect: rect.deflate(1.5), color: b2.top.color)
..rect(rect: rect.deflate(2.5), color: b1.top.color)
);
});
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment