1import ExpoRandom from '../ExpoRandom';
2import * as Random from '../Random';
3
4it(`invokes native method correctly`, async () => {
5  ExpoRandom.getRandomBase64StringAsync.mockImplementationOnce(async () => '');
6  const value = await Random.getRandomBytesAsync(0);
7  expect(value instanceof Uint8Array).toBe(true);
8  expect(ExpoRandom.getRandomBase64StringAsync).toHaveBeenLastCalledWith(0);
9});
10
11it(`returns an array with the desired number of bytes`, async () => {
12  ExpoRandom.getRandomBase64StringAsync.mockImplementationOnce(async () => 'r6ip');
13  const value = await Random.getRandomBytesAsync(3);
14  expect(value.length).toBe(3);
15});
16
17it(`asserts invalid byte count errors`, async () => {
18  await expect(Random.getRandomBytesAsync(-1)).rejects.toThrowError(TypeError);
19  await expect(Random.getRandomBytesAsync(1025)).rejects.toThrowError(TypeError);
20  await expect(Random.getRandomBytesAsync('invalid' as any)).rejects.toThrowError(TypeError);
21  await expect(Random.getRandomBytesAsync(null as any)).rejects.toThrowError(TypeError);
22  await expect(Random.getRandomBytesAsync({} as any)).rejects.toThrowError(TypeError);
23  await expect(Random.getRandomBytesAsync(NaN)).rejects.toThrowError(TypeError);
24});
25
26it(`accepts valid byte counts`, async () => {
27  await expect(Random.getRandomBytesAsync(0));
28  await expect(Random.getRandomBytesAsync(1024));
29  await expect(Random.getRandomBytesAsync(512.5));
30});
31