using System.Collections.Generic;
using System.Threading.Tasks;
namespace Dearman_Technical_test
public ORDER_STATUS status
public DateTime? dispatchedTime
public DateTime? confirmedTime
public DateTime? rejectedTime
public DateTime? arrivalTime
public DateTime? deliveryTime
public DateTime targetArrivalStart
public DateTime targetArrivalEnd
public DateTime targetDeliveryStart
public DateTime targetDeliveryEnd
public DateTime? createdWhen
public static void Main(string[] args)
public static void Test1()
string input = "Ellen*Ripley*1234 N. Weaver St*Los Angeles~Dwayne*Hicks*123 Biehn St.*Oakland~William*Hudson*17 Parade St.*Tucson";
string expectedOutput = "<1>" + "<1-1>Ellen</1-1>" + "<1-2>Ripley</1-2>" + "<1-3>1234 N. Weaver St</1-3>" + "<1-4>Los Angeles</1-4>" + "</1>" + "<2>" + "<2-1>Dwayne</2-1>" + "<2-2>Hicks</2-2>" + "<2-3>123 Biehn St.</2-3>" + "<2-4>Oakland</2-4>" + "</2>" + "<3>" + "<3-1>William</3-1>" + "<3-2>Hudson</3-2>" + "<3-3>17 Parade St.</3-3>" + "<3-4>Tucson</3-4>" + "</3>";
string output = StringParser(input);
Assert.AreEqual(expectedOutput, output);
private static string StringParser(string input)
string[] people = input.Split('~');
Console.WriteLine(people[0]);
string[][] stringList = new string[][]{};
for (int i = 0; i < people.Length; i++)
string[] tempString = people[i].Split('*');
for (int j = 0; j < tempString.Length; j++)
stringList[i][j] = tempString[j];
string parsedString = "";
for (int i = 0; i < stringList.GetLength(i); i++)
parsedString += "\"<" + i + ">\"";
parsedString += "\"</" + i + ">\"";
throw new NotImplementedException("Test 1 - StringParser method not implemented.");
public static void Test2()
Assert.AreEqual(20, Divisor(20, 3, 33));
Assert.AreEqual(111, Divisor(333, 3, 111));
Assert.AreEqual(42.645454545454548d, Divisor(234.55, 5.5, 171));
Assert.AreEqual(77, Divisor(1232, 4, 200));
private static double Divisor(double input, double denominator, double limit)
input = input / denominator;
public static void Test3()
Assert.AreEqual(20, DivisorRecursive(20, 3, 33));
Assert.AreEqual(111, DivisorRecursive(333, 3, 111));
Assert.AreEqual(42.645454545454548d, DivisorRecursive(234.55, 5.5, 171));
Assert.AreEqual(77, DivisorRecursive(1232, 4, 200));
private static double DivisorRecursive(double input, double denominator, double limit)
input = input / denominator;
input = DivisorRecursive(input, denominator, limit);
public static void Test4()
Dictionary<int, string> dict_vals = new Dictionary<int, string>();
dict_vals.Add(520, "Tucson");
dict_vals.Add(480, "Tempe");
dict_vals.Add(602, "Phoenix");
Assert.AreEqual(dict_vals[520], "Tucson");
public static void Test5()
List<Order> order_list = new List<Order>()
{new Order{status = ORDER_STATUS.DISPATCHED}, new Order{status = ORDER_STATUS.CONFIRMED}, new Order{status = ORDER_STATUS.DROPPED_OFF, deliveryTime = new DateTime(2020, 10, 30)}, new Order{status = ORDER_STATUS.DROPPED_OFF, deliveryTime = new DateTime(2020, 7, 30)}, new Order{status = ORDER_STATUS.DROPPED_OFF, deliveryTime = new DateTime(2020, 7, 7)}, new Order{status = ORDER_STATUS.DROPPED_OFF, deliveryTime = new DateTime(2020, 11, 12)}, new Order{status = ORDER_STATUS.PICKED_UP}};
throw new NotImplementedException("Test 5 - method not implemented.");
public static Order getLast(List<Order> list)
DateTime currentDate = DateTime.Now;
DateTime firstOfMonth = new DateTime(currentDate.Year, currentDate.Month, 1);
for (int i = list.Count; i > 0 i--)
if (list[i].status == ORDER_STATUS.DROPPED_OFF)
if (list[i].deliveryTime > firstOfMonth)
public static void Test6()
List<Order> order_list = new List<Order>()
{new Order{status = ORDER_STATUS.DISPATCHED}, new Order{status = ORDER_STATUS.CONFIRMED}, new Order{status = ORDER_STATUS.DROPPED_OFF, deliveryTime = new DateTime(2020, 10, 30)}, new Order{status = ORDER_STATUS.DROPPED_OFF, deliveryTime = new DateTime(2020, 7, 30)}, new Order{status = ORDER_STATUS.DROPPED_OFF, deliveryTime = new DateTime(2020, 7, 7)}, new Order{status = ORDER_STATUS.DROPPED_OFF, deliveryTime = new DateTime(2020, 11, 12)}, new Order{status = ORDER_STATUS.PICKED_UP}};
throw new NotImplementedException("Test 6 - method not implemented.");
public static void Test7()
throw new NotImplementedException("Test 7 - method not implemented.");
public static TValue GetOrCreate<TKey, TValue>(this IDictionary<TKey, TValue> dictionary, TKey key)
if (!dictionary.TryGetValue(key, out ret))