intrinsic_width_test.dart 2.14 KB
Newer Older
1
import 'package:flutter/rendering.dart';
Hixie's avatar
Hixie committed
2 3
import 'package:test/test.dart';

4
import 'rendering_tester.dart';
Hixie's avatar
Hixie committed
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37

class RenderTestBox extends RenderBox {
  RenderTestBox(this._intrinsicDimensions);

  final BoxConstraints _intrinsicDimensions;

  double getMinIntrinsicWidth(BoxConstraints constraints) {
    return constraints.constrainWidth(_intrinsicDimensions.minWidth);
  }

  double getMaxIntrinsicWidth(BoxConstraints constraints) {
    return constraints.constrainWidth(_intrinsicDimensions.maxWidth);
  }

  double getMinIntrinsicHeight(BoxConstraints constraints) {
    return constraints.constrainHeight(_intrinsicDimensions.minHeight);
  }

  double getMaxIntrinsicHeight(BoxConstraints constraints) {
    return constraints.constrainHeight(_intrinsicDimensions.maxHeight);
  }

  bool get sizedByParent => true;
  void performResize() {
    size = constraints.constrain(new Size(_intrinsicDimensions.minWidth + (_intrinsicDimensions.maxWidth-_intrinsicDimensions.minWidth) / 2.0,
                                          _intrinsicDimensions.minHeight + (_intrinsicDimensions.maxHeight-_intrinsicDimensions.minHeight) / 2.0));
  }
}

void main() {
  test('Shrink-wrapping width', () {
    RenderBox child = new RenderTestBox(new BoxConstraints(minWidth: 10.0, maxWidth: 100.0, minHeight: 20.0, maxHeight: 200.0));

38
    RenderBox parent = new RenderIntrinsicWidth(child: child);
Hixie's avatar
Hixie committed
39 40 41 42 43 44 45 46 47 48 49 50 51
    layout(parent,
          constraints: new BoxConstraints(
              minWidth: 5.0,
              minHeight: 8.0,
              maxWidth: 500.0,
              maxHeight: 800.0));
    expect(parent.size.width, equals(100.0));
    expect(parent.size.height, equals(110.0));
  });

  test('Shrink-wrapping height', () {
    RenderBox child = new RenderTestBox(new BoxConstraints(minWidth: 10.0, maxWidth: 100.0, minHeight: 20.0, maxHeight: 200.0));

52
    RenderBox parent = new RenderIntrinsicHeight(child: child);
Hixie's avatar
Hixie committed
53 54 55 56 57 58 59 60 61 62
    layout(parent,
          constraints: new BoxConstraints(
              minWidth: 5.0,
              minHeight: 8.0,
              maxWidth: 500.0,
              maxHeight: 800.0));
    expect(parent.size.width, equals(55.0));
    expect(parent.size.height, equals(200.0));
  });
}