/** * Basic Windows Tests * Simple tests for Windows-specific functionality without complex imports */ const { detectWindowsTerminal, getWindowsTerminalCapabilities, getWindowsColorSupport, getWindowsUnicodeSupport, } = require("../../../src/tui/utils/modernTerminal.js"); describe("Basic Windows Tests", () => { const originalEnv = process.env; const originalPlatform = process.platform; beforeEach(() => { // Reset environment process.env = { ...originalEnv }; Object.defineProperty(process, "platform", { value: "win32", writable: true, }); }); afterEach(() => { process.env = originalEnv; Object.defineProperty(process, "platform", { value: originalPlatform, writable: true, }); }); describe("Windows Terminal Detection", () => { test("should detect Windows Terminal with WT_SESSION", () => { process.env.WT_SESSION = "abc123-def456"; process.env.TERM_PROGRAM = "Windows Terminal"; const isWindowsTerminal = detectWindowsTerminal(); expect(isWindowsTerminal).toBe(true); }); test("should not detect Windows Terminal without proper env vars", () => { delete process.env.WT_SESSION; delete process.env.TERM_PROGRAM; const isWindowsTerminal = detectWindowsTerminal(); expect(isWindowsTerminal).toBe(false); }); test("should not detect Windows Terminal on non-Windows platforms", () => { Object.defineProperty(process, "platform", { value: "linux" }); process.env.WT_SESSION = "test"; const isWindowsTerminal = detectWindowsTerminal(); expect(isWindowsTerminal).toBe(false); }); }); describe("Windows Terminal Capabilities", () => { test("should detect Windows Terminal capabilities", () => { process.env.WT_SESSION = "test-session"; process.env.COLORTERM = "truecolor"; const capabilities = getWindowsTerminalCapabilities(); expect(capabilities.isWindows).toBe(true); expect(capabilities.isWindowsTerminal).toBe(true); expect(capabilities.supportsUnicode).toBe(true); expect(capabilities.supportsTrueColor).toBe(true); }); test("should detect Command Prompt limitations", () => { process.env.COMSPEC = "C:\\Windows\\system32\\cmd.exe"; delete process.env.WT_SESSION; delete process.env.COLORTERM; delete process.env.TERM_PROGRAM; delete process.env.PSModulePath; const capabilities = getWindowsTerminalCapabilities(); expect(capabilities.isCommandPrompt).toBe(true); expect(capabilities.supportsUnicode).toBe(false); expect(capabilities.supportsTrueColor).toBe(false); expect(capabilities.supportsColor).toBe(true); }); test("should detect PowerShell capabilities", () => { process.env.PSModulePath = "C:\\Program Files\\PowerShell\\Modules"; delete process.env.WT_SESSION; const capabilities = getWindowsTerminalCapabilities(); expect(capabilities.isPowerShell).toBe(true); expect(capabilities.supportsUnicode).toBe(true); expect(capabilities.supportsTrueColor).toBe(false); }); }); describe("Color Support Detection", () => { test("should detect true color support in Windows Terminal", () => { process.env.WT_SESSION = "test"; process.env.COLORTERM = "truecolor"; const colorSupport = getWindowsColorSupport(); expect(colorSupport.supportsTrueColor).toBe(true); expect(colorSupport.supports256Color).toBe(true); expect(colorSupport.supportsBasicColor).toBe(true); }); test("should detect limited color support in Command Prompt", () => { process.env.COMSPEC = "C:\\Windows\\system32\\cmd.exe"; delete process.env.WT_SESSION; delete process.env.COLORTERM; delete process.env.TERM_PROGRAM; delete process.env.PSModulePath; const colorSupport = getWindowsColorSupport(); expect(colorSupport.supportsTrueColor).toBe(false); expect(colorSupport.supports256Color).toBe(false); expect(colorSupport.supportsBasicColor).toBe(true); }); }); describe("Unicode Support Detection", () => { test("should detect Unicode support in Windows Terminal", () => { process.env.WT_SESSION = "test"; const unicodeSupport = getWindowsUnicodeSupport(); expect(unicodeSupport.supportsUnicode).toBe(true); expect(unicodeSupport.supportsEmoji).toBe(true); expect(unicodeSupport.supportsBoxDrawing).toBe(true); }); test("should detect limited Unicode support in Command Prompt", () => { process.env.COMSPEC = "C:\\Windows\\system32\\cmd.exe"; delete process.env.WT_SESSION; delete process.env.COLORTERM; delete process.env.TERM_PROGRAM; delete process.env.PSModulePath; const unicodeSupport = getWindowsUnicodeSupport(); expect(unicodeSupport.supportsUnicode).toBe(false); expect(unicodeSupport.supportsEmoji).toBe(false); expect(unicodeSupport.supportsBoxDrawing).toBe(false); }); }); describe("Platform Detection", () => { test("should correctly identify Windows platform", () => { const capabilities = getWindowsTerminalCapabilities(); expect(capabilities.isWindows).toBe(true); }); test("should handle non-Windows platforms", () => { Object.defineProperty(process, "platform", { value: "darwin" }); const capabilities = getWindowsTerminalCapabilities(); expect(capabilities.isWindows).toBe(false); expect(capabilities.isWindowsTerminal).toBe(false); }); }); });