var ConsoleStream = require("../index")
var console = require("console")
var test = require("tape")

test("console stream", function (assert) {
    var stream = ConsoleStream()

    assert.ok(stream.write)
    assert.ok(stream.end)
    assert.ok(stream.destroy)

    assert.end()
})

test("console stream destroy", function (assert) {
    var stream = ConsoleStream()

    stream.once("close", function () {
        assert.ok(true)
        assert.end()
    })

    stream.destroy()
})

test("console stream end", function (assert) {
    var old = console.log
    console.log = intercept

    var closed = false
    var stream = ConsoleStream()
    var list = []

    stream.once("close", function () {
        closed = true

        console.log = old

        assert.deepEqual(list, ["foo"])
        assert.equal(closed, true)

        assert.end()
    })

    stream.end("foo")

    function intercept(chunk) {
        list.push(chunk)

        // old.apply(this, arguments)
    }
})

test("console stream write", function (assert) {
    var old = console.log
    console.log = intercept

    var list = []
    var stream = ConsoleStream()

    stream.write("one")
    stream.write("two")
    stream.write("three")
    stream.write("four\n")
    stream.write("five\na")
    stream.write("bar")
    stream.end()

    console.log = old

    assert.deepEqual(list, [
        "onetwothreefour"
        , "five"
        , "abar"
    ])
    assert.end()

    function intercept(chunk) {
        list.push(chunk)

        // old.apply(this, arguments)
    }
})