Addnew sheets (armor, weapons, malefica) and v13 support
This commit is contained in:
184
node_modules/comment-parser/tests/unit/spec-parser.spec.ts
generated
vendored
Normal file
184
node_modules/comment-parser/tests/unit/spec-parser.spec.ts
generated
vendored
Normal file
@@ -0,0 +1,184 @@
|
||||
import descriptionTokenizer from '../../src/parser/tokenizers/description.js';
|
||||
import nameTokenizer from '../../src/parser/tokenizers/name.js';
|
||||
import tagTokenizer from '../../src/parser/tokenizers/tag.js';
|
||||
import typeTokenizer from '../../src/parser/tokenizers/type.js';
|
||||
import getParser from '../../src/parser/spec-parser.js';
|
||||
import { seedTokens, seedSpec } from '../../src/util.js';
|
||||
import { Spec, Problem } from '../../src/primitives.js';
|
||||
|
||||
const parse = getParser({
|
||||
tokenizers: [
|
||||
tagTokenizer(),
|
||||
typeTokenizer(),
|
||||
nameTokenizer(),
|
||||
descriptionTokenizer(),
|
||||
],
|
||||
});
|
||||
|
||||
const tokenizer = (message: string, critical = false) => {
|
||||
const problem: Problem = {
|
||||
code: 'custom',
|
||||
line: 1,
|
||||
message,
|
||||
critical,
|
||||
};
|
||||
return (spec: Spec) => ({
|
||||
...spec,
|
||||
problems: [...spec.problems, problem],
|
||||
});
|
||||
};
|
||||
|
||||
test('all tokens', () => {
|
||||
const parsed = parse([
|
||||
{
|
||||
number: 1,
|
||||
source: '...',
|
||||
tokens: seedTokens({
|
||||
description: '@param {type} [name=value] description',
|
||||
}),
|
||||
},
|
||||
]);
|
||||
expect(parsed).toEqual(
|
||||
seedSpec({
|
||||
tag: 'param',
|
||||
type: 'type',
|
||||
name: 'name',
|
||||
default: 'value',
|
||||
optional: true,
|
||||
description: 'description',
|
||||
source: [
|
||||
{
|
||||
number: 1,
|
||||
source: '...',
|
||||
tokens: seedTokens({
|
||||
tag: '@param',
|
||||
postTag: ' ',
|
||||
type: '{type}',
|
||||
postType: ' ',
|
||||
name: '[name=value]',
|
||||
postName: ' ',
|
||||
description: 'description',
|
||||
}),
|
||||
},
|
||||
],
|
||||
})
|
||||
);
|
||||
});
|
||||
|
||||
test('quotes in description', () => {
|
||||
const parsed = parse([
|
||||
{
|
||||
number: 1,
|
||||
source: '...',
|
||||
tokens: seedTokens({
|
||||
description:
|
||||
'@param {type} [name=value] description with "quoted" word',
|
||||
}),
|
||||
},
|
||||
]);
|
||||
expect(parsed).toEqual(
|
||||
seedSpec({
|
||||
tag: 'param',
|
||||
type: 'type',
|
||||
name: 'name',
|
||||
default: 'value',
|
||||
optional: true,
|
||||
description: 'description with "quoted" word',
|
||||
source: [
|
||||
{
|
||||
number: 1,
|
||||
source: '...',
|
||||
tokens: seedTokens({
|
||||
tag: '@param',
|
||||
postTag: ' ',
|
||||
type: '{type}',
|
||||
postType: ' ',
|
||||
name: '[name=value]',
|
||||
postName: ' ',
|
||||
description: 'description with "quoted" word',
|
||||
}),
|
||||
},
|
||||
],
|
||||
})
|
||||
);
|
||||
});
|
||||
|
||||
test('collect non-critical errors', () => {
|
||||
const parse = getParser({
|
||||
tokenizers: [tokenizer('warning 1'), tokenizer('warning 2')],
|
||||
});
|
||||
|
||||
const parsed = parse([
|
||||
{
|
||||
number: 1,
|
||||
source: '...',
|
||||
tokens: seedTokens({ description: 'description' }),
|
||||
},
|
||||
]);
|
||||
|
||||
expect(parsed).toEqual({
|
||||
tag: '',
|
||||
name: '',
|
||||
optional: false,
|
||||
type: '',
|
||||
description: '',
|
||||
problems: [
|
||||
{
|
||||
code: 'custom',
|
||||
line: 1,
|
||||
message: 'warning 1',
|
||||
critical: false,
|
||||
},
|
||||
{
|
||||
code: 'custom',
|
||||
line: 1,
|
||||
message: 'warning 2',
|
||||
critical: false,
|
||||
},
|
||||
],
|
||||
source: [
|
||||
{
|
||||
number: 1,
|
||||
source: '...',
|
||||
tokens: seedTokens({ description: 'description' }),
|
||||
},
|
||||
],
|
||||
});
|
||||
});
|
||||
|
||||
test('stop on critical error', () => {
|
||||
const parse = getParser({
|
||||
tokenizers: [tokenizer('error 1', true), tokenizer('warning 2')],
|
||||
});
|
||||
|
||||
const parsed = parse([
|
||||
{
|
||||
number: 1,
|
||||
source: '...',
|
||||
tokens: seedTokens({ description: 'description' }),
|
||||
},
|
||||
]);
|
||||
|
||||
expect(parsed).toEqual({
|
||||
tag: '',
|
||||
name: '',
|
||||
optional: false,
|
||||
type: '',
|
||||
description: '',
|
||||
problems: [
|
||||
{
|
||||
code: 'custom',
|
||||
line: 1,
|
||||
message: 'error 1',
|
||||
critical: true,
|
||||
},
|
||||
],
|
||||
source: [
|
||||
{
|
||||
number: 1,
|
||||
source: '...',
|
||||
tokens: seedTokens({ description: 'description' }),
|
||||
},
|
||||
],
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user