package com.jetbrains.lang.dart.workflow;
import com.intellij.openapi.util.Pair;
import com.intellij.openapi.util.TextRange;
import com.jetbrains.lang.dart.ide.runner.server.vmService.frame.DartVmServiceEvaluator;
import com.jetbrains.lang.dart.util.DartPsiImplUtil;
import junit.framework.TestCase;
import org.jetbrains.annotations.NotNull;
public class DartSimpleTest extends TestCase {
private static void doTestUnquoteDartString(@NotNull final String inputString,
@NotNull final String expectedUnquoted,
final int expectedStartOffset,
final int expectedEndOffset) {
final Pair<String, TextRange> result = DartPsiImplUtil.getUnquotedDartStringAndItsRange(inputString);
assertEquals(expectedUnquoted, result.first);
assertEquals(expectedStartOffset, result.second.getStartOffset());
assertEquals(expectedEndOffset, result.second.getEndOffset());
}
private static void doTestDebuggerErrorText(@NotNull final String rawErrorText, @NotNull final String expected) {
assertEquals(expected, DartVmServiceEvaluator.getPresentableError(rawErrorText));
}
public void testUnquoteDartString() throws Exception {
doTestUnquoteDartString("", "", 0, 0); // not valid string
doTestUnquoteDartString("r", "r", 0, 1); // not valid string
doTestUnquoteDartString("rr'", "rr'", 0, 3); // not valid string
doTestUnquoteDartString("x'", "x'", 0, 2); // not valid string
doTestUnquoteDartString("x\"", "x\"", 0, 2); // not valid string
doTestUnquoteDartString("r'", "", 2, 2); // not closed string
doTestUnquoteDartString("r\"", "", 2, 2); // not closed string
doTestUnquoteDartString("r'''", "", 4, 4); // not closed string
doTestUnquoteDartString("r\"\"\"", "", 4, 4); // not closed string
doTestUnquoteDartString("r'''''", "''", 4, 6); // not closed string
doTestUnquoteDartString("r\"\"\"\"", "\"", 4, 5); // not closed string
doTestUnquoteDartString("'''", "", 3, 3); // not closed string
doTestUnquoteDartString("\"\"\"", "", 3, 3); // not closed string
doTestUnquoteDartString("'''''", "''", 3, 5); // not closed string
doTestUnquoteDartString("\"\"\"\"", "\"", 3, 4); // not closed string
doTestUnquoteDartString("'", "", 1, 1); // not closed string
doTestUnquoteDartString("\"", "", 1, 1); // not closed string
doTestUnquoteDartString("'a", "a", 1, 2); // not closed string
doTestUnquoteDartString("\"a", "a", 1, 2); // not closed string
doTestUnquoteDartString("r'", "", 2, 2); // not closed string
doTestUnquoteDartString("r\"", "", 2, 2); // not closed string
doTestUnquoteDartString("r'a", "a", 2, 3); // not closed string
doTestUnquoteDartString("r\"a", "a", 2, 3); // not closed string
doTestUnquoteDartString("''", "", 1, 1);
doTestUnquoteDartString("\"\"", "", 1, 1);
doTestUnquoteDartString("''''''", "", 3, 3);
doTestUnquoteDartString("\"\"\"\"\"\"", "", 3, 3);
doTestUnquoteDartString("r''", "", 2, 2);
doTestUnquoteDartString("r\"\"", "", 2, 2);
doTestUnquoteDartString("r''''''", "", 4, 4);
doTestUnquoteDartString("r\"\"\"\"\"\"", "", 4, 4);
doTestUnquoteDartString("r'''a'''", "a", 4, 5);
doTestUnquoteDartString("r\"\"\"a\"\"\"", "a", 4, 5);
doTestUnquoteDartString("r'a'", "a", 2, 3);
doTestUnquoteDartString("r\"a\"", "a", 2, 3);
doTestUnquoteDartString("'''a'''", "a", 3, 4);
doTestUnquoteDartString("\"\"\"a\"\"\"", "a", 3, 4);
doTestUnquoteDartString("'abc'", "abc", 1, 4);
doTestUnquoteDartString("\"abc\"", "abc", 1, 4);
}
public void testDebuggerErrorText() throws Exception {
doTestDebuggerErrorText("", "Cannot evaluate");
doTestDebuggerErrorText("Error:", "Cannot evaluate");
doTestDebuggerErrorText("a\nb\nc", "Cannot evaluate");
doTestDebuggerErrorText("Error: '': error: line 1 pos 9: receiver 'this' is not in scope\n() => 1+this.foo();",
"receiver 'this' is not in scope");
doTestDebuggerErrorText("Error: Unhandled exception:\n\nNo top-level getter 'foo' declared.\n\n" +
"NoSuchMethodError: method not found: 'foo'",
"No top-level getter 'foo' declared.");
doTestDebuggerErrorText("Unhandled exception:\n\nNo top-level getter 'foo' declared.\n\n" +
"NoSuchMethodError: method not found: 'foo'",
"No top-level getter 'foo' declared.");
}
}