// 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:collection/collection.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:gallery/data/demos.dart'; import 'package:gallery/gallery_localizations_en.dart'; bool _isUnique(List list) { final Set covered = {}; for (final String element in list) { if (covered.contains(element)) { return false; } else { covered.add(element); } } return true; } const ListEquality _stringListEquality = ListEquality(); void main() { test('_isUnique works correctly', () { expect(_isUnique(['a', 'b', 'c']), true); expect(_isUnique(['a', 'c', 'a', 'b']), false); expect(_isUnique(['a']), true); expect(_isUnique([]), true); }); test('Demo descriptions are unique and correct', () { final List allDemos = Demos.all(GalleryLocalizationsEn()); final List allDemoDescriptions = allDemos.map((GalleryDemo d) => d.describe).toList(); expect(_isUnique(allDemoDescriptions), true); expect(_stringListEquality.equals(allDemoDescriptions, Demos.allDescriptions()), true); }); test('Special demo descriptions are correct', () { final List allDemos = Demos.allDescriptions(); final List specialDemos = [ 'shrine@study', 'rally@study', 'crane@study', 'fortnightly@study', 'bottom-navigation@material', 'button@material', 'card@material', 'chip@material', 'dialog@material', 'pickers@material', 'cupertino-alerts@cupertino', 'colors@other', 'progress-indicator@material', 'cupertino-activity-indicator@cupertino', 'colors@other', ]; for (final String specialDemo in specialDemos) { expect(allDemos.contains(specialDemo), true); } }); }