slivers_helpers_test.dart 3.38 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
// 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:flutter_test/flutter_test.dart';

void main() {
  test('AxisDirection and applyGrowthDirectionToAxisDirection', () {
    expect(AxisDirection.values.length, 4);
    for (AxisDirection axisDirection in AxisDirection.values)
      expect(applyGrowthDirectionToAxisDirection(axisDirection, GrowthDirection.forward), axisDirection);
    expect(applyGrowthDirectionToAxisDirection(AxisDirection.up, GrowthDirection.reverse), AxisDirection.down);
    expect(applyGrowthDirectionToAxisDirection(AxisDirection.down, GrowthDirection.reverse), AxisDirection.up);
    expect(applyGrowthDirectionToAxisDirection(AxisDirection.left, GrowthDirection.reverse), AxisDirection.right);
    expect(applyGrowthDirectionToAxisDirection(AxisDirection.right, GrowthDirection.reverse), AxisDirection.left);
  });

  test('SliverConstraints', () {
20
    final SliverConstraints a = const SliverConstraints(
21 22 23 24 25 26 27
      axisDirection: AxisDirection.down,
      growthDirection: GrowthDirection.forward,
      userScrollDirection: ScrollDirection.idle,
      scrollOffset: 0.0,
      overlap: 0.0,
      remainingPaintExtent: 0.0,
      crossAxisExtent: 0.0,
28
      crossAxisDirection: AxisDirection.right,
29
      viewportMainAxisExtent: 0.0,
30
    );
31
    final SliverConstraints b = a.copyWith();
32 33 34 35 36 37
    expect(a, equals(b));
    expect(a.hashCode, equals(b.hashCode));
    expect(a.toString(), equals(b.toString()));
    expect(a, hasOneLineDescription);
    expect(a.normalizedGrowthDirection, equals(GrowthDirection.forward));

38
    final SliverConstraints c = a.copyWith(
39 40 41 42 43 44 45
      axisDirection: AxisDirection.up,
      growthDirection: GrowthDirection.reverse,
      userScrollDirection: ScrollDirection.forward,
      scrollOffset: 10.0,
      overlap: 20.0,
      remainingPaintExtent: 30.0,
      crossAxisExtent: 40.0,
46
      viewportMainAxisExtent: 30.0,
47
    );
48
    final SliverConstraints d = const SliverConstraints(
49 50 51 52 53 54 55
      axisDirection: AxisDirection.up,
      growthDirection: GrowthDirection.reverse,
      userScrollDirection: ScrollDirection.forward,
      scrollOffset: 10.0,
      overlap: 20.0,
      remainingPaintExtent: 30.0,
      crossAxisExtent: 40.0,
56
      crossAxisDirection: AxisDirection.right,
57
      viewportMainAxisExtent: 30.0,
58 59 60 61 62
    );
    expect(c, equals(d));
    expect(c.normalizedGrowthDirection, equals(GrowthDirection.forward));
    expect(d.normalizedGrowthDirection, equals(GrowthDirection.forward));

63
    final SliverConstraints e = d.copyWith(axisDirection: AxisDirection.right);
64 65
    expect(e.normalizedGrowthDirection, equals(GrowthDirection.reverse));

66
    final SliverConstraints f = d.copyWith(axisDirection: AxisDirection.left);
67 68
    expect(f.normalizedGrowthDirection, equals(GrowthDirection.forward));

69
    final SliverConstraints g = d.copyWith(growthDirection: GrowthDirection.forward);
70 71 72 73
    expect(g.normalizedGrowthDirection, equals(GrowthDirection.reverse));
  });

  test('SliverGeometry', () {
74
    expect(const SliverGeometry().debugAssertIsValid(), isTrue);
75
    expect(() {
76
      const SliverGeometry(layoutExtent: 10.0, paintExtent: 9.0).debugAssertIsValid();
77 78
    }, throwsFlutterError);
    expect(() {
79
      const SliverGeometry(paintExtent: 9.0, maxPaintExtent: 8.0).debugAssertIsValid();
80 81 82
    }, throwsFlutterError);
  });
}