From 286694869b838922a98806a39950b6674b9abd5b 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. --- kasmweb/core/util/int.js | 15 +++++++++++++++ kasmweb/tests/test.int.js | 16 ++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 kasmweb/core/util/int.js create mode 100644 kasmweb/tests/test.int.js diff --git a/kasmweb/core/util/int.js b/kasmweb/core/util/int.js new file mode 100644 index 0000000..001f40f --- /dev/null +++ b/kasmweb/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/kasmweb/tests/test.int.js b/kasmweb/tests/test.int.js new file mode 100644 index 0000000..954fd27 --- /dev/null +++ b/kasmweb/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); + }); +});