168 lines
2.9 KiB
JavaScript
168 lines
2.9 KiB
JavaScript
import javascript from 'src/js/parser/javascript/parser.js';
|
|
import _ from 'lodash';
|
|
import Snap from 'snapsvg';
|
|
|
|
describe('parser/javascript/any_character.js', function() {
|
|
|
|
_.forIn({
|
|
'*': {
|
|
minimum: 0,
|
|
maximum: -1,
|
|
greedy: true,
|
|
hasSkip: true,
|
|
hasLoop: true
|
|
},
|
|
'*?': {
|
|
minimum: 0,
|
|
maximum: -1,
|
|
greedy: false,
|
|
hasSkip: true,
|
|
hasLoop: true
|
|
},
|
|
'+': {
|
|
minimum: 1,
|
|
maximum: -1,
|
|
greedy: true,
|
|
hasSkip: false,
|
|
hasLoop: true
|
|
},
|
|
'+?': {
|
|
minimum: 1,
|
|
maximum: -1,
|
|
greedy: false,
|
|
hasSkip: false,
|
|
hasLoop: true
|
|
},
|
|
'?': {
|
|
minimum: 0,
|
|
maximum: 1,
|
|
greedy: true,
|
|
hasSkip: true,
|
|
hasLoop: false
|
|
},
|
|
'??': {
|
|
minimum: 0,
|
|
maximum: 1,
|
|
greedy: false,
|
|
hasSkip: true,
|
|
hasLoop: false
|
|
},
|
|
'{1}': {
|
|
minimum: 1,
|
|
maximum: 1,
|
|
greedy: true,
|
|
hasSkip: false,
|
|
hasLoop: false
|
|
},
|
|
'{1}?': {
|
|
minimum: 1,
|
|
maximum: 1,
|
|
greedy: false,
|
|
hasSkip: false,
|
|
hasLoop: false
|
|
},
|
|
'{2}': {
|
|
minimum: 2,
|
|
maximum: 2,
|
|
greedy: true,
|
|
hasSkip: false,
|
|
hasLoop: true
|
|
},
|
|
'{2}?': {
|
|
minimum: 2,
|
|
maximum: 2,
|
|
greedy: false,
|
|
hasSkip: false,
|
|
hasLoop: true
|
|
},
|
|
'{0,}': {
|
|
minimum: 0,
|
|
maximum: -1,
|
|
greedy: true,
|
|
hasSkip: true,
|
|
hasLoop: true
|
|
},
|
|
'{0,}?': {
|
|
minimum: 0,
|
|
maximum: -1,
|
|
greedy: false,
|
|
hasSkip: true,
|
|
hasLoop: true
|
|
},
|
|
'{1,}': {
|
|
minimum: 1,
|
|
maximum: -1,
|
|
greedy: true,
|
|
hasSkip: false,
|
|
hasLoop: true
|
|
},
|
|
'{1,}?': {
|
|
minimum: 1,
|
|
maximum: -1,
|
|
greedy: false,
|
|
hasSkip: false,
|
|
hasLoop: true
|
|
},
|
|
'{0,1}': {
|
|
minimum: 0,
|
|
maximum: 1,
|
|
greedy: true,
|
|
hasSkip: true,
|
|
hasLoop: false
|
|
},
|
|
'{0,1}?': {
|
|
minimum: 0,
|
|
maximum: 1,
|
|
greedy: false,
|
|
hasSkip: true,
|
|
hasLoop: false
|
|
},
|
|
'{0,2}': {
|
|
minimum: 0,
|
|
maximum: 2,
|
|
greedy: true,
|
|
hasSkip: true,
|
|
hasLoop: true
|
|
},
|
|
'{0,2}?': {
|
|
minimum: 0,
|
|
maximum: 2,
|
|
greedy: false,
|
|
hasSkip: true,
|
|
hasLoop: true
|
|
},
|
|
'{1,2}': {
|
|
minimum: 1,
|
|
maximum: 2,
|
|
greedy: true,
|
|
hasSkip: false,
|
|
hasLoop: true
|
|
},
|
|
'{1,2}?': {
|
|
minimum: 1,
|
|
maximum: 2,
|
|
greedy: false,
|
|
hasSkip: false,
|
|
hasLoop: true
|
|
}
|
|
}, (content, str) => {
|
|
it(`parses "${str}" as a Repeat`, function() {
|
|
var parser = new javascript.Parser(str);
|
|
expect(parser.__consume__repeat()).toEqual(jasmine.objectContaining(content));
|
|
});
|
|
});
|
|
|
|
describe('contentPosition property', function() {
|
|
|
|
pending();
|
|
|
|
});
|
|
|
|
describe('label property', function() {
|
|
|
|
pending();
|
|
|
|
});
|
|
|
|
});
|