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