test/specs/generic/network/message/InventoryMessage.spec.js
describe('InvMessage', () => {
const vector1 = new InvVector(InvVector.Type.BLOCK, Hash.fromBase64(Dummy.hash1));
const vector2 = new InvVector(InvVector.Type.BLOCK, Hash.fromBase64(Dummy.hash2));
const vector3 = new InvVector(InvVector.Type.TRANSACTION, Hash.fromBase64(Dummy.hash3));
it('is serializable and unserializable', () => {
const vectors = [vector1, vector2, vector3];
const msg1 = new InvMessage(vectors);
const msg2 = GetDataMessage.unserialize(msg1.serialize());
expect(msg2.vectors.length).toEqual(vectors.length);
expect(msg2.vectors[0].equals(vector1)).toBe(true);
expect(msg2.vectors[1].equals(vector2)).toBe(true);
expect(msg2.vectors[2].equals(vector3)).toBe(true);
});
it('must have well defined vectors', () => {
expect(() => {
new InvMessage(undefined);
}).toThrowError('Malformed vectors');
expect(() => {
new InvMessage([undefined]);
}).toThrowError('Malformed vectors');
expect(() => {
new InvMessage([undefined, undefined, undefined]);
}).toThrowError('Malformed vectors');
});
it('must have a length <= 1000', () => {
const vectors = [];
for (let i = 0; i < 1000; i++) {
vectors.push(vector1);
}
expect(() => {
new InvMessage(vectors);
}).not.toThrowError('Malformed vectors');
vectors.push(vector1);
expect(() => {
new InvMessage(vectors);
}).toThrowError('Malformed vectors');
});
});