process.mixin(require("./common"));

var cat = process.createChildProcess("cat");

var response = "";
var exit_status = -1;

cat.addListener("output", function (chunk) {
  puts("stdout: " + JSON.stringify(chunk));
  if (chunk) {
    response += chunk;
    if (response === "hello world") {
      puts("closing cat");
      cat.close();
    }
  }
});
cat.addListener("error", function (chunk) {
  puts("stderr: " + JSON.stringify(chunk));
  assert.equal(null, chunk);
});
cat.addListener("exit", function (status) {
  puts("exit event");
  exit_status = status;
});

cat.write("hello");
cat.write(" ");
cat.write("world");

process.addListener("exit", function () {
  assert.equal(0, exit_status);
  assert.equal("hello world", response);
});
