public static void Main()
var x = new NUnitLite.AutoRun().Execute(new string[] {"--test:Xceptor.TextProcessorTests", "--noc"});
Console.WriteLine("----------------------------------------------");
Console.WriteLine(x == 0 ? "All Tests Passed!": string.Format("{0} tests failed.", x));
Console.WriteLine("----------------------------------------------");
public class TextProcessor
public static int Find(string findText, string fullText, int searchStartIndex)
return fullText.IndexOf(findText, searchStartIndex) + 1;
public static string Mid(string inputText, int startPosition, int endPosition)
int length = endPosition - startPosition + 1;
string sub = inputText.Substring(startPosition - 1, length);
public class TextProcessorTests
public void Find_Function_Returns_Position_Of_Letter()
var actualReturnedPosition = TextProcessor.Find("l", "hello world", 5);
var expectedReturnedPosition = 10;
Assert.AreEqual(expectedReturnedPosition, actualReturnedPosition);
actualReturnedPosition = TextProcessor.Find("wor", "hello world", 1);
expectedReturnedPosition =7;
Assert.AreEqual(expectedReturnedPosition, actualReturnedPosition);
[TestCase("For security abc the buy price is 154.83 USD and the sell price is 151.32 USD", 35)]
[TestCase("For security def the buy price is 98.83 USD and the sell price is 94.32 USD", 35)]
[TestCase("For security ghijkl the buy price is 4.83 EUR and the sell price is 4.32 EUR", 38)]
public void Find_Function_Returns_Position_Of_First_Digit_Of_Buy_Price(string inputLine, int expectedPosition)
var expectedPosition = TextProcessor.Find("1", ,34);
Assert.AreEqual(expectedPosition, actualPosition);
public void Mid_Function_Returns_Characters_From_Middle_Of_Text_String_Given_Start_And_End_Position()
var actualReturnedCharacters = TextProcessor.Mid("hello", 2, 4);
var expectedReturnedCharacters = "ell";
Assert.AreEqual(expectedReturnedCharacters, actualReturnedCharacters);
[TestCase("For security abc the buy price is 154.83 USD and the sell price is 151.32 USD", "154.83")]
[TestCase("For security def the buy price is 98.83 USD and the sell price is 94.32 USD", "98.83")]
[TestCase("For security ghijkl the buy price is 4.83 EUR and the sell price is 4.32 EUR", "4.83")]
public void Expression_Extracts_The_Value_Of_The_Buy_Price_For_Input_Line(string inputLine, string expectedValue)
var actualValue = TextProcessor.Mid("",33, 44);
Assert.AreEqual(expectedValue, actualValue);