From 9575ded8da83b6d8774b36316c388279fa0512cc Mon Sep 17 00:00:00 2001 From: Niko Lehto Date: Tue, 28 Jan 2020 17:00:04 +0100 Subject: [PATCH] Add util for unsigned and signed int. conversion Will be used in later commit in extended clipboard handling. --- core/util/int.js | 15 +++++++++++++++ tests/test.int.js | 16 ++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 core/util/int.js create mode 100644 tests/test.int.js diff --git a/core/util/int.js b/core/util/int.js new file mode 100644 index 00000000..001f40f2 --- /dev/null +++ b/core/util/int.js @@ -0,0 +1,15 @@ +/* + * noVNC: HTML5 VNC client + * Copyright (C) 2020 The noVNC Authors + * Licensed under MPL 2.0 (see LICENSE.txt) + * + * See README.md for usage and integration instructions. + */ + +export function toUnsigned32bit(toConvert) { + return toConvert >>> 0; +} + +export function toSigned32bit(toConvert) { + return toConvert | 0; +} diff --git a/tests/test.int.js b/tests/test.int.js new file mode 100644 index 00000000..954fd279 --- /dev/null +++ b/tests/test.int.js @@ -0,0 +1,16 @@ +/* eslint-disable no-console */ +const expect = chai.expect; + +import { toUnsigned32bit, toSigned32bit } from '../core/util/int.js'; + +describe('Integer casting', function () { + it('should cast unsigned to signed', function () { + let expected = 4294967286; + expect(toUnsigned32bit(-10)).to.equal(expected); + }); + + it('should cast signed to unsigned', function () { + let expected = -10; + expect(toSigned32bit(4294967286)).to.equal(expected); + }); +});