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(); });