jsdoc-75lb
Version:
An API documentation generator for JavaScript.
474 lines (465 loc) • 17 kB
JavaScript
exports.test_data = {
default_options: [
{ name: "indent_size", value: "4" },
{ name: "indent_char", value: "' '" },
{ name: "indent_with_tabs", value: "false" },
{ name: "preserve_newlines", value: "true" },
{ name: "jslint_happy", value: "false" },
{ name: "keep_array_indentation", value: "false" },
{ name: "brace_style", value: "'collapse'" },
{ name: "extra_liners", value: "['html', 'head', '/html']" }
],
groups: [{
name: "End With Newline",
description: "",
matrix: [
{
options: [
{ name: "end_with_newline", value: "true" }
],
eof: '\\n'
}, {
options: [
{ name: "end_with_newline", value: "false" }
],
eof: ''
}
],
tests: [
{ fragment: true, input: '', output: '{{eof}}' },
{ fragment: true, input: '<div></div>', output: '<div></div>{{eof}}' },
// { fragment: true, input: ' \n\n<div></div>\n\n\n\n', output: ' <div></div>{{eof}}' },
{ fragment: true, input: '\n', output: '{{eof}}' }
],
}, {
name: "Custom Extra Liners (empty)",
description: "",
matrix: [
{
options: [
{ name: "extra_liners", value: "[]" }
]
},
],
tests: [
{
fragment: true,
input: '<html><head><meta></head><body><div><p>x</p></div></body></html>',
output: '<html>\n<head>\n <meta>\n</head>\n<body>\n <div>\n <p>x</p>\n </div>\n</body>\n</html>'
}
],
}, {
name: "Custom Extra Liners (default)",
description: "",
matrix: [
{
options: [
{ name: "extra_liners", value: "null" }
]
},
],
tests: [
{
fragment: true,
input: '<html><head></head><body></body></html>',
output: '<html>\n\n<head></head>\n\n<body></body>\n\n</html>'
}
],
}, {
name: "Custom Extra Liners (p, string)",
description: "",
matrix: [
{
options: [
{ name: "extra_liners", value: "'p,/p'" }
]
},
],
tests: [
{
fragment: true,
input: '<html><head><meta></head><body><div><p>x</p></div></body></html>',
output: '<html>\n<head>\n <meta>\n</head>\n<body>\n <div>\n\n <p>x\n\n </p>\n </div>\n</body>\n</html>'
}
],
}, {
name: "Custom Extra Liners (p)",
description: "",
matrix: [
{
options: [
{ name: "extra_liners", value: "['p', '/p']" }
]
},
],
tests: [
{
fragment: true,
input: '<html><head><meta></head><body><div><p>x</p></div></body></html>',
output: '<html>\n<head>\n <meta>\n</head>\n<body>\n <div>\n\n <p>x\n\n </p>\n </div>\n</body>\n</html>'
}
],
}, {
name: "Attribute Wrap",
description: "Wraps attributes inside of html tags",
matrix: [
{
options: [
{ name: "wrap_attributes", value: "'force'" }
],
eof: '\\n',
indent_attr: ' ',
over80: '\\n'
}, {
options: [
{ name: "wrap_attributes", value: "'force'" },
{ name: "wrap_line_length", value: "80" }
],
eof: '\\n',
indent_attr: ' ',
over80: '\\n'
}, {
options: [
{ name: "wrap_attributes", value: "'force'" },
{ name: "wrap_attributes_indent_size", value: "8" },
],
eof: '\\n',
indent_attr: ' ',
over80: '\\n'
}, {
options: [
{ name: "wrap_attributes", value: "'auto'" },
{ name: "wrap_line_length", value: "80" }
],
eof: ' ',
indent_attr: '',
over80: '\\n'
}, {
options: [
{ name: "wrap_attributes", value: "'auto'" },
{ name: "wrap_line_length", value: "0" }
],
eof: ' ',
indent_attr: '',
over80: ' '
}
],
tests: [
{
fragment: true,
input: '<div attr0 attr1="123" data-attr2="hello t here">This is some text</div>',
output: '<div attr0{{eof}}{{indent_attr}}attr1="123"{{eof}}{{indent_attr}}data-attr2="hello t here">This is some text</div>'
},
{
fragment: true,
input: '<div lookatthissuperduperlongattributenamewhoahcrazy0="true" attr0 attr1="123" data-attr2="hello t here" heymanimreallylongtoowhocomesupwiththesenames="false">This is some text</div>',
output: '<div lookatthissuperduperlongattributenamewhoahcrazy0="true"{{eof}}{{indent_attr}}attr0{{eof}}{{indent_attr}}attr1="123"{{eof}}{{indent_attr}}data-attr2="hello t here"{{over80}}{{indent_attr}}heymanimreallylongtoowhocomesupwiththesenames="false">This is some text</div>'
},
{
fragment: true,
input: '<img attr0 attr1="123" data-attr2="hello t here"/>',
output: '<img attr0{{eof}}{{indent_attr}}attr1="123"{{eof}}{{indent_attr}}data-attr2="hello t here" />'
}
]
}, {
name: "Handlebars Indenting Off",
description: "Test handlebar behavior when indenting is off",
template: "^^^ $$$",
options: [
{ name: "indent_handlebars", value: "false" }
],
tests: [
{ fragment: true,
input_:
'{{#if 0}}\n' +
' <div>\n' +
' </div>\n' +
'{{/if}}',
output:
'{{#if 0}}\n' +
'<div>\n' +
'</div>\n' +
'{{/if}}' },
{ fragment: true,
input_:
'<div>\n' +
'{{#each thing}}\n' +
' {{name}}\n' +
'{{/each}}\n' +
'</div>',
output:
'<div>\n' +
' {{#each thing}} {{name}} {{/each}}\n' +
'</div>'}
]
}, {
name: "Handlebars Indenting On",
description: "Test handlebar formatting",
template: "^^^ $$$",
matrix: [
{
options: [
{ name: "indent_handlebars", value: "true" }
],
content: '{{field}}'
}, {
options: [
{ name: "indent_handlebars", value: "true" }
],
content: '{{! comment}}'
}, {
options: [
{ name: "indent_handlebars", value: "true" }
],
content: '{pre{{field1}} {{field2}} {{field3}}post'
}
, {
options: [
{ name: "indent_handlebars", value: "true" }
],
content: '{{! \\n mult-line\\ncomment \\n with spacing\\n}}'
}
],
tests: [
{ fragment: true, unchanged: '{{page-title}}' },
{ fragment: true, unchanged: '{{#if 0}}{{/if}}' },
{ fragment: true, unchanged: '{{#if 0}}^^^content$$${{/if}}' },
{ fragment: true, unchanged: '{{#if 0}}\n{{/if}}' },
{ fragment: true,
input_: '{{#if words}}{{/if}}',
output: '{{#if words}}{{/if}}' },
{ fragment: true,
input_: '{{#if words}}^^^content$$${{/if}}',
output: '{{#if words}}^^^content$$${{/if}}' },
{ fragment: true,
input_: '{{#if words}}^^^content$$${{/if}}',
output: '{{#if words}}^^^content$$${{/if}}' },
{ fragment: true,
unchanged:
'{{#if 1}}\n' +
' <div>\n' +
' </div>\n' +
'{{/if}}' },
{ fragment: true,
input_:
'{{#if 1}}\n' +
'<div>\n' +
'</div>\n' +
'{{/if}}',
output:
'{{#if 1}}\n' +
' <div>\n' +
' </div>\n' +
'{{/if}}' },
{ fragment: true,
unchanged:
'<div>\n' +
' {{#if 1}}\n' +
' {{/if}}\n' +
'</div>' },
{ fragment: true,
input_:
'<div>\n' +
'{{#if 1}}\n' +
'{{/if}}\n' +
'</div>',
output:
'<div>\n' +
' {{#if 1}}\n' +
' {{/if}}\n' +
'</div>' },
{ fragment: true,
input_:
'{{#if}}\n' +
'{{#each}}\n' +
'{{#if}}\n' +
'^^^content$$$\n' +
'{{/if}}\n' +
'{{#if}}\n' +
'^^^content$$$\n' +
'{{/if}}\n' +
'{{/each}}\n' +
'{{/if}}',
output:
'{{#if}}\n' +
' {{#each}}\n' +
' {{#if}}\n' +
' ^^^content$$$\n' +
' {{/if}}\n' +
' {{#if}}\n' +
' ^^^content$$$\n' +
' {{/if}}\n' +
' {{/each}}\n' +
'{{/if}}' },
{ fragment: true, unchanged: '{{#if 1}}\n' +
' <div>\n' +
' </div>\n' +
'{{/if}}' },
// Test {{else}} aligned with {{#if}} and {{/if}}
{ fragment: true,
input_:
'{{#if 1}}\n' +
' ^^^content$$$\n' +
' {{else}}\n' +
' ^^^content$$$\n' +
'{{/if}}',
output:
'{{#if 1}}\n' +
' ^^^content$$$\n' +
'{{else}}\n' +
' ^^^content$$$\n' +
'{{/if}}' },
{ fragment: true,
input_:
'{{#if 1}}\n' +
' {{else}}\n' +
' {{/if}}',
output:
'{{#if 1}}\n' +
'{{else}}\n' +
'{{/if}}' },
{ fragment: true,
input_:
'{{#if thing}}\n' +
'{{#if otherthing}}\n' +
' ^^^content$$$\n' +
' {{else}}\n' +
'^^^content$$$\n' +
' {{/if}}\n' +
' {{else}}\n'+
'^^^content$$$\n' +
'{{/if}}',
output:
'{{#if thing}}\n' +
' {{#if otherthing}}\n' +
' ^^^content$$$\n' +
' {{else}}\n' +
' ^^^content$$$\n' +
' {{/if}}\n' +
'{{else}}\n'+
' ^^^content$$$\n' +
'{{/if}}' },
// Test {{}} inside of <> tags, which should be separated by spaces
// for readability, unless they are inside a string.
{ fragment: true,
input_: '<div{{somestyle}}></div>',
output: '<div {{somestyle}}></div>' },
{ fragment: true,
input_: '<div{{#if test}}class="foo"{{/if}}>^^^content$$$</div>',
output: '<div {{#if test}} class="foo" {{/if}}>^^^content$$$</div>' },
{ fragment: true,
input_: '<div{{#if thing}}{{somestyle}}class="{{class}}"{{else}}class="{{class2}}"{{/if}}>^^^content$$$</div>',
output: '<div {{#if thing}} {{somestyle}} class="{{class}}" {{else}} class="{{class2}}" {{/if}}>^^^content$$$</div>' },
{ fragment: true,
input_: '<span{{#if condition}}class="foo"{{/if}}>^^^content$$$</span>',
output: '<span {{#if condition}} class="foo" {{/if}}>^^^content$$$</span>' },
{ fragment: true,
unchanged: '<div unformatted="{{#if}}^^^content$$${{/if}}">^^^content$$$</div>' },
{ fragment: true,
unchanged: '<div unformatted="{{#if }} ^^^content$$${{/if}}">^^^content$$$</div>' },
// Quotes found inside of Handlebars expressions inside of quoted
// strings themselves should not be considered string delimiters.
{ fragment: true,
unchanged: '<div class="{{#if thingIs "value"}}^^^content$$${{/if}}"></div>' },
{ fragment: true,
unchanged: '<div class="{{#if thingIs \\\'value\\\'}}^^^content$$${{/if}}"></div>' },
{ fragment: true,
unchanged: '<div class=\\\'{{#if thingIs "value"}}^^^content$$${{/if}}\\\'></div>' },
{ fragment: true,
unchanged: '<div class=\\\'{{#if thingIs \\\'value\\\'}}^^^content$$${{/if}}\\\'></div>' }
],
}, {
name: "Unclosed html elements",
description: "Unclosed elements should not indent",
options: [],
tests: [
{ fragment: true, unchanged: '<source>\n<source>' },
{ fragment: true, unchanged: '<br>\n<br>' },
{ fragment: true, unchanged: '<input>\n<input>' },
{ fragment: true, unchanged: '<meta>\n<meta>' },
{ fragment: true, unchanged: '<link>\n<link>' }
]
}, {
name: "Unformatted tags",
description: "Unformatted tag behavior",
options: [],
tests: [
{ fragment: true, unchanged: '<ol>\n <li>b<pre>c</pre></li>\n</ol>' },
{ fragment: true, unchanged: '<ol>\n <li>b<code>c</code></li>\n</ol>' },
]
}, {
name: "Php formatting",
description: "Php (<?php ... ?>) treated as comments.",
options: [],
tests: [
{ fragment: true, unchanged: '<h1 class="content-page-header"><?=$view["name"]; ?></h1>' },
{ fragment: true, unchanged:
[
'<?php',
'for($i = 1; $i <= 100; $i++;) {',
' #count to 100!',
' echo($i . "</br>");',
'}',
'?>'
]
},
]
}, {
name: "underscore.js formatting",
description: "underscore.js templates (<% ... %>) treated as comments.",
options: [],
tests: [
{ fragment: true, unchanged:
[
'<div class="col-sm-9">',
' <textarea id="notes" class="form-control" rows="3">',
' <%= notes %>',
' </textarea>',
'</div>'
]
},
]
}, {
name: "Indent with tabs",
description: "Use one tab instead of several spaces for indentation",
template: "^^^ $$$",
options: [
{ name: "indent_with_tabs", value: "true" }
],
tests: [
{ fragment: true,
input_:
'<div>\n' +
'<div>\n' +
'</div>\n' +
'</div>',
output:
'<div>\n' +
'\t<div>\n' +
'\t</div>\n' +
'</div>' }
]
}, {
name: "Indent without tabs",
description: "Use several spaces for indentation",
template: "^^^ $$$",
options: [
{ name: "indent_with_tabs", value: "false" }
],
tests: [
{ fragment: true,
input_:
'<div>\n' +
'<div>\n' +
'</div>\n' +
'</div>',
output:
'<div>\n' +
' <div>\n' +
' </div>\n' +
'</div>' }
]
}, {
name: "New Test Suite"
}],
};