Skip to content

Commit bfc4c85

Browse files
committed
glayzzle#73 add tests
1 parent efb2b54 commit bfc4c85

File tree

1 file changed

+50
-2
lines changed

1 file changed

+50
-2
lines changed

test/stringTests.js

Lines changed: 50 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,14 +47,62 @@ describe('Test strings', function() {
4747
it('...', function() {
4848
var ast = parser.parseEval('echo "Hello {$obj->name} !";');
4949
});
50-
it('...', function() {
50+
it('Encapsed variable / curly varname', function() {
5151
var ast = parser.parseEval('echo "Hello ${obj}->name !";');
52+
ast.children[0].kind.should.be.exactly('echo');
53+
ast.children[0].arguments.length.should.be.exactly(1);
54+
var arg1 = ast.children[0].arguments[0];
55+
arg1.kind.should.be.exactly('encapsed');
56+
arg1.type.should.be.exactly('string');
57+
arg1.value.length.should.be.exactly(3);
58+
// test constant parts
59+
arg1.value[0].kind.should.be.exactly('string');
60+
arg1.value[0].value.should.be.exactly('Hello ');
61+
arg1.value[2].kind.should.be.exactly('string');
62+
arg1.value[2].value.should.be.exactly('->name !');
63+
// test the varname
64+
arg1.value[1].kind.should.be.exactly('variable');
65+
arg1.value[1].name.should.be.exactly('obj');
66+
arg1.value[1].curly.should.be.exactly(true);
67+
});
68+
it('Encapsed variable / curly constant', function() {
69+
var ast = parser.parseEval('echo "Hello ${ obj }";');
70+
ast.children[0].kind.should.be.exactly('echo');
71+
ast.children[0].arguments.length.should.be.exactly(1);
72+
var arg1 = ast.children[0].arguments[0];
73+
arg1.kind.should.be.exactly('encapsed');
74+
arg1.type.should.be.exactly('string');
75+
arg1.value.length.should.be.exactly(2);
76+
// test constant parts
77+
arg1.value[0].kind.should.be.exactly('string');
78+
arg1.value[0].value.should.be.exactly('Hello ');
79+
// test the varname
80+
arg1.value[1].kind.should.be.exactly('variable');
81+
arg1.value[1].name.kind.should.be.exactly('constref');
82+
arg1.value[1].name.name.kind.should.be.exactly('identifier');
83+
arg1.value[1].name.name.name.should.be.exactly('obj');
84+
arg1.value[1].curly.should.be.exactly(true);
5285
});
5386
it('...', function() {
5487
var ast = parser.parseEval('echo "\\"$parts[0]\\"\\n";');
5588
});
56-
it('...', function() {
89+
it('Encapsed variable / offsetlookup', function() {
5790
var ast = parser.parseEval('echo "${$parts[$i]}\\n";');
91+
ast.children[0].kind.should.be.exactly('echo');
92+
ast.children[0].arguments.length.should.be.exactly(1);
93+
var arg1 = ast.children[0].arguments[0];
94+
arg1.kind.should.be.exactly('encapsed');
95+
arg1.type.should.be.exactly('string');
96+
arg1.value.length.should.be.exactly(2);
97+
// check the varvar
98+
arg1.value[0].kind.should.be.exactly('variable');
99+
// check the lookup structure
100+
arg1.value[0].name.kind.should.be.exactly('offsetlookup');
101+
arg1.value[0].name.what.name.should.be.exactly('parts');
102+
arg1.value[0].name.offset.name.should.be.exactly('i');
103+
// check ending string
104+
arg1.value[1].kind.should.be.exactly('string');
105+
arg1.value[1].value.should.be.exactly('\n');
58106
});
59107
it('...', function() {
60108
var ast = parser.parseEval('echo "yo : {$feeds[0][\'title[0][value]\']}";');

0 commit comments

Comments
 (0)