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: '
', output: '{{eof}}' },
// { fragment: true, input: ' \n\n\n\n\n\n', output: ' {{eof}}' },
{ fragment: true, input: '\n', output: '{{eof}}' }
],
}, {
name: "Custom Extra Liners (empty)",
description: "",
matrix: [
{
options: [
{ name: "extra_liners", value: "[]" }
]
},
],
tests: [
{
fragment: true,
input: '',
output: '\n\n \n\n\n \n\n'
}
],
}, {
name: "Custom Extra Liners (default)",
description: "",
matrix: [
{
options: [
{ name: "extra_liners", value: "null" }
]
},
],
tests: [
{
fragment: true,
input: '',
output: '\n\n\n\n\n\n'
}
],
}, {
name: "Custom Extra Liners (p, string)",
description: "",
matrix: [
{
options: [
{ name: "extra_liners", value: "'p,/p'" }
]
},
],
tests: [
{
fragment: true,
input: '',
output: '\n\n \n\n\n \n\n'
}
],
}, {
name: "Custom Extra Liners (p)",
description: "",
matrix: [
{
options: [
{ name: "extra_liners", value: "['p', '/p']" }
]
},
],
tests: [
{
fragment: true,
input: '',
output: '\n\n \n\n\n \n\n'
}
],
}, {
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: 'This is some text
',
output: 'This is some text
'
},
{
fragment: true,
input: 'This is some text
',
output: 'This is some text
'
},
{
fragment: true,
input: '
',
output: '
'
}
]
}, {
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' +
' \n' +
'
\n' +
'{{/if}}',
output:
'{{#if 0}}\n' +
'\n' +
'
\n' +
'{{/if}}' },
{ fragment: true,
input_:
'\n' +
'{{#each thing}}\n' +
' {{name}}\n' +
'{{/each}}\n' +
'
',
output:
'\n' +
' {{#each thing}} {{name}} {{/each}}\n' +
'
'}
]
}, {
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' +
' \n' +
'
\n' +
'{{/if}}' },
{ fragment: true,
input_:
'{{#if 1}}\n' +
'\n' +
'
\n' +
'{{/if}}',
output:
'{{#if 1}}\n' +
' \n' +
'
\n' +
'{{/if}}' },
{ fragment: true,
unchanged:
'\n' +
' {{#if 1}}\n' +
' {{/if}}\n' +
'
' },
{ fragment: true,
input_:
'\n' +
'{{#if 1}}\n' +
'{{/if}}\n' +
'
',
output:
'\n' +
' {{#if 1}}\n' +
' {{/if}}\n' +
'
' },
{ 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' +
' \n' +
'
\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_: '',
output: '' },
{ fragment: true,
input_: '^^^content$$$
',
output: '^^^content$$$
' },
{ fragment: true,
input_: '^^^content$$$
',
output: '^^^content$$$
' },
{ fragment: true,
input_: '^^^content$$$',
output: '^^^content$$$' },
{ fragment: true,
unchanged: '^^^content$$$
' },
{ fragment: true,
unchanged: '^^^content$$$
' },
// Quotes found inside of Handlebars expressions inside of quoted
// strings themselves should not be considered string delimiters.
{ fragment: true,
unchanged: '' },
{ fragment: true,
unchanged: '' },
{ fragment: true,
unchanged: '' },
{ fragment: true,
unchanged: '' }
],
}, {
name: "Unclosed html elements",
description: "Unclosed elements should not indent",
options: [],
tests: [
{ fragment: true, unchanged: '\n' },
{ fragment: true, unchanged: '
\n
' },
{ fragment: true, unchanged: '\n' },
{ fragment: true, unchanged: '\n' },
{ fragment: true, unchanged: '\n' }
]
}, {
name: "Unformatted tags",
description: "Unformatted tag behavior",
options: [],
tests: [
{ fragment: true, unchanged: '\n - b
c
\n
' },
{ fragment: true, unchanged: '\n - b
c \n
' },
]
}, {
name: "Php formatting",
description: "Php () treated as comments.",
options: [],
tests: [
{ fragment: true, unchanged: '' },
{ fragment: true, unchanged:
[
'");',
'}',
'?>'
]
},
]
}, {
name: "underscore.js formatting",
description: "underscore.js templates (<% ... %>) treated as comments.",
options: [],
tests: [
{ fragment: true, unchanged:
[
'',
' ',
'
'
]
},
]
}, {
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_:
'',
output:
'\n' +
'\t
\n' +
'\t
\n' +
'
' }
]
}, {
name: "Indent without tabs",
description: "Use several spaces for indentation",
template: "^^^ $$$",
options: [
{ name: "indent_with_tabs", value: "false" }
],
tests: [
{ fragment: true,
input_:
'',
output:
'' }
]
}, {
name: "New Test Suite"
}],
};