1import { GDBMessage } from '../../protocol/GDBProtocol';
2import { DebugserverClient } from '../DebugserverClient';
3
4function mockSocket() {
5  return {
6    on: jest.fn(),
7    write: jest.fn(),
8  } as unknown as import('net').Socket;
9}
10
11function createClient(returnValue?: any) {
12  const client = new DebugserverClient(mockSocket());
13  client['protocolClient'].sendMessage = jest.fn(() => returnValue);
14  return client;
15}
16
17function testMessage(client: DebugserverClient, msg: GDBMessage) {
18  expect(client['protocolClient'].sendMessage).toHaveBeenCalledWith(msg);
19}
20
21describe('setMaxPacketSize', () => {
22  it(`works`, async () => {
23    const client = createClient();
24    await client.setMaxPacketSize(1024);
25    testMessage(client, { cmd: 'QSetMaxPacketSize:', args: ['1024'] });
26  });
27});
28
29describe('setWorkingDir', () => {
30  it(`works`, async () => {
31    const client = createClient();
32    await client.setWorkingDir('foo/bar');
33    testMessage(client, { cmd: 'QSetWorkingDir:', args: ['foo/bar'] });
34  });
35});
36
37describe('checkLaunchSuccess', () => {
38  it(`works`, async () => {
39    const client = createClient();
40    await client.checkLaunchSuccess();
41    testMessage(client, { cmd: 'qLaunchSuccess', args: [] });
42  });
43});
44
45describe('attachByName', () => {
46  it(`works`, async () => {
47    const client = createClient();
48    await client.attachByName('foobar');
49    testMessage(client, { cmd: 'vAttachName;666f6f626172', args: [] });
50  });
51});
52
53describe('continue', () => {
54  it(`works`, async () => {
55    const client = createClient();
56    await client.continue();
57    testMessage(client, { cmd: 'c', args: [] });
58  });
59});
60
61describe('halt', () => {
62  it(`works`, async () => {
63    const client = createClient();
64    client['protocolClient'].socket.write = jest.fn();
65    await client.halt();
66    expect(client['protocolClient'].socket.write).toBeCalled();
67  });
68});
69