$engine JScript
$dname Тест загрузки/выгрузки аддинов
/*
Это запускаемый вручную тест для диагностики причин ошибки с выгрузкой в аддинов в
окне Снегопата (скрипта snegopatwnd.js).
Ошибка заключается в следующем:
если загрузить программно несколько скриптов-аддинов, а потом все их выгрузить, то
в дереве аддинов останется строка с последним (по порядку загрузки) аддином,
но сам аддин будет выгружен.
Воспроизведение ошибки:
1. Выполнить макрос "ЗагрузитьАддины".
2. Убедиться, что в ветке "Тест загрузки/выгрузки скриптов" появились строки для аддинов s1 и s2.
3. Выполнить макрос "ВыгрузитьАддины"
4. Смотрим в ветку "Тест загрузки/выгрузки скриптов", в ней осталась строка с аддином s2.
Ожидается (правильное поведение):
после выполнения макроса "ВыгрузитьАддины" ветка "Тест загрузки/выгрузки скриптов" будет пуста.
*/
var dynLibGroup = libGroupByName("Тест загрузки/выгрузки скриптов");
//var scriptNamesToLoad = ['s1', 's2'];
var scriptNamesToLoad = ['s1'];
var scriptsDir = v8New("File", SelfScript.fullPath).Path;
function macrosЗагрузитьАддины()
{
for (var i=0; i<scriptNamesToLoad.length; i++)
{
//debugger;
addins.loadAddin('script:' + scriptsDir + scriptNamesToLoad[i] + '.js', dynLibGroup);
}
}
function macrosВыгрузитьАддины()
{
for (var i=0; i<scriptNamesToLoad.length; i++)
{
addins.unloadAddin(addins.byUniqueName(scriptNamesToLoad[i]));
debugger;
}
}
function libGroupByName(libGroupName)
{
var libGroup = addins.root.child;
var libFound = false;
while (libGroup)
{
if (libGroup.name == libGroupName)
{
libFound = true;
break
}
libGroup = libGroup.next;
}
if (!libFound)
libGroup = addins.root.addGroup(libGroupName);
return libGroup;
}