public class CaseConverter
public static void CaseConversion()
Console.WriteLine("Enter a string:");
string inputString = Console.ReadLine();
if (string.IsNullOrEmpty(inputString))
Console.WriteLine("Input string cannot be null or empty.");
Console.WriteLine("Choose a case conversion option:");
Console.WriteLine("1. To Upper Case");
Console.WriteLine("2. To Lower Case");
Console.WriteLine("3. To Toggle Case");
Console.WriteLine("Enter your choice (1, 2, or 3):");
string choice = Console.ReadLine();
Console.WriteLine("Upper Case: " + inputString.ToUpper());
Console.WriteLine("Lower Case: " + inputString.ToLower());
Console.WriteLine("Toggle Case: " + ToggleCase(inputString));
Console.WriteLine("Invalid choice.");
private static string ToggleCase(string input)
char[] chars = input.ToCharArray();
for (int i = 0; i < chars.Length; i++)
if (char.IsUpper(chars[i]))
chars[i] = char.ToLower(chars[i]);
else if (char.IsLower(chars[i]))
chars[i] = char.ToUpper(chars[i]);
return new string(chars);
public class CaseConverterTests
public void CaseConversion_NullOrEmptyInput_PrintsErrorMessage()
using (var consoleOutput = new StringWriter())
Console.SetOut(consoleOutput);
string input = string.Empty;
var stringReader = new StringReader(input + Environment.NewLine + "1");
Console.SetIn(stringReader);
CaseConverter.CaseConversion();
Assert.That(consoleOutput.ToString().Contains("Input string cannot be null or empty."), Is.True);
public void CaseConversion_InvalidChoice_PrintsErrorMessage()
using (var consoleOutput = new StringWriter())
Console.SetOut(consoleOutput);
var stringReader = new StringReader(input + Environment.NewLine + "4");
Console.SetIn(stringReader);
CaseConverter.CaseConversion();
Assert.That(consoleOutput.ToString().Contains("Invalid choice."), Is.True);
public void CaseConversion_ToUpper_PrintsUpperCaseString()
using (var consoleOutput = new StringWriter())
Console.SetOut(consoleOutput);
var stringReader = new StringReader(input + Environment.NewLine + "1");
Console.SetIn(stringReader);
CaseConverter.CaseConversion();
Assert.That(consoleOutput.ToString().Contains("Upper Case: TEST"), Is.True);
public void CaseConversion_ToLower_PrintsLowerCaseString()
using (var consoleOutput = new StringWriter())
Console.SetOut(consoleOutput);
var stringReader = new StringReader(input + Environment.NewLine + "2");
Console.SetIn(stringReader);
CaseConverter.CaseConversion();
Assert.That(consoleOutput.ToString().Contains("Lower Case: test"), Is.True);
public void CaseConversion_ToToggle_PrintsToggleCaseString()
using (var consoleOutput = new StringWriter())
Console.SetOut(consoleOutput);
var stringReader = new StringReader(input + Environment.NewLine + "3");
Console.SetIn(stringReader);
CaseConverter.CaseConversion();
Assert.That(consoleOutput.ToString().Contains("Toggle Case: tEST"), Is.True);
public static void Main()
new NUnitLite.AutoRun().Execute(["--noc" ]);