Skip to content

Commit 975d9f1

Browse files
Copilotshibayan
andcommitted
Add test cases for ConsoleDriverFactory and IConsoleDriver extensibility
Co-authored-by: shibayan <1356444+shibayan@users.noreply.github.com>
1 parent c2c7490 commit 975d9f1

1 file changed

Lines changed: 103 additions & 0 deletions

File tree

Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
using System;
2+
3+
using Sharprompt.Drivers;
4+
5+
using Xunit;
6+
7+
namespace Sharprompt.Tests;
8+
9+
public class ConsoleDriverFactoryTests
10+
{
11+
[Fact]
12+
public void ConsoleDriverFactory_DefaultFactory_IsNotNull()
13+
{
14+
Assert.NotNull(Prompt.ConsoleDriverFactory);
15+
}
16+
17+
[Fact]
18+
public void ConsoleDriverFactory_SetCustomFactory_ReturnsCustomFactory()
19+
{
20+
var originalFactory = Prompt.ConsoleDriverFactory;
21+
22+
try
23+
{
24+
var customDriver = new StubConsoleDriver();
25+
Prompt.ConsoleDriverFactory = () => customDriver;
26+
27+
var driver = Prompt.ConsoleDriverFactory();
28+
29+
Assert.Same(customDriver, driver);
30+
}
31+
finally
32+
{
33+
Prompt.ConsoleDriverFactory = originalFactory;
34+
}
35+
}
36+
37+
[Fact]
38+
public void ConsoleDriverFactory_SetNull_ThrowsArgumentNullException()
39+
{
40+
Assert.Throws<ArgumentNullException>(() => Prompt.ConsoleDriverFactory = null!);
41+
}
42+
43+
[Fact]
44+
public void ConsoleDriverFactory_AfterReset_ReturnsPreviousFactory()
45+
{
46+
var originalFactory = Prompt.ConsoleDriverFactory;
47+
48+
try
49+
{
50+
Prompt.ConsoleDriverFactory = () => new StubConsoleDriver();
51+
52+
Prompt.ConsoleDriverFactory = originalFactory;
53+
54+
Assert.Same(originalFactory, Prompt.ConsoleDriverFactory);
55+
}
56+
finally
57+
{
58+
Prompt.ConsoleDriverFactory = originalFactory;
59+
}
60+
}
61+
62+
[Fact]
63+
public void IConsoleDriver_CustomImplementation_CanBeAssigned()
64+
{
65+
var originalFactory = Prompt.ConsoleDriverFactory;
66+
67+
try
68+
{
69+
IConsoleDriver driver = new StubConsoleDriver();
70+
Prompt.ConsoleDriverFactory = () => driver;
71+
72+
var result = Prompt.ConsoleDriverFactory();
73+
74+
Assert.IsAssignableFrom<IConsoleDriver>(result);
75+
Assert.Same(driver, result);
76+
}
77+
finally
78+
{
79+
Prompt.ConsoleDriverFactory = originalFactory;
80+
}
81+
}
82+
83+
private sealed class StubConsoleDriver : IConsoleDriver
84+
{
85+
public void Dispose() { }
86+
public void Beep() { }
87+
public void Reset() { }
88+
public void ClearLine(int top) { }
89+
public ConsoleKeyInfo ReadKey() => new('\0', ConsoleKey.Enter, false, false, false);
90+
public void Write(string value, ConsoleColor color) { }
91+
public void WriteLine() { }
92+
public void SetCursorPosition(int left, int top) { }
93+
public bool KeyAvailable => false;
94+
public bool CursorVisible { set { } }
95+
public int CursorLeft => 0;
96+
public int CursorTop => 0;
97+
public int BufferWidth => 80;
98+
public int BufferHeight => 24;
99+
public int WindowWidth => 80;
100+
public int WindowHeight => 24;
101+
public Action CancellationCallback { get; set; } = () => { };
102+
}
103+
}

0 commit comments

Comments
 (0)