Artifact 80da9dc750e1a0c0cafde20ed824be65d36d8d9c:
- File
Tests/Automated/xUnitFor1C/testXUnitAddTestsDesc.js
— part of check-in
[a373498a65]
at
2014-04-18 11:13:22
on branch trunk
— + при записи модуля внешней обработки происходит вставка определений тестовых случаев, если они определены в модуле
+ автоматические тесты поведения скрипта
+ выделен отдельный класс _AppenderTestCaseDescriptionsIntoText вместо функций (user: artbear size: 6286)
$engine JScript $uname test_xUnitAddTestsDesc $dname Тесты работы xUnitAddTestsDesc.js $addin global $addin stdcommands $addin stdlib //global.connectGlobals(SelfScript); // регулярка для поиска всех функций JScript - удобно юзать в Notepad++ // ^function\s*([^\(]+)\( // (^function\s*[^\(\s]+\s*\()|(^[^\.\s]+\.prototype\.[^\.\s]+\s+) stdlib.require('jsUnitCore.js', SelfScript); var mainFolder = profileRoot.getValue("Snegopat/MainFolder"); var testDir = mainFolder + 'scripts\\Tests\\Automated\\xUnitFor1C\\AddTestsDesc\\'; var pluginAppender = stdlib.require(mainFolder + 'scripts\\xUnitAddTestsDesc.js'); //, SelfScript); // чтобы вызывать функции из основного скрипта var TWW = stdlib.require('TextWindow.js'); var textDoc = null; var twnd = null; var appender = null; function setUp() { textDoc = v8New("TextDocument"); var text = "Таб = Новый ТаблицаЗначений;\nТаб"; textDoc.SetText(text); textDoc.Show(); twnd = TWW.GetTextWindow(); appender = new pluginAppender._AppenderTestCaseDescriptionsIntoText(twnd); } function tearDown() { destroyTextWindow(); } function destroyTextWindow() { 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); } SelfScript.self['macrosTest В модуле уже есть описания тестовых случаев'] = function() { var textDoc = v8New("TextDocument"); textDoc.Read(testDir+'xUnitAddTestsDesc_УжеЕстьОписанияТестов.txt') var predLineCount = textDoc.LineCount(); var text = textDoc.GetText(); twnd.SetText(text) appender.parseSources(); var procNames = appender.getTestCases(); assertEquals(procNames.length, 2); var procName = 'ТестСОпциями_БезПараметра' var reTestCaseDesc = new RegExp( '^\\s*ВсеТесты\\.Добавить\\(\\s*"'+procName+'"\\s*\\)\\s*;\\s*$', "igm"); assertFalse('Не нашли описание теста '+procName, reTestCaseDesc.test(text)); success = appender.addTestCaseDescriptionsIntoText(); assertTrue('Не успешно выполнили тест!', success); assertEquals(twnd.LinesCount(), predLineCount+2); appender.parseSources(); var procNames = appender.getTestCases(); assertEquals(procNames.length, 2); var text = twnd.GetText(); for(i=0; i < procNames.length; i++) { var reTestCaseDesc = new RegExp( '^\\s*ВсеТесты\\.Добавить\\(\\s*"'+procNames[i]+'"\\s*\\)\\s*;\\s*$', "igm"); //logger.debug('Регулярное выражение шаблона замены '+reTestCaseDesc.source) assertTrue('Не нашли описание теста '+procNames[i], reTestCaseDesc.test(text)); } //var txt = "перем Пример;\nПример = 2;"; //var arrStrings = txt.split("\n"); //assertTrue('Не успешно выполнили тест!', obInts.removeComments(arrStrings)); } SelfScript.self['macrosTest В модуле вообще нет функции ПолучитьСписокТестов, но сами тестовые случаи определены'] = function() { //pluginAppender.logger.setLevel(pluginAppender.Log4js.Level.DEBUG); var textDoc = v8New("TextDocument"); textDoc.Read(testDir+'xUnitAddTestsDesc_НетПолучитьСписокТестов.txt') predLineCount = textDoc.LineCount() var text = textDoc.GetText(); twnd.SetText(text) appender.parseSources(); var procNames = appender.getTestCases(); assertEquals(procNames.length, 2); var procName = 'ТестСОпциями_БезПараметра' var reTestCaseDesc = new RegExp( '^\\s*ВсеТесты\\.Добавить\\(\\s*"'+procName+'"\\s*\\)\\s*;\\s*$', "igm"); assertFalse('Не нашли описание теста '+procName, reTestCaseDesc.test(text)); success = appender.addTestCaseDescriptionsIntoText(); assertTrue('Не успешно выполнили тест!', success); assertEquals(twnd.LinesCount(), predLineCount + 15); appender.parseSources(); var procNames = appender.getTestCases(); assertEquals(procNames.length, 2); var text = twnd.GetText(); for(i=0; i < procNames.length; i++) { var reTestCaseDesc = new RegExp( '^\\s*ВсеТесты\\.Добавить\\(\\s*"'+procNames[i]+'"\\s*\\)\\s*;\\s*$', "igm"); //logger.debug('Регулярное выражение шаблона замены '+reTestCaseDesc.source) assertTrue('Не нашли описание теста '+procNames[i], reTestCaseDesc.test(text)); } } SelfScript.self['macrosTest В модуле вообще нет тестовых случаев'] = function() { var textDoc = v8New("TextDocument"); textDoc.Read(testDir+'xUnitAddTestsDesc_НетОпределенийТестов.txt') predLineCount = textDoc.LineCount() predText = textDoc.GetText() twnd.SetText(predText) appender.parseSources(); var procNames = appender.getTestCases(); assertEquals(procNames, null); success = appender.addTestCaseDescriptionsIntoText(); assertFalse('Не успешно выполнили тест!', success); assertEquals(predText, textDoc.GetText()); //assertEquals(TrimAll(predText), TrimAll(textDoc.GetText())); assertEquals(twnd.LinesCount(), predLineCount); appender.parseSources(); var procNames = appender.getTestCases(); assertEquals(procNames, null); } function TrimAll(src) { return src.replace(/(^\s*)|(\s*$)/g, ""); //trim }