$engine JScript
$uname testTextWindow_GetStringUnderCursor
$dname Тесты для метода TextWindow::GetStringUnderCursor
$addin global
$addin stdcommands
$addin stdlib
stdlib.require('jsUnitCore.js', SelfScript);
var TWW = stdlib.require('TextWindow.js');
/*** Текст для тестирования.
МояСтрока = "Однострочный текст";
А = 1 + 2;
МояМультистрока = "Первая строка
|Вторая строка
|Третья строка";
СтрокаСКавычками = "Это ""строковый"" литерал";
ПустаяСтрока = "";
ТекстЗапроса = "ВЫБРАТЬ
|ПОДСТРОКА(""Строчка"", 1, 1) КАК Символ;
|";
С1="Строка слева"; С2="Строка справа"
*/
var text =
"МояСтрока = \"Однострочный текст\";\n"
+ "А = 1 + 2;\n"
+ "МояМультистрока = \"Первая строка\n"
+ " |Вторая строка\n"
+ " |Третья строка\";\n"
+ "СтрокаСКавычками = \"Это \"\"строковый\"\" литерал\";\n"
+ "ПустаяСтрока = \"\";\n"
+ "ТекстЗапроса = \"ВЫБРАТЬ \n"
+ " |ПОДСТРОКА(\"\"Строчка\"\", 1, 1) КАК Символ;\n"
+ " |\";\n"
+ "С1=\"Строка слева\"; С2=\"Строка справа\"\n";
var textDoc = null;
var twnd = null;
function setUp() {
textDoc = v8New("TextDocument");
textDoc.SetText(text);
textDoc.Show();
twnd = TWW.GetTextWindow();
}
function tearDown() {
if (twnd)
delete twnd;
// Чтобы при закрытии не выдавалось сообщение "Записать?", сохраним документ во временный файл.
var tempFile = globalContext("{4A993AB7-2F75-43CF-B34A-0AD9FFAEE7E3}").GetTempFileName();
textDoc.Write(tempFile);
// Закроем окно текстового документа.
stdcommands.Frame.FileClose.send();
// Удалим временный файл.
var f = v8New("File", tempFile);
globalContext("{22A21030-E1D6-46A0-9465-F0A5427BE011}").DeleteFiles(f.Path, f.Name);
}
function macrosTest1() {
twnd.SetCaretPos(1, 17);
assertEquals('Однострочный текст', twnd.GetStringUnderCursor());
}
function macrosTest2() {
twnd.SetCaretPos(3, 26);
assertEquals("Первая строка\nВторая строка\nТретья строка", twnd.GetStringUnderCursor());
}
function macrosTest3() {
twnd.SetCaretPos(4, 13);
assertEquals("Первая строка\nВторая строка\nТретья строка", twnd.GetStringUnderCursor());
}
function macrosTest4() {
twnd.SetCaretPos(5, 3);
assertEquals("Первая строка\nВторая строка\nТретья строка", twnd.GetStringUnderCursor());
}
function macrosTest5() {
twnd.SetCaretPos(6, 21);
assertEquals("Это \"строковый\" литерал", twnd.GetStringUnderCursor());
}
function macrosTest6() {
twnd.SetCaretPos(6, 30);
assertEquals("Это \"строковый\" литерал", twnd.GetStringUnderCursor());
}
function macrosTest7() {
twnd.SetCaretPos(7, 17);
assertEquals(null, twnd.GetStringUnderCursor());
}
function macrosTest8() {
twnd.SetCaretPos(8, 19);
assertEquals("ВЫБРАТЬ \nПОДСТРОКА(\"Строчка\", 1, 1) КАК Символ;\n", twnd.GetStringUnderCursor());
}
function macrosTest9() {
twnd.SetCaretPos(10, 2);
assertEquals("ВЫБРАТЬ \nПОДСТРОКА(\"Строчка\", 1, 1) КАК Символ;\n", twnd.GetStringUnderCursor());
}
function macrosTest10() {
twnd.SetCaretPos(11, 10);
assertEquals("Тест 10.1 провалился", "Строка слева", twnd.GetStringUnderCursor());
twnd.SetCaretPos(11, 34);
assertEquals("Тест 10.2 провалился", "Строка справа", twnd.GetStringUnderCursor());
twnd.SetCaretPos(11, 19);
assertEquals("Тест 10.3 сломан: не отрабатывает ситуация, когда курсор находится между двух строковых литералов.", null, twnd.GetStringUnderCursor());
}