eff
Version:
An extensible effect monad based on the freer monad
44 lines (37 loc) • 4.61 kB
JavaScript
;
var _ava = _interopRequireDefault(require("ava"));
var _stream = require("stream");
var _eff = require("./eff");
var _output = require("./output");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
_ava.default.cb("Put string", function (t) {
var stringToWrite = "Hello, World!";
var writtenString = "";
var writableStream = new _stream.Writable({
write: function write(chunk, encoding, callback) {
writtenString = writtenString + chunk.toString();
callback();
}
});
var application = (0, _output.putString)(stringToWrite);
(0, _eff.run)([(0, _output.interpretOutput)(writableStream)])(function () {
t.is(writtenString, stringToWrite);
t.end();
})(application);
});
_ava.default.cb("Put string line", function (t) {
var stringToWrite = "Hello, World!";
var writtenString = "";
var writableStream = new _stream.Writable({
write: function write(chunk, encoding, callback) {
writtenString = writtenString + chunk.toString();
callback();
}
});
var application = (0, _output.putStringLine)(stringToWrite);
(0, _eff.run)([(0, _output.interpretOutput)(writableStream)])(function () {
t.is(writtenString, stringToWrite + "\n");
t.end();
})(application);
});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NvdXJjZXMvb3V0cHV0LnRlc3QuanMiXSwibmFtZXMiOlsidGVzdCIsImNiIiwidCIsInN0cmluZ1RvV3JpdGUiLCJ3cml0dGVuU3RyaW5nIiwid3JpdGFibGVTdHJlYW0iLCJXcml0YWJsZSIsIndyaXRlIiwiY2h1bmsiLCJlbmNvZGluZyIsImNhbGxiYWNrIiwidG9TdHJpbmciLCJhcHBsaWNhdGlvbiIsImlzIiwiZW5kIl0sIm1hcHBpbmdzIjoiOztBQUVBOztBQUNBOztBQUVBOztBQUNBOzs7O0FBRUFBLGFBQUtDLEVBQUwsQ0FBUSxZQUFSLEVBQXNCLFVBQUFDLENBQUMsRUFBSTtBQUMxQixNQUFNQyxhQUFhLEdBQUcsZUFBdEI7QUFFQSxNQUFJQyxhQUFhLEdBQUcsRUFBcEI7QUFFQSxNQUFNQyxjQUFjLEdBQUcsSUFBSUMsZ0JBQUosQ0FBYTtBQUNuQ0MsSUFBQUEsS0FEbUMsaUJBQzdCQyxLQUQ2QixFQUN0QkMsUUFEc0IsRUFDWkMsUUFEWSxFQUNGO0FBQ2hDTixNQUFBQSxhQUFhLEdBQUdBLGFBQWEsR0FBR0ksS0FBSyxDQUFDRyxRQUFOLEVBQWhDO0FBQ0FELE1BQUFBLFFBQVE7QUFDUjtBQUprQyxHQUFiLENBQXZCO0FBT0EsTUFBTUUsV0FBVyxHQUFHLHVCQUFVVCxhQUFWLENBQXBCO0FBRUEsZ0JBQUksQ0FBQyw2QkFBZ0JFLGNBQWhCLENBQUQsQ0FBSixFQUF1QyxZQUFNO0FBQzVDSCxJQUFBQSxDQUFDLENBQUNXLEVBQUYsQ0FBS1QsYUFBTCxFQUFvQkQsYUFBcEI7QUFDQUQsSUFBQUEsQ0FBQyxDQUFDWSxHQUFGO0FBQ0EsR0FIRCxFQUdHRixXQUhIO0FBSUEsQ0FsQkQ7O0FBb0JBWixhQUFLQyxFQUFMLENBQVEsaUJBQVIsRUFBMkIsVUFBQUMsQ0FBQyxFQUFJO0FBQy9CLE1BQU1DLGFBQWEsR0FBRyxlQUF0QjtBQUVBLE1BQUlDLGFBQWEsR0FBRyxFQUFwQjtBQUVBLE1BQU1DLGNBQWMsR0FBRyxJQUFJQyxnQkFBSixDQUFhO0FBQ25DQyxJQUFBQSxLQURtQyxpQkFDN0JDLEtBRDZCLEVBQ3RCQyxRQURzQixFQUNaQyxRQURZLEVBQ0Y7QUFDaENOLE1BQUFBLGFBQWEsR0FBR0EsYUFBYSxHQUFHSSxLQUFLLENBQUNHLFFBQU4sRUFBaEM7QUFDQUQsTUFBQUEsUUFBUTtBQUNSO0FBSmtDLEdBQWIsQ0FBdkI7QUFPQSxNQUFNRSxXQUFXLEdBQUcsMkJBQWNULGFBQWQsQ0FBcEI7QUFFQSxnQkFBSSxDQUFDLDZCQUFnQkUsY0FBaEIsQ0FBRCxDQUFKLEVBQXVDLFlBQU07QUFDNUNILElBQUFBLENBQUMsQ0FBQ1csRUFBRixDQUFLVCxhQUFMLEVBQW9CRCxhQUFhLEdBQUcsSUFBcEM7QUFDQUQsSUFBQUEsQ0FBQyxDQUFDWSxHQUFGO0FBQ0EsR0FIRCxFQUdHRixXQUhIO0FBSUEsQ0FsQkQiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBAZmxvdyAqL1xuXG5pbXBvcnQgdGVzdCBmcm9tIFwiYXZhXCI7XG5pbXBvcnQgeyBXcml0YWJsZSB9IGZyb20gXCJzdHJlYW1cIjtcblxuaW1wb3J0IHsgcnVuIH0gZnJvbSBcIi4vZWZmXCI7XG5pbXBvcnQgeyBwdXRTdHJpbmcsIHB1dFN0cmluZ0xpbmUsIGludGVycHJldE91dHB1dCB9IGZyb20gXCIuL291dHB1dFwiO1xuXG50ZXN0LmNiKFwiUHV0IHN0cmluZ1wiLCB0ID0+IHtcblx0Y29uc3Qgc3RyaW5nVG9Xcml0ZSA9IFwiSGVsbG8sIFdvcmxkIVwiO1xuXG5cdGxldCB3cml0dGVuU3RyaW5nID0gXCJcIjtcblxuXHRjb25zdCB3cml0YWJsZVN0cmVhbSA9IG5ldyBXcml0YWJsZSh7XG5cdFx0d3JpdGUoY2h1bmssIGVuY29kaW5nLCBjYWxsYmFjaykge1xuXHRcdFx0d3JpdHRlblN0cmluZyA9IHdyaXR0ZW5TdHJpbmcgKyBjaHVuay50b1N0cmluZygpO1xuXHRcdFx0Y2FsbGJhY2soKTtcblx0XHR9LFxuXHR9KTtcblxuXHRjb25zdCBhcHBsaWNhdGlvbiA9IHB1dFN0cmluZyhzdHJpbmdUb1dyaXRlKTtcblxuXHRydW4oW2ludGVycHJldE91dHB1dCh3cml0YWJsZVN0cmVhbSldKSgoKSA9PiB7XG5cdFx0dC5pcyh3cml0dGVuU3RyaW5nLCBzdHJpbmdUb1dyaXRlKTtcblx0XHR0LmVuZCgpO1xuXHR9KShhcHBsaWNhdGlvbik7XG59KTtcblxudGVzdC5jYihcIlB1dCBzdHJpbmcgbGluZVwiLCB0ID0+IHtcblx0Y29uc3Qgc3RyaW5nVG9Xcml0ZSA9IFwiSGVsbG8sIFdvcmxkIVwiO1xuXG5cdGxldCB3cml0dGVuU3RyaW5nID0gXCJcIjtcblxuXHRjb25zdCB3cml0YWJsZVN0cmVhbSA9IG5ldyBXcml0YWJsZSh7XG5cdFx0d3JpdGUoY2h1bmssIGVuY29kaW5nLCBjYWxsYmFjaykge1xuXHRcdFx0d3JpdHRlblN0cmluZyA9IHdyaXR0ZW5TdHJpbmcgKyBjaHVuay50b1N0cmluZygpO1xuXHRcdFx0Y2FsbGJhY2soKTtcblx0XHR9LFxuXHR9KTtcblxuXHRjb25zdCBhcHBsaWNhdGlvbiA9IHB1dFN0cmluZ0xpbmUoc3RyaW5nVG9Xcml0ZSk7XG5cblx0cnVuKFtpbnRlcnByZXRPdXRwdXQod3JpdGFibGVTdHJlYW0pXSkoKCkgPT4ge1xuXHRcdHQuaXMod3JpdHRlblN0cmluZywgc3RyaW5nVG9Xcml0ZSArIFwiXFxuXCIpO1xuXHRcdHQuZW5kKCk7XG5cdH0pKGFwcGxpY2F0aW9uKTtcbn0pO1xuIl19