blob: ee981a157ad7619470e408176e349bcb0f40a4dc [file] [log] [blame]
Roman Reissf29762f2015-05-19 11:00:061'use strict';
Robert Mustacchi9812e312011-05-01 18:38:102/*
3 * Tests to verify we're writing signed integers correctly
4 */
Ben Noordhuis7f4aba92012-02-20 12:22:125var common = require('../common');
Robert Mustacchi9812e312011-05-01 18:38:106var ASSERT = require('assert');
7
Ben Noordhuis59a9a9b2011-11-17 13:14:438function test8(clazz) {
9 var buffer = new clazz(2);
Brian Whiteb7c23ac2011-08-09 04:40:1010
11 buffer.writeInt8(0x23, 0);
12 buffer.writeInt8(-5, 1);
Robert Mustacchi9812e312011-05-01 18:38:1013
14 ASSERT.equal(0x23, buffer[0]);
Brian Whiteb7c23ac2011-08-09 04:40:1015 ASSERT.equal(0xfb, buffer[1]);
Robert Mustacchi9812e312011-05-01 18:38:1016
17 /* Make sure we handle truncation correctly */
18 ASSERT.throws(function() {
Brian Whiteb7c23ac2011-08-09 04:40:1019 buffer.writeInt8(0xabc, 0);
Robert Mustacchi9812e312011-05-01 18:38:1020 });
21 ASSERT.throws(function() {
Brian Whiteb7c23ac2011-08-09 04:40:1022 buffer.writeInt8(0xabc, 0);
Robert Mustacchi9812e312011-05-01 18:38:1023 });
Łukasz Walukiewicz3b852d72011-11-16 12:38:0924
25 /* Make sure we handle min/max correctly */
26 buffer.writeInt8(0x7f, 0);
27 buffer.writeInt8(-0x80, 1);
28
29 ASSERT.equal(0x7f, buffer[0]);
30 ASSERT.equal(0x80, buffer[1]);
31 ASSERT.throws(function() {
32 buffer.writeInt8(0x7f + 1, 0);
33 });
34 ASSERT.throws(function() {
35 buffer.writeInt8(-0x80 - 1, 0);
36 });
Robert Mustacchi9812e312011-05-01 18:38:1037}
38
39
Ben Noordhuis59a9a9b2011-11-17 13:14:4340function test16(clazz) {
41 var buffer = new clazz(6);
Brian Whiteb7c23ac2011-08-09 04:40:1042
43 buffer.writeInt16BE(0x0023, 0);
44 buffer.writeInt16LE(0x0023, 2);
Robert Mustacchi9812e312011-05-01 18:38:1045 ASSERT.equal(0x00, buffer[0]);
46 ASSERT.equal(0x23, buffer[1]);
47 ASSERT.equal(0x23, buffer[2]);
48 ASSERT.equal(0x00, buffer[3]);
Brian Whiteb7c23ac2011-08-09 04:40:1049
50 buffer.writeInt16BE(-5, 0);
51 buffer.writeInt16LE(-5, 2);
Robert Mustacchi9812e312011-05-01 18:38:1052 ASSERT.equal(0xff, buffer[0]);
53 ASSERT.equal(0xfb, buffer[1]);
54 ASSERT.equal(0xfb, buffer[2]);
55 ASSERT.equal(0xff, buffer[3]);
56
Brian Whiteb7c23ac2011-08-09 04:40:1057 buffer.writeInt16BE(-1679, 1);
58 buffer.writeInt16LE(-1679, 3);
Robert Mustacchi9812e312011-05-01 18:38:1059 ASSERT.equal(0xf9, buffer[1]);
60 ASSERT.equal(0x71, buffer[2]);
61 ASSERT.equal(0x71, buffer[3]);
62 ASSERT.equal(0xf9, buffer[4]);
Łukasz Walukiewicz3b852d72011-11-16 12:38:0963
64 /* Make sure we handle min/max correctly */
65 buffer.writeInt16BE(0x7fff, 0);
66 buffer.writeInt16BE(-0x8000, 2);
67 ASSERT.equal(0x7f, buffer[0]);
68 ASSERT.equal(0xff, buffer[1]);
69 ASSERT.equal(0x80, buffer[2]);
70 ASSERT.equal(0x00, buffer[3]);
71 ASSERT.throws(function() {
72 buffer.writeInt16BE(0x7fff + 1, 0);
73 });
74 ASSERT.throws(function() {
75 buffer.writeInt16BE(-0x8000 - 1, 0);
76 });
77
78 buffer.writeInt16LE(0x7fff, 0);
79 buffer.writeInt16LE(-0x8000, 2);
80 ASSERT.equal(0xff, buffer[0]);
81 ASSERT.equal(0x7f, buffer[1]);
82 ASSERT.equal(0x00, buffer[2]);
83 ASSERT.equal(0x80, buffer[3]);
84 ASSERT.throws(function() {
85 buffer.writeInt16LE(0x7fff + 1, 0);
86 });
87 ASSERT.throws(function() {
88 buffer.writeInt16LE(-0x8000 - 1, 0);
89 });
Robert Mustacchi9812e312011-05-01 18:38:1090}
91
92
Ben Noordhuis59a9a9b2011-11-17 13:14:4393function test32(clazz) {
94 var buffer = new clazz(8);
Brian Whiteb7c23ac2011-08-09 04:40:1095
96 buffer.writeInt32BE(0x23, 0);
97 buffer.writeInt32LE(0x23, 4);
Robert Mustacchi9812e312011-05-01 18:38:1098 ASSERT.equal(0x00, buffer[0]);
99 ASSERT.equal(0x00, buffer[1]);
100 ASSERT.equal(0x00, buffer[2]);
101 ASSERT.equal(0x23, buffer[3]);
102 ASSERT.equal(0x23, buffer[4]);
103 ASSERT.equal(0x00, buffer[5]);
104 ASSERT.equal(0x00, buffer[6]);
105 ASSERT.equal(0x00, buffer[7]);
106
Brian Whiteb7c23ac2011-08-09 04:40:10107 buffer.writeInt32BE(-5, 0);
108 buffer.writeInt32LE(-5, 4);
Robert Mustacchi9812e312011-05-01 18:38:10109 ASSERT.equal(0xff, buffer[0]);
110 ASSERT.equal(0xff, buffer[1]);
111 ASSERT.equal(0xff, buffer[2]);
112 ASSERT.equal(0xfb, buffer[3]);
113 ASSERT.equal(0xfb, buffer[4]);
114 ASSERT.equal(0xff, buffer[5]);
115 ASSERT.equal(0xff, buffer[6]);
116 ASSERT.equal(0xff, buffer[7]);
117
Brian Whiteb7c23ac2011-08-09 04:40:10118 buffer.writeInt32BE(-805306713, 0);
119 buffer.writeInt32LE(-805306713, 4);
Robert Mustacchi9812e312011-05-01 18:38:10120 ASSERT.equal(0xcf, buffer[0]);
121 ASSERT.equal(0xff, buffer[1]);
122 ASSERT.equal(0xfe, buffer[2]);
123 ASSERT.equal(0xa7, buffer[3]);
124 ASSERT.equal(0xa7, buffer[4]);
125 ASSERT.equal(0xfe, buffer[5]);
126 ASSERT.equal(0xff, buffer[6]);
127 ASSERT.equal(0xcf, buffer[7]);
Łukasz Walukiewicz3b852d72011-11-16 12:38:09128
129 /* Make sure we handle min/max correctly */
130 buffer.writeInt32BE(0x7fffffff, 0);
131 buffer.writeInt32BE(-0x80000000, 4);
132 ASSERT.equal(0x7f, buffer[0]);
133 ASSERT.equal(0xff, buffer[1]);
134 ASSERT.equal(0xff, buffer[2]);
135 ASSERT.equal(0xff, buffer[3]);
136 ASSERT.equal(0x80, buffer[4]);
137 ASSERT.equal(0x00, buffer[5]);
138 ASSERT.equal(0x00, buffer[6]);
139 ASSERT.equal(0x00, buffer[7]);
140 ASSERT.throws(function() {
141 buffer.writeInt32BE(0x7fffffff + 1, 0);
142 });
143 ASSERT.throws(function() {
144 buffer.writeInt32BE(-0x80000000 - 1, 0);
145 });
146
147 buffer.writeInt32LE(0x7fffffff, 0);
148 buffer.writeInt32LE(-0x80000000, 4);
149 ASSERT.equal(0xff, buffer[0]);
150 ASSERT.equal(0xff, buffer[1]);
151 ASSERT.equal(0xff, buffer[2]);
152 ASSERT.equal(0x7f, buffer[3]);
153 ASSERT.equal(0x00, buffer[4]);
154 ASSERT.equal(0x00, buffer[5]);
155 ASSERT.equal(0x00, buffer[6]);
156 ASSERT.equal(0x80, buffer[7]);
157 ASSERT.throws(function() {
158 buffer.writeInt32LE(0x7fffffff + 1, 0);
159 });
160 ASSERT.throws(function() {
161 buffer.writeInt32LE(-0x80000000 - 1, 0);
162 });
Robert Mustacchi9812e312011-05-01 18:38:10163}
164
165
Ben Noordhuis59a9a9b2011-11-17 13:14:43166test8(Buffer);
Ben Noordhuis59a9a9b2011-11-17 13:14:43167test16(Buffer);
Ben Noordhuis59a9a9b2011-11-17 13:14:43168test32(Buffer);