/*
* 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.status;
import com.google.dart.engine.services.internal.correction.AbstractDartTest;
import static org.fest.assertions.Assertions.assertThat;
import static org.mockito.Mockito.mock;
import java.util.List;
public class RefactoringStatusTest extends AbstractDartTest {
public void test_addError() throws Exception {
RefactoringStatus refactoringStatus = new RefactoringStatus();
// initial state
assertSame(RefactoringStatusSeverity.OK, refactoringStatus.getSeverity());
// add ERROR
refactoringStatus.addError("msg");
assertSame(RefactoringStatusSeverity.ERROR, refactoringStatus.getSeverity());
assertFalse(refactoringStatus.isOK());
assertFalse(refactoringStatus.hasFatalError());
assertTrue(refactoringStatus.hasError());
assertTrue(refactoringStatus.hasWarning());
assertTrue(refactoringStatus.hasInfo());
// entries
List<RefactoringStatusEntry> entries = refactoringStatus.getEntries();
assertThat(entries).hasSize(1);
assertEquals("msg", entries.get(0).getMessage());
// toString()
assertEquals("<ERROR\n\tERROR: msg\n>", refactoringStatus.toString());
}
public void test_addFatalError_withContext() throws Exception {
RefactoringStatusContext context = mock(RefactoringStatusContext.class);
RefactoringStatus refactoringStatus = new RefactoringStatus();
// add FATAL
refactoringStatus.addFatalError("fatal-msg", context);
assertFalse(refactoringStatus.isOK());
assertTrue(refactoringStatus.hasFatalError());
assertTrue(refactoringStatus.hasError());
assertTrue(refactoringStatus.hasWarning());
assertTrue(refactoringStatus.hasInfo());
// toString()
{
String str = refactoringStatus.toString();
assertThat(str).startsWith(
"<FATAL\n\tFATAL: fatal-msg; Context: Mock for RefactoringStatusContext");
}
// add WARNING, resulting severity is still FATAL
refactoringStatus.addWarning("warning");
assertTrue(refactoringStatus.hasFatalError());
}
public void test_addFatalError_withoutContext() throws Exception {
RefactoringStatus refactoringStatus = new RefactoringStatus();
// add FATAL
refactoringStatus.addFatalError("fatal-msg");
assertFalse(refactoringStatus.isOK());
assertTrue(refactoringStatus.hasFatalError());
assertTrue(refactoringStatus.hasError());
assertTrue(refactoringStatus.hasWarning());
assertTrue(refactoringStatus.hasInfo());
// toString()
assertEquals("<FATAL\n\tFATAL: fatal-msg\n>", refactoringStatus.toString());
}
public void test_addWarning() throws Exception {
RefactoringStatus refactoringStatus = new RefactoringStatus();
// add WARNING
refactoringStatus.addWarning("msg");
assertFalse(refactoringStatus.isOK());
assertFalse(refactoringStatus.hasFatalError());
assertFalse(refactoringStatus.hasError());
assertTrue(refactoringStatus.hasWarning());
assertTrue(refactoringStatus.hasInfo());
// toString()
assertEquals("<WARNING\n\tWARNING: msg\n>", refactoringStatus.toString());
}
public void test_createErrorStatus() throws Exception {
RefactoringStatus refactoringStatus = RefactoringStatus.createErrorStatus("error-msg");
assertTrue(refactoringStatus.hasError());
assertEquals("error-msg", refactoringStatus.getMessage());
}
public void test_createFatalErrorStatus() throws Exception {
RefactoringStatus refactoringStatus = RefactoringStatus.createFatalErrorStatus("fatal-msg");
assertTrue(refactoringStatus.hasFatalError());
assertEquals("fatal-msg", refactoringStatus.getMessage());
}
public void test_createFatalErrorStatus_withContext() throws Exception {
RefactoringStatusContext context = mock(RefactoringStatusContext.class);
RefactoringStatus refactoringStatus = RefactoringStatus.createFatalErrorStatus(
"fatal-msg",
context);
assertTrue(refactoringStatus.hasFatalError());
assertEquals("fatal-msg", refactoringStatus.getMessage());
assertSame(context, refactoringStatus.getEntries().get(0).getContext());
}
public void test_createWarningStatus() throws Exception {
RefactoringStatus refactoringStatus = RefactoringStatus.createWarningStatus("warning-msg");
assertTrue(refactoringStatus.hasWarning());
assertEquals("warning-msg", refactoringStatus.getMessage());
}
public void test_escalateErrorToFatal() throws Exception {
RefactoringStatus refactoringStatus = new RefactoringStatus();
refactoringStatus.addError("msg");
// status
assertSame(RefactoringStatusSeverity.ERROR, refactoringStatus.getSeverity());
// escalated
RefactoringStatus escalated = refactoringStatus.escalateErrorToFatal();
assertSame(RefactoringStatusSeverity.FATAL, escalated.getSeverity());
assertEquals("<FATAL\n\tFATAL: msg\n>", escalated.toString());
}
public void test_getEntryWithHighestSeverity() throws Exception {
RefactoringStatus refactoringStatus = new RefactoringStatus();
// no entries
assertSame(null, refactoringStatus.getEntryWithHighestSeverity());
assertSame(null, refactoringStatus.getMessage());
// add entries
refactoringStatus.addError("msgError");
refactoringStatus.addWarning("msgWarning");
refactoringStatus.addFatalError("msgFatalError");
// get entry
{
RefactoringStatusEntry entry = refactoringStatus.getEntryWithHighestSeverity();
assertSame(RefactoringStatusSeverity.FATAL, entry.getSeverity());
assertEquals("msgFatalError", entry.getMessage());
}
// get message
assertEquals("msgFatalError", refactoringStatus.getMessage());
}
public void test_merge_Error_withWarning() throws Exception {
RefactoringStatus refactoringStatus = new RefactoringStatus();
refactoringStatus.addError("err");
assertSame(RefactoringStatusSeverity.ERROR, refactoringStatus.getSeverity());
// merge with OK
{
RefactoringStatus other = new RefactoringStatus();
other.addWarning("warn");
refactoringStatus.merge(other);
}
assertSame(RefactoringStatusSeverity.ERROR, refactoringStatus.getSeverity());
}
public void test_merge_Warning_null() throws Exception {
RefactoringStatus refactoringStatus = new RefactoringStatus();
refactoringStatus.addWarning("warn");
assertSame(RefactoringStatusSeverity.WARNING, refactoringStatus.getSeverity());
// merge with "null"
refactoringStatus.merge(null);
assertSame(RefactoringStatusSeverity.WARNING, refactoringStatus.getSeverity());
}
public void test_merge_Warning_withError() throws Exception {
RefactoringStatus refactoringStatus = new RefactoringStatus();
refactoringStatus.addWarning("warn");
assertSame(RefactoringStatusSeverity.WARNING, refactoringStatus.getSeverity());
// merge with ERROR
{
RefactoringStatus other = new RefactoringStatus();
other.addError("err");
refactoringStatus.merge(other);
}
assertSame(RefactoringStatusSeverity.ERROR, refactoringStatus.getSeverity());
}
public void test_new() throws Exception {
RefactoringStatus refactoringStatus = new RefactoringStatus();
// OK initially
assertTrue(refactoringStatus.isOK());
assertFalse(refactoringStatus.hasFatalError());
assertFalse(refactoringStatus.hasError());
assertFalse(refactoringStatus.hasWarning());
assertFalse(refactoringStatus.hasInfo());
// toString()
assertEquals("<OK>", refactoringStatus.toString());
}
}