$engine JScript
$uname testStreamParser
$dname Тесты класса StreamParser
$addin stdlib
stdlib.require('jsUnitCore.js', SelfScript);
stdlib.require('StreamLib.js', SelfScript);
//{ Инициализация DATA_DIR
var snegopatFolder = profileRoot.getValue("Snegopat/MainFolder");
var DATA_DIR = snegopatFolder + "scripts\\Tests\\Automated\\StreamLib\\data\\";
//} Инициализация
var SP = null;
//{ setUp/tearDown
function setUp() {
SP = StreamFactory.CreateParser();
}
function tearDown() {
SP = null;
}
//} setUp/tearDown
//{ Простые тесты
function macrosTestParser_EmptyArray()
{
SP.setStream('{}');
assertArrayEquals([], SP.parse());
}
function macrosTestParser_SimpleArray_Numbers()
{
SP.setStream('{1,2,3}');
assertArrayEquals([1, 2, 3], SP.parse());
}
function macrosTestParser_SimpleArray_Strings()
{
SP.setStream('{"test string", "second string"}');
assertArrayEquals(["test string", "second string"], SP.parse());
}
function macrosTestParser_SimpleArray_EmptyStrings()
{
SP.setStream('{"", ""}');
assertArrayEquals(["", ""], SP.parse());
}
function macrosTestParser_SimpleArray_QuotesInString1()
{
SP.setStream('{"""", "this is ""quoted"" word"}');
assertArrayEquals(['"', 'this is "quoted" word'], SP.parse());
}
function macrosTestParser_SimpleArray_QuotesInString2()
{
SP.setStream('{""""""}');
assertArrayEquals(['""'], SP.parse());
}
function macrosTestParser_MultidimensionalArray()
{
SP.setStream('{{1, 2, 3}, {"first", "second", "third", {"array inside of array"}}}');
assertArrayEquals([[1,2,3], ['first', 'second', 'third', ['array inside of array']]], SP.parse());
}
//} Простые тесты
//{ Тесты с данными из файлов
function macrosTestParser_templ0_Empty_st() {
var fname = 'templ0_Empty.st';
assertTrue("Файл с тестовыми данными не существует: " + dataFile(fname), dataFileExists(fname));
assertTrue(SP.readStreamFromFile(dataFile(fname)));
var a = SP.parse(SP.getStream());
assertArrayEquals([1,[0,['Empty',1,0,'"ddd','']]],a);
}
function macrosTestParser_templ1_st() {
var fname = 'templ1.st';
assertTrue("Файл с тестовыми данными не существует: " + dataFile(fname), dataFileExists(fname));
assertTrue(SP.readStreamFromFile(dataFile(fname)));
var e = [1,[1,["Tmpl1",1,0,"",""],
[0,["Шаблон1 - Автоматически заменять и включать в контекстное меню",0,1,
"Автоматически заменять строку","Содержимое шаблона"]]]];
var a = SP.parse(SP.getStream());
assertArrayEquals(e, a);
}
//} Тесты с данными из файлов
//{ Вспомогательные функции
function dataFile(fileName) {
return DATA_DIR + fileName
}
function dataFileExists(fileName) {
var f = v8New('File', dataFile(fileName));
return (f.Exist() && f.IsFile());
}
//} Вспомогательные функции