mirror of https://github.com/flutter/samples.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
194 lines
5.9 KiB
194 lines
5.9 KiB
// Copyright 2018 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/material.dart';
|
|
import 'package:flutter_test/flutter_test.dart';
|
|
import 'package:jsonexample/dart_convert/converted_complex_object.dart';
|
|
import 'package:jsonexample/dart_convert/converted_simple_object.dart';
|
|
import 'package:jsonexample/widgets.dart';
|
|
|
|
void main() {
|
|
group('SimpleObjectView widget test', () {
|
|
testWidgets('Typical object is displayed correctly', (tester) async {
|
|
const simpleObject = ConvertedSimpleObject(
|
|
aString: 'Blah, blah, blah',
|
|
anInt: 1,
|
|
aDouble: 1.0,
|
|
aListOfStrings: ['one', 'two', 'three'],
|
|
aListOfInts: [1, 2, 3],
|
|
aListOfDoubles: [1.0, 2.0, 3.0],
|
|
);
|
|
|
|
await tester.pumpWidget(
|
|
const MaterialApp(
|
|
home: SimpleObjectView(simpleObject),
|
|
),
|
|
);
|
|
|
|
expect(find.text('"Blah, blah, blah"'), findsOneWidget);
|
|
expect(find.text('1'), findsOneWidget);
|
|
expect(find.text('1.0'), findsOneWidget);
|
|
expect(find.text('["one", "two", "three"]'), findsOneWidget);
|
|
expect(find.text('[1, 2, 3]'), findsOneWidget);
|
|
expect(find.text('[1.0, 2.0, 3.0]'), findsOneWidget);
|
|
});
|
|
|
|
testWidgets('Empty lists are displayed as brackets', (tester) async {
|
|
const simpleObject = ConvertedSimpleObject(
|
|
aString: 'Blah, blah, blah',
|
|
anInt: 1,
|
|
aDouble: 1.0,
|
|
aListOfStrings: [],
|
|
aListOfInts: [],
|
|
aListOfDoubles: [],
|
|
);
|
|
|
|
await tester.pumpWidget(
|
|
const MaterialApp(
|
|
home: SimpleObjectView(simpleObject),
|
|
),
|
|
);
|
|
|
|
expect(find.text('[]'), findsNWidgets(3));
|
|
});
|
|
|
|
testWidgets('Null values are displayed as NULL', (tester) async {
|
|
const simpleObject = ConvertedSimpleObject(
|
|
aString: null,
|
|
anInt: null,
|
|
aDouble: null,
|
|
aListOfStrings: null,
|
|
aListOfInts: null,
|
|
aListOfDoubles: null,
|
|
);
|
|
|
|
await tester.pumpWidget(
|
|
const MaterialApp(
|
|
home: SimpleObjectView(simpleObject),
|
|
),
|
|
);
|
|
|
|
expect(find.text('NULL'), findsNWidgets(6));
|
|
});
|
|
});
|
|
|
|
group('ComplexObjectView widget test', () {
|
|
testWidgets('Typical object is displayed correctly', (tester) async {
|
|
const complexObject = ConvertedComplexObject(
|
|
aString: 'Blah, blah, blah',
|
|
anInt: 1,
|
|
aDouble: 1.0,
|
|
aListOfStrings: ['one', 'two', 'three'],
|
|
aListOfInts: [1, 2, 3],
|
|
aListOfDoubles: [1.0, 2.0, 3.0],
|
|
anObject: ConvertedSimpleObject(
|
|
aString: 'Child 1',
|
|
anInt: 101,
|
|
aDouble: 101.0,
|
|
aListOfStrings: ['1011', '1012', '1013'],
|
|
aListOfInts: [1011, 1012, 1013],
|
|
aListOfDoubles: [1011.0, 1012.0, 1013.0],
|
|
),
|
|
aListOfObjects: [
|
|
ConvertedSimpleObject(
|
|
aString: 'Child 2',
|
|
anInt: 102,
|
|
aDouble: 102.0,
|
|
aListOfStrings: ['1021', '1022', '1023'],
|
|
aListOfInts: [1021, 1022, 1023],
|
|
aListOfDoubles: [1021.0, 1022.0, 1023.0],
|
|
),
|
|
ConvertedSimpleObject(
|
|
aString: 'Child 3',
|
|
anInt: 103,
|
|
aDouble: 103.0,
|
|
aListOfStrings: ['1031', '1032', '1033'],
|
|
aListOfInts: [1031, 1032, 1033],
|
|
aListOfDoubles: [1031.0, 1032.0, 1033.0],
|
|
),
|
|
ConvertedSimpleObject(
|
|
aString: 'Child 4',
|
|
anInt: 104,
|
|
aDouble: 104.0,
|
|
aListOfStrings: ['1041', '1042', '1043'],
|
|
aListOfInts: [1041, 1042, 1043],
|
|
aListOfDoubles: [1041.0, 1042.0, 1043.0],
|
|
),
|
|
],
|
|
);
|
|
|
|
await tester.pumpWidget(
|
|
const MaterialApp(
|
|
home: ComplexObjectView(complexObject),
|
|
),
|
|
);
|
|
|
|
expect(find.text('"Blah, blah, blah"'), findsOneWidget);
|
|
expect(find.text('1'), findsOneWidget);
|
|
expect(find.text('1.0'), findsOneWidget);
|
|
expect(find.text('["one", "two", "three"]'), findsOneWidget);
|
|
expect(find.text('[1, 2, 3]'), findsOneWidget);
|
|
expect(find.text('[1.0, 2.0, 3.0]'), findsOneWidget);
|
|
|
|
for (var i = 1; i <= 4; i++) {
|
|
expect(find.text('"Child $i"'), findsOneWidget);
|
|
expect(find.text('10$i'), findsOneWidget);
|
|
expect(find.text('10$i.0'), findsOneWidget);
|
|
expect(find.text('["10${i}1", "10${i}2", "10${i}3"]'), findsOneWidget);
|
|
expect(find.text('[10${i}1, 10${i}2, 10${i}3]'), findsOneWidget);
|
|
expect(find.text('[10${i}1.0, 10${i}2.0, 10${i}3.0]'), findsOneWidget);
|
|
}
|
|
});
|
|
|
|
testWidgets('Empty lists are displayed as brackets', (tester) async {
|
|
const complexObject = ConvertedComplexObject(
|
|
aString: 'Blah, blah, blah',
|
|
anInt: 1,
|
|
aDouble: 1.0,
|
|
aListOfStrings: [],
|
|
aListOfInts: [],
|
|
aListOfDoubles: [],
|
|
anObject: ConvertedSimpleObject(
|
|
aString: 'Child 1',
|
|
anInt: 101,
|
|
aDouble: 101.0,
|
|
aListOfStrings: ['1011', '1012', '1013'],
|
|
aListOfInts: [1011, 1012, 1013],
|
|
aListOfDoubles: [1011.0, 1012.0, 1013.0],
|
|
),
|
|
aListOfObjects: [],
|
|
);
|
|
|
|
await tester.pumpWidget(
|
|
const MaterialApp(
|
|
home: ComplexObjectView(complexObject),
|
|
),
|
|
);
|
|
|
|
expect(find.text('[]'), findsNWidgets(4));
|
|
});
|
|
|
|
testWidgets('Null values are displayed as NULL', (tester) async {
|
|
const complexObject = ConvertedComplexObject(
|
|
aString: null,
|
|
anInt: null,
|
|
aDouble: null,
|
|
aListOfStrings: null,
|
|
aListOfInts: null,
|
|
aListOfDoubles: null,
|
|
anObject: null,
|
|
aListOfObjects: null,
|
|
);
|
|
|
|
await tester.pumpWidget(
|
|
const MaterialApp(
|
|
home: ComplexObjectView(complexObject),
|
|
),
|
|
);
|
|
|
|
expect(find.text('NULL'), findsNWidgets(8));
|
|
});
|
|
});
|
|
}
|