summaryrefslogtreecommitdiff
path: root/cli/tests/node_compat/test/parallel/test-stream-transform-final.js
diff options
context:
space:
mode:
authorYoshiya Hinosawa <stibium121@gmail.com>2023-02-21 00:35:04 +0900
committerGitHub <noreply@github.com>2023-02-20 16:35:04 +0100
commit6915a9b7a701dde0e1078867961c9a91811c1850 (patch)
treee6822f2b8400c7c7941d3cb9ace59842389b5bc9 /cli/tests/node_compat/test/parallel/test-stream-transform-final.js
parenta1cd2a5915c13f6a9b8eafa3807e143a02616bc1 (diff)
test(ext/node): more node compat tests (#17827)
This PR adds the remaining ~650 Node.js compat test cases from std/node. Among these 650 cases, about 130 cases are now failing. These failing cases are prefixed with `TODO:` in `tests/node_compat/config.json`. These will be addressed in later PRs.
Diffstat (limited to 'cli/tests/node_compat/test/parallel/test-stream-transform-final.js')
-rw-r--r--cli/tests/node_compat/test/parallel/test-stream-transform-final.js119
1 files changed, 119 insertions, 0 deletions
diff --git a/cli/tests/node_compat/test/parallel/test-stream-transform-final.js b/cli/tests/node_compat/test/parallel/test-stream-transform-final.js
new file mode 100644
index 000000000..9bc9ffec7
--- /dev/null
+++ b/cli/tests/node_compat/test/parallel/test-stream-transform-final.js
@@ -0,0 +1,119 @@
+// deno-fmt-ignore-file
+// deno-lint-ignore-file
+
+// Copyright Joyent and Node contributors. All rights reserved. MIT license.
+// Taken from Node 18.12.1
+// This file is automatically generated by "node/_tools/setup.ts". Do not modify this file manually
+
+'use strict';
+const common = require('../common');
+const assert = require('assert');
+
+const stream = require('stream');
+let state = 0;
+
+
+// What you do:
+//
+// const stream = new stream.Transform({
+// transform: function transformCallback(chunk, _, next) {
+// // part 1
+// this.push(chunk);
+// //part 2
+// next();
+// },
+// final: function endCallback(done) {
+// // part 1
+// process.nextTick(function () {
+// // part 2
+// done();
+// });
+// },
+// flush: function flushCallback(done) {
+// // part 1
+// process.nextTick(function () {
+// // part 2
+// done();
+// });
+// }
+// });
+// t.on('data', dataListener);
+// t.on('end', endListener);
+// t.on('finish', finishListener);
+// t.write(1);
+// t.write(4);
+// t.end(7, endMethodCallback);
+//
+// The order things are called
+
+// 1. transformCallback part 1
+// 2. dataListener
+// 3. transformCallback part 2
+// 4. transformCallback part 1
+// 5. dataListener
+// 6. transformCallback part 2
+// 7. transformCallback part 1
+// 8. dataListener
+// 9. transformCallback part 2
+// 10. finalCallback part 1
+// 11. finalCallback part 2
+// 12. flushCallback part 1
+// 13. finishListener
+// 14. endMethodCallback
+// 15. flushCallback part 2
+// 16. endListener
+
+const t = new stream.Transform({
+ objectMode: true,
+ transform: common.mustCall(function(chunk, _, next) {
+ // transformCallback part 1
+ assert.strictEqual(++state, chunk);
+ this.push(state);
+ // transformCallback part 2
+ assert.strictEqual(++state, chunk + 2);
+ process.nextTick(next);
+ }, 3),
+ final: common.mustCall(function(done) {
+ state++;
+ // finalCallback part 1
+ assert.strictEqual(state, 10);
+ setTimeout(function() {
+ state++;
+ // finalCallback part 2
+ assert.strictEqual(state, 11);
+ done();
+ }, 100);
+ }, 1),
+ flush: common.mustCall(function(done) {
+ state++;
+ // flushCallback part 1
+ assert.strictEqual(state, 12);
+ process.nextTick(function() {
+ state++;
+ // flushCallback part 2
+ assert.strictEqual(state, 13);
+ done();
+ });
+ }, 1)
+});
+t.on('finish', common.mustCall(function() {
+ state++;
+ // finishListener
+ assert.strictEqual(state, 15);
+}, 1));
+t.on('end', common.mustCall(function() {
+ state++;
+ // end event
+ assert.strictEqual(state, 16);
+}, 1));
+t.on('data', common.mustCall(function(d) {
+ // dataListener
+ assert.strictEqual(++state, d + 1);
+}, 3));
+t.write(1);
+t.write(4);
+t.end(7, common.mustCall(function() {
+ state++;
+ // endMethodCallback
+ assert.strictEqual(state, 14);
+}, 1));