Skip to content

test(device-profiler): add edge case tests for JSON output #376

Description

@groupsky

Description

Several edge cases in the JSON output implementation are not currently tested.

Missing Test Scenarios

1. Port Parameter Fallback

Test when port is undefined (should default to empty string):

it('should handle undefined port in JSON output', async () => {
  await runProfileScan({
    transport: mockTransport,
    type: RegisterType.Holding,
    startAddress: 0,
    endAddress: 0,
    format: 'json',
    // port not provided
  })
  
  const output = JSON.parse(mockConsoleLog.mock.calls[0][0])
  expect(output.connection.port).toBe('')
})

2. Large Scan Performance

Test with 1000+ registers to verify memory behavior:

it('should handle large scans (1000+ registers)', async () => {
  // Mock 1000 register reads
  // Verify JSON output is valid and complete
})

3. Invalid/Malformed Data

Test robustness against edge cases:

it('should handle registers with all zeros', async () => {
  // value: Buffer.from([0x00, 0x00]) → "0000"
})

it('should handle registers with all ones', async () => {
  // value: Buffer.from([0xff, 0xff]) → "ffff"
})

it('should handle very large timing values', async () => {
  // timing: 999999 (nearly 17 minutes)
})

4. Empty Error Messages

Test behavior with falsy error values:

it('should handle empty error message strings', async () => {
  const result = {
    error: '',  // Empty string (falsy)
    errorType: 'unknown'
  }
  // Should error field be included or omitted?
})

Priority

  • Port fallback: Medium (common scenario)
  • Large scans: Low (edge case, but good to verify)
  • Malformed data: Low (defensive programming)
  • Empty errors: Low (unlikely in practice)

Files to Update

  • packages/device-profiler/src/cli.test.ts
  • packages/device-profiler/src/json-formatter.test.ts

Related

Identified in aspected review of #<PR_NUMBER>

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requesttestingTesting improvements and additions

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions