fix(ConstTypes): size should be same as in type
This commit is contained in:
@ -13,6 +13,9 @@ ConstArray.prototype.serialize = function(dv, src, ...inner_types) {
|
|||||||
if (dv.byteLength < size * item_size) {
|
if (dv.byteLength < size * item_size) {
|
||||||
throw new Error('too small buffer')
|
throw new Error('too small buffer')
|
||||||
}
|
}
|
||||||
|
if (src.length != size) {
|
||||||
|
throw new Error('array should be ' + size + ' elements length')
|
||||||
|
}
|
||||||
|
|
||||||
for (let i = 0; i < size; i++) {
|
for (let i = 0; i < size; i++) {
|
||||||
const item_frame = new DataView(dv.buffer, dv.byteOffset + item_size * i)
|
const item_frame = new DataView(dv.buffer, dv.byteOffset + item_size * i)
|
||||||
|
|||||||
@ -10,6 +10,9 @@ ConstDataView.prototype.serialize = function(dv, src) {
|
|||||||
if (dv.byteLength < this._size) {
|
if (dv.byteLength < this._size) {
|
||||||
throw new Error('too small buffer')
|
throw new Error('too small buffer')
|
||||||
}
|
}
|
||||||
|
if (src.byteLength != this._size) {
|
||||||
|
throw new Error('buffer should be ' + this._size + ' bytes length')
|
||||||
|
}
|
||||||
memcpy(dv, src)
|
memcpy(dv, src)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
@ -14,6 +14,9 @@ ConstString.prototype.serialize = function(dv, src) {
|
|||||||
if (dv.byteLength < encoded.byteLength) {
|
if (dv.byteLength < encoded.byteLength) {
|
||||||
throw new Error('too small buffer')
|
throw new Error('too small buffer')
|
||||||
}
|
}
|
||||||
|
if (src.length != this._size) {
|
||||||
|
throw new Error('string should be ' + this._size + ' symbols length')
|
||||||
|
}
|
||||||
|
|
||||||
memcpy(dv, encoded)
|
memcpy(dv, encoded)
|
||||||
return
|
return
|
||||||
|
|||||||
@ -14,6 +14,8 @@ describe(ConstArray.name, () => {
|
|||||||
dv = sizedDataView(sizeof(ConstArray(2), Number))
|
dv = sizedDataView(sizeof(ConstArray(2), Number))
|
||||||
expect(16).toEqual(dv.byteLength)
|
expect(16).toEqual(dv.byteLength)
|
||||||
|
|
||||||
|
expect(() => serialize(dv, [1, 2, 3], ConstArray(2), Number)).toThrow()
|
||||||
|
|
||||||
serialize(dv, [1, 2], ConstArray(2), Number)
|
serialize(dv, [1, 2], ConstArray(2), Number)
|
||||||
expectDataViewEqual(dv, expected)
|
expectDataViewEqual(dv, expected)
|
||||||
})
|
})
|
||||||
|
|||||||
@ -13,6 +13,8 @@ describe(ConstDataView.name, () => {
|
|||||||
|
|
||||||
actual = new DataView(buffer, 2, 2)
|
actual = new DataView(buffer, 2, 2)
|
||||||
|
|
||||||
|
expect(() => serialize(actual, dv, ConstDataView(1))).toThrow()
|
||||||
|
|
||||||
serialize(actual, dv, ConstDataView(2))
|
serialize(actual, dv, ConstDataView(2))
|
||||||
expectDataViewEqual(new DataView(actual.buffer), expected)
|
expectDataViewEqual(new DataView(actual.buffer), expected)
|
||||||
})
|
})
|
||||||
|
|||||||
@ -10,7 +10,8 @@ describe(ConstString.name, () => {
|
|||||||
|
|
||||||
dv = sizedDataView(5)
|
dv = sizedDataView(5)
|
||||||
|
|
||||||
serialize(dv, 'hello', ConstString(3))
|
expect(() => serialize(dv, 'hello', ConstString(3))).toThrow()
|
||||||
|
serialize(dv, 'hel', ConstString(3))
|
||||||
expectDataViewEqual(dv, expected)
|
expectDataViewEqual(dv, expected)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
@ -80,13 +80,13 @@ describe(Struct.name, () => {
|
|||||||
const token = {
|
const token = {
|
||||||
data: { name: 'sek1ro' },
|
data: { name: 'sek1ro' },
|
||||||
header: { expires: 1 },
|
header: { expires: 1 },
|
||||||
signature: sizedDataView(4),
|
signature: filledDataView([0xFF, 0xFF, 0xFF, 0xFF]),
|
||||||
}
|
}
|
||||||
const token_dv = filledDataView([
|
const token_dv = filledDataView([
|
||||||
0x00, 0x00, 0x00, 0x10, // data_head
|
0x00, 0x00, 0x00, 0x10, // data_head
|
||||||
// header
|
// header
|
||||||
0x3F, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // header.expires
|
0x3F, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // header.expires
|
||||||
0x00, 0x00, 0x00, 0x00, // signature
|
0xFF, 0xFF, 0xFF, 0xFF, // signature
|
||||||
// data
|
// data
|
||||||
0x00, 0x00, 0x00, 0x04, // data.name_head
|
0x00, 0x00, 0x00, 0x04, // data.name_head
|
||||||
// data.name
|
// data.name
|
||||||
|
|||||||
Reference in New Issue
Block a user