Sfoglia il codice sorgente

correct translation from node Buffer to byte array

d98762625 6 anni fa
parent
commit
638093d40e
3 ha cambiato i file con 7 aggiunte e 5 eliminazioni
  1. 1 2
      src/core/Dish.mjs
  2. 2 2
      src/node/NodeDish.mjs
  3. 4 1
      tests/node/tests/nodeApi.mjs

+ 1 - 2
src/core/Dish.mjs

@@ -36,7 +36,6 @@ class Dish {
      * literal input
      */
     constructor(dishOrInput=null, type = null) {
-
         this.value = [];
         this.type = Dish.BYTE_ARRAY;
 
@@ -46,7 +45,7 @@ class Dish {
             dishOrInput.hasOwnProperty("type")) {
             this.set(dishOrInput.value, dishOrInput.type);
         // input and type defined separately
-        } else if (dishOrInput && type) {
+        } else if (dishOrInput && type !== null) {
             this.set(dishOrInput, type);
         // No type declared, so infer it.
         } else if (dishOrInput) {

+ 2 - 2
src/node/NodeDish.mjs

@@ -22,9 +22,9 @@ class NodeDish extends Dish {
 
         // Allow `fs` file input:
         // Any node fs Buffers transformed to array buffer
-        // NOT Buffer.buff, as this makes a buffer of the whole object.
+        // Use Array.from as Uint8Array doesnt pass instanceof Array test
         if (Buffer.isBuffer(inputOrDish)) {
-            inputOrDish = new Uint8Array(inputOrDish).buffer;
+            inputOrDish = Array.from(inputOrDish);
             type = Dish.BYTE_ARRAY;
         }
         super(inputOrDish, type);

+ 4 - 1
tests/node/tests/nodeApi.mjs

@@ -357,6 +357,9 @@ TestRegister.addApiTests([
         const arrayBufferDish = new Dish(Buffer.from("some buffer input").buffer);
         assert.strictEqual(arrayBufferDish.type, 4);
 
+        const byteArrayDish = new Dish(Buffer.from("some buffer input"));
+        assert.strictEqual(byteArrayDish.type, 0);
+
         const JSONDish = new Dish({key: "value"});
         assert.strictEqual(JSONDish.type, 6);
     }),
@@ -364,7 +367,7 @@ TestRegister.addApiTests([
     it("Composable dish: Buffer type dishes should be converted to strings", () => {
         fs.writeFileSync("test.txt", "abc");
         const dish = new Dish(fs.readFileSync("test.txt"));
-        assert.strictEqual(dish.type, 4);
+        assert.strictEqual(dish.type, 0);
         fs.unlinkSync("test.txt");
     }),