|
1 | 1 | /** |
2 | | - * Copyright 2025 Arm Limited |
| 2 | + * Copyright 2025-2026 Arm Limited |
3 | 3 | * |
4 | 4 | * Licensed under the Apache License, Version 2.0 (the "License"); |
5 | 5 | * you may not use this file except in compliance with the License. |
@@ -85,6 +85,23 @@ describe('CpuStates', () => { |
85 | 85 | cpuStates.activate(tracker); |
86 | 86 | }); |
87 | 87 |
|
| 88 | + it('returns early from showStatesHistory when there are no active cpu states', () => { |
| 89 | + const warningMessageSpy = jest.spyOn(vscode.window, 'showWarningMessage'); |
| 90 | + // No session started => activeCpuStates is undefined |
| 91 | + cpuStates.showStatesHistory(); |
| 92 | + expect(warningMessageSpy).not.toHaveBeenCalled(); |
| 93 | + }); |
| 94 | + |
| 95 | + it('returns early from resetStatesHistory when there are no active cpu states', () => { |
| 96 | + const warningMessageSpy = jest.spyOn(vscode.window, 'showWarningMessage'); |
| 97 | + const refreshListener = jest.fn(); |
| 98 | + cpuStates.onRefresh(refreshListener); |
| 99 | + // No session started => activeCpuStates is undefined |
| 100 | + cpuStates.resetStatesHistory(); |
| 101 | + expect(warningMessageSpy).not.toHaveBeenCalled(); |
| 102 | + expect(refreshListener).not.toHaveBeenCalled(); |
| 103 | + }); |
| 104 | + |
88 | 105 | it('manages session lifecycles correctly', async () => { |
89 | 106 | cpuStates.activate(tracker); |
90 | 107 | // No active session yet |
@@ -409,6 +426,31 @@ describe('CpuStates', () => { |
409 | 426 | expect(debugConsoleOutput.find(line => line.includes('(PC=0x08000396 <myframe>, myfunction::2)'))).toBeDefined(); |
410 | 427 | }); |
411 | 428 |
|
| 429 | + it('enable cpu states command sets context key to true', async () => { |
| 430 | + const executeCommandSpy = jest.spyOn(vscode.commands, 'executeCommand').mockResolvedValue(undefined); |
| 431 | + cpuStates.activate(tracker); |
| 432 | + await cpuStates.enableCpuStates(); |
| 433 | + expect(executeCommandSpy).toHaveBeenCalledWith('setContext', 'vscode-cmsis-debugger.cpuTimerEnabled', true); |
| 434 | + }); |
| 435 | + |
| 436 | + it('disable cpu states command sets context key to false', async () => { |
| 437 | + const executeCommandSpy = jest.spyOn(vscode.commands, 'executeCommand').mockResolvedValue(undefined); |
| 438 | + cpuStates.activate(tracker); |
| 439 | + await cpuStates.disableCpuStates(); |
| 440 | + expect(executeCommandSpy).toHaveBeenCalledWith('setContext', 'vscode-cmsis-debugger.cpuTimerEnabled', false); |
| 441 | + }); |
| 442 | + |
| 443 | + it('enable cpu states sets enableCpuStates flag to true', async () => { |
| 444 | + cpuStates.activate(tracker); |
| 445 | + await cpuStates.enableCpuStates(); |
| 446 | + expect((cpuStates as unknown as { enableCpuStatesFlag: boolean }).enableCpuStatesFlag).toEqual(true); |
| 447 | + }); |
| 448 | + |
| 449 | + it('disable cpu states sets enableCpuStates flag to false', async () => { |
| 450 | + cpuStates.activate(tracker); |
| 451 | + await cpuStates.disableCpuStates(); |
| 452 | + expect((cpuStates as unknown as { enableCpuStatesFlag: boolean }).enableCpuStatesFlag).toEqual(false); |
| 453 | + }); |
412 | 454 | }); |
413 | 455 |
|
414 | 456 | describe('tests with established connection and CPU states not supported', () => { |
|
0 commit comments