summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/util/int.js15
-rw-r--r--tests/test.int.js16
2 files changed, 31 insertions, 0 deletions
diff --git a/core/util/int.js b/core/util/int.js
new file mode 100644
index 0000000..001f40f
--- /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 0000000..954fd27
--- /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);
+ });
+});