// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
// for details. 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:test_reflective_loader/test_reflective_loader.dart';

import 'get_errors_test.dart' as get_errors_test;
import 'get_hover_test.dart' as get_hover_test;
import 'get_navigation_test.dart' as get_navigation_test;
import 'get_signature_test.dart' as get_signature_information_test;
import 'notification_analysis_options_test.dart'
    as notification_analysis_options_test;
import 'notification_analyzedFiles_test.dart'
    as notification_analyzedFiles_test;
import 'notification_closingLabels_test.dart'
    as notification_closingLabels_test;
import 'notification_errors_test.dart' as notification_errors_test;
import 'notification_folding_test.dart' as notification_folding_test;
import 'notification_highlights2_test.dart' as notification_highlights2_test;
import 'notification_highlights_test.dart' as notification_highlights_test;
import 'notification_implemented_test.dart' as notification_implemented_test;
import 'notification_navigation_test.dart' as notification_navigation_test;
import 'notification_occurrences_test.dart' as notification_occurrences_test;
import 'notification_outline_test.dart' as notification_outline_test;
import 'notification_overrides_test.dart' as notification_overrides_test;
import 'reanalyze_test.dart' as reanalyze_test;
import 'set_priority_files_test.dart' as set_priority_files_test;
import 'update_content_test.dart' as update_content_test;

/**
 * Utility for manually running all tests.
 */
main() {
  defineReflectiveSuite(() {
    get_errors_test.main();
    get_hover_test.main();
    get_navigation_test.main();
    get_signature_information_test.main();
    notification_analysis_options_test.main();
    notification_analyzedFiles_test.main();
    notification_closingLabels_test.main();
    notification_folding_test.main();
    notification_errors_test.main();
    notification_highlights2_test.main();
    notification_highlights_test.main();
    notification_implemented_test.main();
    notification_navigation_test.main();
    notification_occurrences_test.main();
    notification_outline_test.main();
    notification_overrides_test.main();
    reanalyze_test.main();
    set_priority_files_test.main();
    update_content_test.main();
  }, name: 'analysis');
}
