// Copyright 2014 The Flutter 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:flutter_test/flutter_test.dart'; import 'rendering_tester.dart'; void main() { TestRenderingFlutterBinding.ensureInitialized(); test('RenderFractionallySizedBox constraints', () { RenderBox root, leaf, test; root = RenderPositionedBox( child: RenderConstrainedBox( additionalConstraints: BoxConstraints.tight(const Size(200.0, 200.0)), child: test = RenderFractionallySizedOverflowBox( widthFactor: 2.0, heightFactor: 0.5, child: leaf = RenderConstrainedBox( additionalConstraints: const BoxConstraints.expand(), ), ), ), ); layout(root); expect(root.size.width, equals(800.0)); expect(root.size.height, equals(600.0)); expect(test.size.width, equals(200.0)); expect(test.size.height, equals(200.0)); expect(leaf.size.width, equals(400.0)); expect(leaf.size.height, equals(100.0)); }); test('BoxConstraints with NaN', () { String result; result = 'no exception'; try { const BoxConstraints constraints = BoxConstraints(minWidth: double.nan, maxWidth: double.nan, minHeight: 2.0, maxHeight: double.nan); assert(constraints.debugAssertIsValid()); } on FlutterError catch (e) { result = '$e'; } expect(result, equals( 'BoxConstraints has NaN values in minWidth, maxWidth, and maxHeight.\n' 'The offending constraints were:\n' ' BoxConstraints(NaN<=w<=NaN, 2.0<=h<=NaN; NOT NORMALIZED)', )); result = 'no exception'; try { const BoxConstraints constraints = BoxConstraints(minHeight: double.nan); assert(constraints.debugAssertIsValid()); } on FlutterError catch (e) { result = '$e'; } expect(result, equals( 'BoxConstraints has a NaN value in minHeight.\n' 'The offending constraints were:\n' ' BoxConstraints(0.0<=w<=Infinity, NaN<=h<=Infinity; NOT NORMALIZED)', )); result = 'no exception'; try { const BoxConstraints constraints = BoxConstraints(minHeight: double.nan, maxWidth: 0.0/0.0); assert(constraints.debugAssertIsValid()); } on FlutterError catch (e) { result = '$e'; } expect(result, equals( 'BoxConstraints has NaN values in maxWidth and minHeight.\n' 'The offending constraints were:\n' ' BoxConstraints(0.0<=w<=NaN, NaN<=h<=Infinity; NOT NORMALIZED)', )); }); }