aws-crt
Version:
NodeJS/browser bindings to the aws-c-* libraries
261 lines (188 loc) • 9.59 kB
text/typescript
/*
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0.
*/
import * as eventstream from './eventstream';
jest.setTimeout(10000);
let DEFAULT_HEADER_NAME: string = "MyHeader";
test('Eventstream header - new failure, empty name', async () => {
expect(() => {eventstream.Header.newBoolean("", true);}).toThrow();
});
test('Eventstream header - new failure, too long name', async () => {
expect(() => {eventstream.Header.newBoolean("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", true);}).toThrow();
});
function checkTypeCasts(header: eventstream.Header, type: eventstream.HeaderType) {
expect(header.type).toEqual(type);
if (type != eventstream.HeaderType.BooleanTrue && type != eventstream.HeaderType.BooleanFalse) {
expect(() => {
header.asBoolean();
}).toThrow();
}
if (type != eventstream.HeaderType.Byte) {
expect(() => {
header.asByte();
}).toThrow();
}
if (type != eventstream.HeaderType.Int16) {
expect(() => {
header.asInt16();
}).toThrow();
}
if (type != eventstream.HeaderType.Int32) {
expect(() => {
header.asInt32();
}).toThrow();
}
if (type != eventstream.HeaderType.Int64) {
expect(() => {
header.asInt64();
}).toThrow();
}
if (type != eventstream.HeaderType.Timestamp) {
expect(() => {
header.asTimestamp();
}).toThrow();
}
if (type != eventstream.HeaderType.String) {
expect(() => {
header.asString();
}).toThrow();
}
if (type != eventstream.HeaderType.ByteBuffer) {
expect(() => {
header.asByteBuffer();
}).toThrow();
}
if (type != eventstream.HeaderType.UUID) {
expect(() => {
header.asUUID();
}).toThrow();
}
}
test('Eventstream header - new true boolean success', async () => {
let header : eventstream.Header = eventstream.Header.newBoolean(DEFAULT_HEADER_NAME, true);
expect(header.name).toEqual(DEFAULT_HEADER_NAME);
checkTypeCasts(header, eventstream.HeaderType.BooleanTrue);
expect(header.asBoolean()).toEqual(true);
});
test('Eventstream header - new false boolean success', async () => {
let header : eventstream.Header = eventstream.Header.newBoolean(DEFAULT_HEADER_NAME, false);
expect(header.name).toEqual(DEFAULT_HEADER_NAME);
checkTypeCasts(header, eventstream.HeaderType.BooleanFalse);
expect(header.asBoolean()).toEqual(false);
});
test('Eventstream header - new byte failure, out-of-bounds value', async () => {
expect(() => {eventstream.Header.newByte(DEFAULT_HEADER_NAME, 128);}).toThrow();
});
test('Eventstream header - new byte failure, fractional value', async () => {
expect(() => {eventstream.Header.newByte(DEFAULT_HEADER_NAME, .5);}).toThrow();
});
test('Eventstream header - new byte success', async () => {
let header : eventstream.Header = eventstream.Header.newByte(DEFAULT_HEADER_NAME, 5);
expect(header.name).toEqual(DEFAULT_HEADER_NAME);
checkTypeCasts(header, eventstream.HeaderType.Byte);
expect(header.asByte()).toEqual(5);
});
test('Eventstream header - new int16 failure, out-of-bounds value', async () => {
expect(() => {eventstream.Header.newInt16(DEFAULT_HEADER_NAME, 32768);}).toThrow();
});
test('Eventstream header - new int16 failure, fractional value', async () => {
expect(() => {eventstream.Header.newInt16(DEFAULT_HEADER_NAME, 1024.2);}).toThrow();
});
test('Eventstream header - new int16 success', async () => {
let header : eventstream.Header = eventstream.Header.newInt16(DEFAULT_HEADER_NAME, -255);
expect(header.name).toEqual(DEFAULT_HEADER_NAME);
checkTypeCasts(header, eventstream.HeaderType.Int16);
expect(header.asInt16()).toEqual(-255);
});
test('Eventstream header - new int32 failure, out-of-bounds value', async () => {
expect(() => {eventstream.Header.newInt32(DEFAULT_HEADER_NAME, Number.MAX_SAFE_INTEGER);}).toThrow();
});
test('Eventstream header - new int32 failure, fractional value', async () => {
expect(() => {eventstream.Header.newInt32(DEFAULT_HEADER_NAME, -65536.82);}).toThrow();
});
test('Eventstream header - new int32 success', async () => {
let large_int32 : number = (1 << 30) - 1;
let header : eventstream.Header = eventstream.Header.newInt32(DEFAULT_HEADER_NAME, large_int32);
expect(header.name).toEqual(DEFAULT_HEADER_NAME);
checkTypeCasts(header, eventstream.HeaderType.Int32);
expect(header.asInt32()).toEqual(large_int32);
});
test('Eventstream header - new int64 from bigint failure, out-of-bounds value', async () => {
let too_big : bigint = BigInt("9223372036854775807000453053");
expect(() => {eventstream.Header.newInt64FromBigint(DEFAULT_HEADER_NAME, too_big);}).toThrow();
});
test('Eventstream header - new int64 from bigint(9223372036854775807) success', async () => {
let large_int64 : bigint = BigInt("9223372036854775807");
let header : eventstream.Header = eventstream.Header.newInt64FromBigint(DEFAULT_HEADER_NAME, large_int64);
expect(header.name).toEqual(DEFAULT_HEADER_NAME);
checkTypeCasts(header, eventstream.HeaderType.Int64);
expect(header.asInt64()).toEqual(large_int64);
});
test('Eventstream header - new int64 from bigint(-1) success', async () => {
let int64 : bigint = BigInt("-1");
let header : eventstream.Header = eventstream.Header.newInt64FromBigint(DEFAULT_HEADER_NAME, int64);
expect(header.name).toEqual(DEFAULT_HEADER_NAME);
checkTypeCasts(header, eventstream.HeaderType.Int64);
expect(header.asInt64()).toEqual(int64);
});
test('Eventstream header - new int64 from number failure, fractional value', async () => {
expect(() => {eventstream.Header.newInt64FromNumber(DEFAULT_HEADER_NAME, Number.MAX_VALUE);}).toThrow();
});
test('Eventstream header - new int64 from number(MAX_SAFE_INTEGER) success', async () => {
let header : eventstream.Header = eventstream.Header.newInt64FromNumber(DEFAULT_HEADER_NAME, Number.MAX_SAFE_INTEGER);
expect(header.name).toEqual(DEFAULT_HEADER_NAME);
checkTypeCasts(header, eventstream.HeaderType.Int64);
expect(header.asInt64()).toEqual(BigInt(Number.MAX_SAFE_INTEGER));
});
test('Eventstream header - new int64 from number(-1) success', async () => {
let header : eventstream.Header = eventstream.Header.newInt64FromNumber(DEFAULT_HEADER_NAME, -1);
expect(header.name).toEqual(DEFAULT_HEADER_NAME);
checkTypeCasts(header, eventstream.HeaderType.Int64);
expect(header.asInt64()).toEqual(BigInt(-1));
});
test('Eventstream header - new int64 from number(-65537) success', async () => {
let header : eventstream.Header = eventstream.Header.newInt64FromNumber(DEFAULT_HEADER_NAME, -65537);
expect(header.name).toEqual(DEFAULT_HEADER_NAME);
checkTypeCasts(header, eventstream.HeaderType.Int64);
expect(header.asInt64()).toEqual(BigInt(-65537));
});
test('Eventstream header - new byte buffer success', async () => {
let testPayload : Buffer = Buffer.from("Derp", "utf-8");
let header : eventstream.Header = eventstream.Header.newByteBuffer(DEFAULT_HEADER_NAME, testPayload);
expect(header.name).toEqual(DEFAULT_HEADER_NAME);
checkTypeCasts(header, eventstream.HeaderType.ByteBuffer);
expect(header.asByteBuffer()).toEqual(Buffer.from("Derp", "utf-8"));
});
test('Eventstream header - new string success', async () => {
let header : eventstream.Header = eventstream.Header.newString(DEFAULT_HEADER_NAME, "HelloWorld");
expect(header.name).toEqual(DEFAULT_HEADER_NAME);
checkTypeCasts(header, eventstream.HeaderType.String);
expect(header.asString()).toEqual("HelloWorld");
});
test('Eventstream header - new timestamp from epoch seconds failure, bad value', async () => {
expect(() => {eventstream.Header.newTimeStampFromSecondsSinceEpoch(DEFAULT_HEADER_NAME, Number.MAX_VALUE);}).toThrow();
});
test('Eventstream header - new timestamp from epoch seconds success', async () => {
let header : eventstream.Header = eventstream.Header.newTimeStampFromSecondsSinceEpoch(DEFAULT_HEADER_NAME, Number.MAX_SAFE_INTEGER);
expect(header.name).toEqual(DEFAULT_HEADER_NAME);
checkTypeCasts(header, eventstream.HeaderType.Timestamp);
expect(header.asTimestamp()).toEqual(Number.MAX_SAFE_INTEGER);
});
test('Eventstream header - new timestamp from date success', async () => {
let someDate = new Date();
let header : eventstream.Header = eventstream.Header.newTimeStampFromDate(DEFAULT_HEADER_NAME, someDate);
expect(header.name).toEqual(DEFAULT_HEADER_NAME);
checkTypeCasts(header, eventstream.HeaderType.Timestamp);
expect(header.asTimestamp()).toEqual(someDate.getTime());
});
test('Eventstream header - new uuid failure, bad value', async () => {
expect(() => {eventstream.Header.newUUID(DEFAULT_HEADER_NAME, Buffer.from("Derp", "utf-8"));}).toThrow();
});
test('Eventstream header - new uuid success', async () => {
let uuidBuffer = new ArrayBuffer(16);
let header : eventstream.Header = eventstream.Header.newUUID(DEFAULT_HEADER_NAME, uuidBuffer);
expect(header.name).toEqual(DEFAULT_HEADER_NAME);
checkTypeCasts(header, eventstream.HeaderType.UUID);
expect(header.asUUID()).toEqual(new ArrayBuffer(16));
});