mirror of
https://github.com/HeyPuter/puter.git
synced 2026-01-06 05:00:29 -06:00
dev(tools): add license header adder thingy
This commit is contained in:
127
tools/comment-parser/test/test.js
Normal file
127
tools/comment-parser/test/test.js
Normal file
@@ -0,0 +1,127 @@
|
||||
const {
|
||||
StringStream,
|
||||
LinesCommentParser,
|
||||
BlockCommentParser,
|
||||
CommentParser
|
||||
} = require('../main');
|
||||
|
||||
const assert = async (label, fn) => {
|
||||
if ( ! await fn() ) {
|
||||
// TODO: strutil quot
|
||||
throw new Error(`assert: '${label}' failed`)
|
||||
}
|
||||
};
|
||||
|
||||
describe('parsers', () => {
|
||||
describe('lines-comment-parser', () => {
|
||||
it ('basic test', async () => {
|
||||
const parser = LinesCommentParser({ prefix: '//' });
|
||||
let lines;
|
||||
const ss = StringStream(`
|
||||
// first line of first block
|
||||
// second line of first block
|
||||
|
||||
// first line of second block
|
||||
|
||||
function () {}
|
||||
`);
|
||||
const results = [];
|
||||
for (;;) {
|
||||
comment = await parser.parse(ss);
|
||||
if ( ! comment ) break;
|
||||
results.push(comment.lines);
|
||||
}
|
||||
console.log('results?', results);
|
||||
})
|
||||
})
|
||||
describe('block-comment-parser', () => {
|
||||
it ('basic test', async () => {
|
||||
const parser = BlockCommentParser({
|
||||
start: '/*',
|
||||
end: '*/',
|
||||
ignore_line_prefix: '*',
|
||||
});
|
||||
let lines;
|
||||
const ss = StringStream(`
|
||||
/*
|
||||
First block
|
||||
comment
|
||||
*/
|
||||
/*
|
||||
* second block
|
||||
* comment
|
||||
*/
|
||||
|
||||
/**
|
||||
* third block
|
||||
* comment
|
||||
*/
|
||||
function () {}
|
||||
`);
|
||||
const results = [];
|
||||
for (;;) {
|
||||
comment = await parser.parse(ss);
|
||||
if ( ! comment ) break;
|
||||
results.push(comment.lines);
|
||||
}
|
||||
console.log('results?', results);
|
||||
})
|
||||
it ('doesn\'t return anything for line comments', async () => {
|
||||
const parser = BlockCommentParser({
|
||||
start: '/*',
|
||||
end: '*/',
|
||||
ignore_line_prefix: '*',
|
||||
});
|
||||
let lines;
|
||||
const ss = StringStream(`
|
||||
// this comment should not be parsed
|
||||
// by the block comment parser
|
||||
function () {}
|
||||
`);
|
||||
const results = [];
|
||||
for (;;) {
|
||||
comment = await parser.parse(ss);
|
||||
if ( ! comment ) break;
|
||||
results.push(comment.lines);
|
||||
}
|
||||
console.log('results?', results);
|
||||
})
|
||||
})
|
||||
describe('extract_top_comments', () => {
|
||||
it ('basic test', async () => {
|
||||
const parser = CommentParser();
|
||||
|
||||
const filename = 'test.js';
|
||||
const source = `
|
||||
// First lines comment
|
||||
// second line of lines comment
|
||||
|
||||
/*
|
||||
First block comment
|
||||
second line of block comment
|
||||
*/
|
||||
`;
|
||||
|
||||
const results = await parser.extract_top_comments({
|
||||
filename,
|
||||
source,
|
||||
});
|
||||
console.log('results?', results);
|
||||
})
|
||||
})
|
||||
describe('StringStream', () => {
|
||||
describe('fork', () => {
|
||||
it('works', async () => {
|
||||
const ss = StringStream('asdf');
|
||||
const ss_ = ss.fork();
|
||||
ss_.fwd();
|
||||
await assert('fwd worked', async () => {
|
||||
return await ss_.get_char() === 's';
|
||||
});
|
||||
await assert('upstream state is same', async () => {
|
||||
return await ss.get_char() === 'a';
|
||||
});
|
||||
})
|
||||
})
|
||||
})
|
||||
});
|
||||
Reference in New Issue
Block a user