{"version":3,"file":"../out/generator.js","sources":["../src/generator.latte"],"names":[],"mappings":"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","sourcesContent":["var should = require(\"should\");\nvar Q = require(\"q\");\n\ndescribe('Generators', function () {\n\t//\"use strict\";\n\n\tit('can yield values', function () {\n\t\tfunction *g() {\n\t\t\tyield 42;\n\t\t}\n\t\tg().next().value.should.equal(42);\n\t})\n\n\tit('can accept values on yield', function () {\n\t\tfunction *g() {\n\t\t\t(yield 42).should.equal(\"hello\");\n\t\t\tyield \"bye\";\n\t\t}\n\t\tvar i = g();\n\t\ti.next().value.should.equal(42);\n\t\ti.send(\"hello\").value.should.equal(\"bye\");\n\t})\n\n\tit('works with conditionals', function () {\n\t\tfunction *g() {\n\t\t\tvar x = true ? yield 'Meee' : 'You';\n\t\t\tx.should.equal('Meee');\n\t\t\tyield \"bye\";\n\t\t}\n\t\tvar i = g();\n\t\tvar v = i.next().value;\n\t\tv.should.equal('Meee');\n\t\ti.send(v).value.should.equal(\"bye\");\n\t})\n\n\tit('doesn\\'t evaluate false conditional', function () {\n\t\tvar yielded = false;\n\t\tfunction *g() {\n\t\t\tvar x = false ? yield 'Meee' : 'You';\n\t\t\tx.should.equal('You');\n\t\t\tyielded.should.equal(false);\n\t\t\tyield \"bye\";\n\t\t}\n\t\tvar i = g();\n\t\tvar v = i.next().value;\n\t\tyielded = true;\n\t})\n\n\n\tit('works with logical expression', function () {\n\t\tfunction *g()  {\n\t\t\tvar x = true && (yield 'Meee');\n\t\t\tx.should.equal('Meee');\n\t\t\tyield \"bye\";\n\t\t}\n\t\tvar i = g();\n\t\tvar v = i.next().value;\n\t\tv.should.equal('Meee');\n\t\ti.send(v).value.should.equal(\"bye\");\n\t})\n\n\tit('supports short circuit evaluation', function () {\n\t\tvar yielded = false;\n\t\tfunction *g()  {\n\t\t\tvar x = 'You' || (yield 'Meee');\n\t\t\tx.should.equal('You');\n\t\t\tyielded.should.equal(false);\n\t\t\tyield \"bye\";\n\t\t}\n\t\tvar i = g();\n\t\tvar v = i.next().value;\n\t\tyielded = true;\n\t\tv.should.equal('bye');\n\t})\n\n\n\n\tit('works with if statement', function () {\n\t\tfunction *g()  {\n\t\t\tvar x;\n\t\t\tif ( false ) {\n\t\t\t\tx = yield 'Not me';\n\t\t\t}\n\n\t\t\tif ( true ) {\n\t\t\t\tx = yield 'Meee';\n\t\t\t} else {\n\t\t\t\tx = 'You';\n\t\t\t}\n\n\t\t\tx.should.equal('Meee');\n\t\t\tyield \"bye\";\n\t\t}\n\n\t\tvar i = g();\n\t\tvar v = i.next().value;\n\t\tv.should.equal('Meee');\n\t\ti.send(v).value.should.equal(\"bye\");\n\t})\n\n\tit('works with if statement condition', function () {\n\t\tfunction *g()  {\n\t\t\tif ( yield true ) {\n\t\t\t\tyield 'good';\n\t\t\t} else {\n\t\t\t\tyield 'bad';\n\t\t\t}\n\t\t}\n\n\t\tvar i = g();\n\t\tvar v = i.next().value;\n\t\tv.should.equal(true);\n\t\ti.send(v).value.should.equal(\"good\");\n\t})\n\n\tit('works with nested if statement', function () {\n\t\tfunction *g()  {\n\t\t\tvar x;\n\t\t\tif ( true ) {\n\t\t\t\tvar y = yield 'Meee';\n\t\t\t\tif ( false ) {\n\t\t\t\t\tx = yield 'Arrgh';\n\t\t\t\t} else {\n\t\t\t\t\ty.should.equal('Meee');\n\t\t\t\t\tx = yield 'Me again';\n\t\t\t\t}\n\n\t\t\t\ty.should.equal('Meee');\n\t\t\t} else {\n\t\t\t\tx = 'You';\n\t\t\t}\n\n\t\t\tx.should.equal('Me again');\n\t\t\tyield \"bye\";\n\t\t}\n\n\t\tvar i = g();\n\t\tvar v = i.next().value;\n\t\tv.should.equal('Meee');\n\t\tv = i.send(v).value;\n\t\tv.should.equal(\"Me again\");\n\t\ti.send(v).value.should.equal(\"bye\");\n\t})\n\n\n\tit('works with while statement', function () {\n\t\tfunction *g()  {\n\t\t\tvar i = 0;\n\t\t\twhile(i < 100000) {\n\t\t\t\tif ( i % 2 == 0 ) \n\t\t\t\t\tyield i;\n\t\t\t\ti++;\n\t\t\t}\n\t\t\tconsole.log('done');\n\t\t}\n\n\t\tvar i = g();\n\t\ti.next().value.should.equal(0);\n\t\ti.next().value.should.equal(2);\n\t\ti.next().value.should.equal(4);\n\t})\n\n\tit('works with while statement condition', function () {\n\t\tfunction *g()  {\n\t\t\tvar i = 0;\n\t\t\twhile((yield i++) < 10) {\n\t\t\t\t\n\t\t\t}\n\t\t\tyield 'done';\n\t\t}\n\n\t\tvar i = g();\n\t\ti.next().value.should.equal(0);\n\t\ti.send(5).value.should.equal(1);\n\t\ti.next().value.should.equal('done');\n\t})\n\n\tit('works with nested while statement', function () {\n\t\tfunction *g()  {\n\t\t\tvar i = 0;\n\t\t\twhile(i < 100000) {\n\t\t\t\tvar j = 1;\n\t\t\t\twhile(j <= 2) {\n\t\t\t\t\tyield (i * j++);\n\t\t\t\t}\n\t\t\t\ti++;\n\t\t\t}\n\t\t\tconsole.log('done');\n\t\t}\n\n\t\tvar i = g();\n\t\ti.next().value.should.equal(0);\n\t\ti.next().value.should.equal(0);\n\t\ti.next().value.should.equal(1);\n\t\ti.next().value.should.equal(2);\n\t\ti.next().value.should.equal(2);\n\t\ti.next().value.should.equal(4);\n\t})\n\n\n\t// it('works with for-in statement', function (done) {\n\t// \tdo {\n\t// \t\tvar x = \"\";\n\t\t\t\n\t// \t\tfor ( var i in {a:1, b:1} ) {\n\t// \t\t\tx += << async(i);\n\t// \t\t}\n\n\t// \t\tx.should.equal('ab');\n\t// \t\tdone();\n\t// \t}\n\t// })\n\n\n\tit('works with for-of statement', function () {\n\t\tfunction *g() {\n\t\t\tfor (var x of ['a','b','c']) {\n\t\t\t\tyield x;\n\t\t\t}\n\t\t}\n\n\t\tvar i = g();\n\t\ti.next().value.should.equal('a');\n\t\ti.next().value.should.equal('b');\n\t\ti.next().value.should.equal('c');\n\t})\n\t\n\tit('works with nested for-of statement', function () {\n\t\tfunction *g() {\n\t\t\tfor (var x of ['a','b']) {\n\t\t\t\tfor (var y of ['x','y']) {\n\t\t\t\t\tyield x+y;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tvar i = g();\n\t\ti.next().value.should.equal('ax');\n\t\ti.next().value.should.equal('ay');\n\t\ti.next().value.should.equal('bx');\n\t\ti.next().value.should.equal('by');\n\t})\n\n\tit('works with empty nested for-of statement', function () {\n\t\tfunction *g() {\n\t\t\tfor (var x of []) {\n\t\t\t\tfor (var y of ['x','y']) {\n\t\t\t\t\tyield x+y;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tvar i = g();\n\t\ti.next().done.should.exist;\n\t})\n})"]}