diff --git a/util/stream.js b/util/stream.js index b02752cf..d61df9aa 100644 --- a/util/stream.js +++ b/util/stream.js @@ -3,12 +3,12 @@ var guid = 0, noop = function() {}, HALT = {} function createStream() { function stream() { - if (arguments.length > 0) updateStream(stream, arguments[0], undefined) + if (arguments.length > 0 && arguments[0] !== HALT) updateStream(stream, arguments[0], undefined) return stream._state.value } initStream(stream, arguments) - if (arguments.length > 0) updateStream(stream, arguments[0], undefined) + if (arguments.length > 0 && arguments[0] !== HALT) updateStream(stream, arguments[0], undefined) return stream } @@ -23,7 +23,7 @@ function initStream(stream, args) { error: {get: function() { if (!stream._state.errorStream) { var errorStream = function() { - if (arguments.length > 0) updateStream(stream, undefined, arguments[0]) + if (arguments.length > 0 && arguments[0] !== HALT) updateStream(stream, undefined, arguments[0]) return stream._state.error } initStream(errorStream, []) diff --git a/util/tests/test-stream.js b/util/tests/test-stream.js index 22e0488c..e0ca9260 100644 --- a/util/tests/test-stream.js +++ b/util/tests/test-stream.js @@ -458,6 +458,20 @@ o.spec("stream", function() { o(mapped()).equals("undefined") }) + o("does not run when initialized w/ HALT", function() { + var stream = Stream.stream(Stream.HALT) + var mapped = stream.run(function(value) {return 123}) + + o(mapped()).equals(undefined) + }) + o("does not run when set to HALT", function() { + var stream = Stream.stream() + var mapped = stream.run(function(value) {return 123}) + + stream(Stream.HALT) + + o(mapped()).equals(undefined) + }) o("works with default undefined value", function() { var stream = Stream.stream(undefined) var mapped = stream.run(function(value) {return String(value)})