/*
* Copyright (c) 2013, the Dart project authors.
*
* Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except
* in compliance with the License. You may obtain a copy of the License at
*
* http://www.eclipse.org/legal/epl-v10.html
*
* Unless required by applicable law or agreed to in writing, software distributed under the License
* is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
* or implied. See the License for the specific language governing permissions and limitations under
* the License.
*/
package com.google.dart.tools.core.internal.analysis.model;
import com.google.dart.engine.context.AnalysisContext;
import com.google.dart.engine.sdk.DartSdk;
import com.google.dart.engine.sdk.DirectoryBasedDartSdk;
import com.google.dart.tools.core.AbstractDartCoreTest;
import com.google.dart.tools.core.analysis.model.ContextManager;
import com.google.dart.tools.core.internal.builder.AnalysisWorker;
import com.google.dart.tools.core.internal.builder.MockContext;
public abstract class ContextManagerImplTest extends AbstractDartCoreTest {
private class MockWorker extends AnalysisWorker {
private boolean stopped = false;
public MockWorker(ContextManager contextManager, AnalysisContext context) {
super(contextManager, context);
}
public void assertStopped(boolean expected) {
assertEquals(expected, stopped);
}
@Override
public void stop() {
stopped = true;
super.stop();
}
}
protected DartSdk sdk;
protected String sdkContextId;
public void test_getSdk() throws Exception {
ContextManager manager = newTarget();
DartSdk actual = manager.getSdk();
assertNotNull(actual);
assertSame(sdk, actual);
}
public void test_getSdkContext() throws Exception {
ContextManager manager = newTarget();
AnalysisContext actual = manager.getSdkContext();
assertNotNull(actual);
assertSame(sdk.getContext(), actual);
}
public void test_stopWorkers() throws Exception {
ContextManager manager = newTarget();
MockContext context1 = new MockContext();
MockContext context2 = new MockContext();
assertEquals(0, manager.getWorkers().length);
MockWorker worker1 = new MockWorker(manager, context1);
MockWorker worker2 = new MockWorker(manager, context2);
MockWorker worker3 = new MockWorker(manager, context1);
assertEquals(3, manager.getWorkers().length);
manager.removeWorker(worker3);
assertEquals(2, manager.getWorkers().length);
worker1.assertStopped(false);
worker2.assertStopped(false);
worker3.assertStopped(false);
manager.stopWorkers(context1);
worker1.assertStopped(true);
worker2.assertStopped(false);
worker3.assertStopped(false);
assertEquals(1, manager.getWorkers().length);
}
protected abstract ContextManager newTarget();
@Override
protected void setUp() throws Exception {
sdk = DirectoryBasedDartSdk.getDefaultSdk();
}
}