--[[

Copyright 2014 The Luvit Authors. All Rights Reserved.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS-IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

--]]
local fs = require('fs')
local path = require('luvi').path
require('tap')(function (test)
  test("writefile stream", function(expect)
    local stream, filePath, data, onFinish

    function onFinish()
      local fileData = fs.readFileSync(filePath)
      pcall(fs.unlinkSync, filePath)
      assert(stream.bytesWritten == 12)
      assert(fileData == data)
    end


    data = 'hello world\n'
    filePath = path.join(module.dir, 'testFileYYY.txt')
    pcall(fs.unlinkSync, filePath)
    stream = fs.createWriteStream(filePath)
    stream:write(data)
    stream:_end()
    stream:on('finish', expect(onFinish))
  end)

  -- enable test with stderr pipe is added
  --test("writefile stream fd", function(expect)
  --  local stream, data, onFinish

  --  function onFinish() assert(stream.bytesWritten == 12) end

  --  data = 'hello world\n'
  --  stream = fs.WriteStream:new(nil, { fd = 2 })
  --  stream:write(data)
  --  stream:_end()
  --  stream:on('finish', expect(onFinish))
  --end)
end)
