Eugene Lazutkin hace 7 años
padre
commit
6c32ce1f3d
Se han modificado 4 ficheros con 81 adiciones y 2 borrados
  1. 53 0
      tests/test_demo.js
  2. 24 0
      tests/test_errors.js
  3. 2 2
      tests/test_simple.js
  4. 2 0
      tests/tests.js

+ 53 - 0
tests/test_demo.js

@@ -0,0 +1,53 @@
+'use strict';
+
+const unit = require('heya-unit');
+
+const Chain = require('../main');
+const {streamFromArray} = require('./helpers');
+const {Transform} = require('stream');
+
+unit.add(module, [
+  function test_demo(t) {
+    const async = t.startAsync('test_demo');
+
+    const getTotalFromDatabaseByKey = async x =>
+      new Promise(resolve => {
+        setTimeout(() => {
+          resolve(Math.min(x % 10, 3));
+        }, 20);
+      });
+
+    const chain = new Chain([
+        // transforms a value
+        x => x * x,
+        // returns several values
+        x => [x - 1, x, x + 1],
+        // waits for an asynchronous operation
+        async x => await getTotalFromDatabaseByKey(x),
+        // returns multiple values with a generator
+        function*(x) {
+          for (let i = x; i > 0; --i) {
+            yield i;
+          }
+          return 0;
+        },
+        // filters out even values
+        x => (x % 2 ? x : null),
+        // uses an arbitrary transform stream
+        new Transform({
+          objectMode: true,
+          transform(x, _, callback) {
+            callback(null, x + 1);
+          }
+        })
+      ]),
+      output = [];
+    chain.on('data', data => output.push(data));
+    chain.on('end', () => {
+      eval(t.TEST('t.unify(output, [2, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2])'));
+      async.done();
+    });
+
+    streamFromArray([1, 2, 3]).pipe(chain.input);
+  }
+]);

+ 24 - 0
tests/test_errors.js

@@ -0,0 +1,24 @@
+'use strict';
+
+const unit = require('heya-unit');
+
+const Chain = require('../main');
+
+unit.add(module, [
+  function test_noStreams(t) {
+    try {
+      const chain = new Chain([]);
+      t.test(false); // shouldn't be here
+    } catch (e) {
+      eval(t.TEST('e instanceof Error'));
+    }
+  },
+  function test_wrongStreams(t) {
+    try {
+      const chain = new Chain([1]);
+      t.test(false); // shouldn't be here
+    } catch (e) {
+      eval(t.TEST('e instanceof Error'));
+    }
+  }
+]);

+ 2 - 2
tests/test_simple.js

@@ -3,7 +3,7 @@
 const unit = require('heya-unit');
 
 const Chain = require('../main');
-const {streamFromArray, streamToArray} = require('./helper');
+const {streamFromArray, streamToArray} = require('./helpers');
 const {Transform} = require('stream');
 
 unit.add(module, [
@@ -49,7 +49,7 @@ unit.add(module, [
 
     const chain = new Chain([
         async x =>
-          new Promise(resolve => {
+          await new Promise(resolve => {
             setTimeout(() => resolve(x + 1), 20);
           })
       ]),

+ 2 - 0
tests/tests.js

@@ -3,5 +3,7 @@
 const unit = require('heya-unit');
 
 require('./test_simple');
+require('./test_errors');
+require('./test_demo');
 
 unit.run();