blob: 2a386151ab02b8a0068c0814411aea5b4e8e0fd6 [file] [log] [blame]
// Copyright (c) 2017, 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:analyzer_plugin/protocol/protocol_generated.dart';
import 'package:analyzer_plugin/utilities/subscriptions/subscription_manager.dart';
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
void main() {
defineReflectiveTests(SubscriptionManagerTest);
}
@reflectiveTest
class SubscriptionManagerTest {
SubscriptionManager manager = SubscriptionManager();
String fooPath = '/project/lib/foo.dart';
String barPath = '/project/lib/bar.dart';
String bazPath = '/project/lib/baz.dart';
void test_hasSubscriptionForFile_differentSubscription() {
manager.setSubscriptions({
AnalysisService.NAVIGATION: [barPath],
});
expect(
manager.hasSubscriptionForFile(fooPath, AnalysisService.HIGHLIGHTS),
isFalse,
);
}
void test_hasSubscriptionForFile_hasSubscription() {
manager.setSubscriptions({
AnalysisService.HIGHLIGHTS: [fooPath],
});
expect(
manager.hasSubscriptionForFile(fooPath, AnalysisService.HIGHLIGHTS),
isTrue,
);
}
void test_hasSubscriptionForFile_noSubscription() {
expect(
manager.hasSubscriptionForFile(fooPath, AnalysisService.HIGHLIGHTS),
isFalse,
);
}
void test_servicesForFile() {
expect(manager.servicesForFile('/project/lib/test.dart'), hasLength(0));
}
void test_setSubscriptions() {
//
// Set the initial set of subscriptions.
//
var newSubscriptions = manager.setSubscriptions({
AnalysisService.HIGHLIGHTS: [fooPath, barPath],
AnalysisService.NAVIGATION: [fooPath],
});
expect(
manager.servicesForFile(fooPath),
unorderedEquals([AnalysisService.HIGHLIGHTS, AnalysisService.NAVIGATION]),
);
expect(
manager.servicesForFile(barPath),
unorderedEquals([AnalysisService.HIGHLIGHTS]),
);
expect(manager.servicesForFile(bazPath), hasLength(0));
expect(
newSubscriptions[fooPath],
unorderedEquals([AnalysisService.HIGHLIGHTS, AnalysisService.NAVIGATION]),
);
expect(
newSubscriptions[barPath],
unorderedEquals([AnalysisService.HIGHLIGHTS]),
);
//
// Update the subscriptions.
//
newSubscriptions = manager.setSubscriptions({
AnalysisService.HIGHLIGHTS: [bazPath, barPath],
AnalysisService.NAVIGATION: [barPath],
});
expect(manager.servicesForFile(fooPath), hasLength(0));
expect(
manager.servicesForFile(barPath),
unorderedEquals([AnalysisService.HIGHLIGHTS, AnalysisService.NAVIGATION]),
);
expect(
manager.servicesForFile(bazPath),
unorderedEquals([AnalysisService.HIGHLIGHTS]),
);
expect(
newSubscriptions[barPath],
unorderedEquals([AnalysisService.NAVIGATION]),
);
expect(
newSubscriptions[bazPath],
unorderedEquals([AnalysisService.HIGHLIGHTS]),
);
}
}