From 5fe6688145aaf8fac2871caec2cb4172ce4615ad Mon Sep 17 00:00:00 2001 From: Jeff Schiller Date: Wed, 10 Jan 2024 21:47:00 +0900 Subject: [PATCH] Add optional boolean parameter for setLittleEndian() and setBigEndian() --- io/bytestream.js | 18 ++++++++++++------ tests/io-bytestream.spec.js | 18 ++++++++++++++++-- 2 files changed, 28 insertions(+), 8 deletions(-) diff --git a/io/bytestream.js b/io/bytestream.js index e39ae23..d08a40a 100644 --- a/io/bytestream.js +++ b/io/bytestream.js @@ -71,14 +71,20 @@ export class ByteStream { return this.littleEndian_; } - /** Big-Endian is sometimes called Motorola-style. */ - setBigEndian() { - this.littleEndian_ = false; + /** + * Big-Endian is sometimes called Motorola-style. + * @param {boolean=} The value to set. If not present, the stream is set to big-endian. + */ + setBigEndian(val = true) { + this.littleEndian_ = !val; } - /** Little-Endian is sometimes called Intel-style. */ - setLittleEndian() { - this.littleEndian_ = true; + /** + * Little-Endian is sometimes called Intel-style. + * @param {boolean=} The value to set. If not present, the stream to little-endian. + */ + setLittleEndian(val = true) { + this.littleEndian_ = val; } /** diff --git a/tests/io-bytestream.spec.js b/tests/io-bytestream.spec.js index 2a0bb1c..3882670 100644 --- a/tests/io-bytestream.spec.js +++ b/tests/io-bytestream.spec.js @@ -78,9 +78,23 @@ describe('bitjs.io.ByteStream', () => { // Stream now has 0, 1, 0, 1. const stream = new ByteStream(array.buffer); stream.setBigEndian(); - expect(stream.readNumber(2)).equals(1); + expect(stream.peekNumber(2)).equals(1); + stream.setBigEndian(false); + expect(stream.peekNumber(2)).equals(256); + stream.setBigEndian(true); + expect(stream.peekNumber(2)).equals(1); + + stream.skip(2); + stream.setLittleEndian(); - expect(stream.readNumber(2)).equals(256); + expect(stream.peekNumber(2)).equals(256); + stream.setLittleEndian(false); + expect(stream.peekNumber(2)).equals(1); + stream.setLittleEndian(true); + expect(stream.peekNumber(2)).equals(256); + + stream.skip(2); + expect(() => stream.readNumber(1)).to.throw(); });