/* * 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.engine.services.util; import com.google.dart.engine.services.completion.CompletionProposal; import com.google.dart.engine.services.completion.CompletionRequestor; import com.google.dart.engine.services.completion.CompletionTests; import static junit.framework.Assert.fail; import java.util.Collection; import java.util.HashSet; public class MockCompletionRequestor implements CompletionRequestor { private int state = 0; private int exceptionCount = 0; private long resolveLibraryTime = 0; Collection<String> suggestions = new HashSet<String>(); @Override public void accept(CompletionProposal proposal) { CompletionTests.assertEquals("Expected accept to be called after beginReporting", 1, state); String suggestion = proposal.getCompletion(); suggestions.add(suggestion); suggestions.add(suggestion + ":" + proposal.getKind()); suggestions.add(suggestion + ",rel=" + proposal.getRelevance()); suggestions.add(suggestion + ",potential=" + proposal.isPotentialMatch() + ",declaringType=" + proposal.getDeclaringType()); } /** * Assert that the receiver does NOT contain the specified suggestion */ public void assertNotSuggested(String suggestion, char testId) { if (suggestions.contains(suggestion)) { CompletionTests.fail("Test " + testId + " invalid suggestion: " + suggestion); } } /** * Assert that the receiver contains the specified suggestion */ public void assertSuggested(String suggestion, char testId) { if (!suggestions.contains(suggestion)) { CompletionTests.fail("Test " + testId + " expected suggestion: " + suggestion); } } @Override public void beginReporting() { CompletionTests.assertEquals("Expected beginReporting to be called first", 0, state++); } // @Override // public void completionFailure(Problem problem) { // CompletionEngineTest.assertEquals( // "Expected completionFailure to be called after acceptContext", // 2, // state); // super.completionFailure(problem); // } @Override public void endReporting() { CompletionTests.assertEquals( "Expected endReporting to be called after beginReporting", 1, state++); } public int getExceptionCount() { return exceptionCount; } public long getResolveLibraryTime() { return resolveLibraryTime; } /** * Validate the requestor content * * @return <code>true</code> if suggestions were generated, or <code>false</code> none */ public boolean validate() { if (state == 2) { return suggestions.size() > 0; } if (exceptionCount > 0) { return false; } fail("Expected endReporting to have been called (current state = " + state + ")"); return false; } }