public static void CommandLoop(BaseGradeBook gradeBook) { GradeBook = gradeBook; Quit = false; Console.WriteLine("#=======================#"); Console.WriteLine(GradeBook.Name + " : " + GradeBook.GetType().Name); Console.WriteLine("#=======================#"); Console.WriteLine(string.Empty); while (!Quit) { Console.WriteLine("What would you like to do?"); var command = Console.ReadLine().ToLower(); CommandRoute(command); } Console.WriteLine(GradeBook.Name + " has been closed."); }
public static void LoadCommand(string command) { var parts = command.Split(' '); if (parts.Length != 2) { Console.WriteLine("Command not valid, Load requires a name."); return; } var name = parts[1]; var gradeBook = BaseGradeBook.Load(name); if (gradeBook == null) { return; } GradeBookUserInterface.CommandLoop(gradeBook); }
public static void LoadCommand(string command) { var parts = command.Split(' '); if (parts.Length != 2) { Console.WriteLine("command not valid, create requires a name, type of gradebook, if it's weighted (true / false)."); return; } var name = parts[1]; var gradeBook = BaseGradeBook.Load(name); if (gradeBook == null) { return; } GradeBookUserInterface.CommandLoop(gradeBook); }
public static void CreateCommand(string command) { var parts = command.Split(' '); if (parts.Length != 4) { Console.WriteLine("Command not valid, Create requires a name, type of gradebook, if it's weighted (true / false)."); return; } var name = parts[1]; var isWeighted = false; BaseGradeBook gradeBook = null; if (bool.TryParse(parts[3], out isWeighted)) { switch (parts[2]) { case "standard": gradeBook = new StandardGradeBook(name, isWeighted); break; case "ranked": gradeBook = new RankedGradeBook(name, isWeighted); break; default: Console.WriteLine($"{parts[2]} is not a supported type of gradebook, please try again"); break; } if (gradeBook != null) { Console.WriteLine("Created gradebook {0}.", name); GradeBookUserInterface.CommandLoop(gradeBook); } } else { Console.WriteLine($"{parts[3]} cannot be coverted as true or false"); } }
public static void CreateCommand(string command) { var parts = command.Split(' '); var name = parts[1]; if (parts.Length != 4) { Console.WriteLine("Command not valid, Create requires a name, type of gradebook, if it's weighted (true / false)."); return; } bool IsWeighted; if (parts[3] == "true") { IsWeighted = true; } else { IsWeighted = false; } BaseGradeBook gradeBook = null; if (parts[2] == "standard") { gradeBook = new StandardGradeBook(name, IsWeighted); } else if (parts[2] == "ranked") { gradeBook = new RankedGradeBook(name, IsWeighted); } else { Console.WriteLine($"{0} is not a supported type of gradebook, please try again", parts[2]); } Console.WriteLine("Created gradebook {0}.", name); GradeBookUserInterface.CommandLoop(gradeBook); }
public static void CommandLoop(BaseGradeBook gradeBook) { //Random comment - testing out bitbucket integration string newVariable = string.Empty; GradeBook = gradeBook; Quit = false; Console.WriteLine("#=======================#"); Console.WriteLine(GradeBook.Name + " : " + GradeBook.GetType().Name); Console.WriteLine("#=======================#"); while (!Quit) { Console.WriteLine(string.Empty); Console.WriteLine(">> What would you like to do?"); var command = Console.ReadLine().ToLower(); CommandRoute(command); } Console.WriteLine(GradeBook.Name + " has been closed."); }
public static void CreateCommand(string command) { var parts = command.Split(' '); if (parts.Length != 4) { Console.WriteLine("Command not valid, Create requires a name, type of gradebook, if it's weighted (true / false)."); return; } var name = parts[1]; var type = parts[2]; var isWeighted = Boolean.Parse(parts[3]); BaseGradeBook gradeBook = null; switch (type) { case "standard": gradeBook = new StandardGradeBook(name, isWeighted); break; case "ranked": gradeBook = new RankedGradeBook(name, isWeighted); break; default: Console.WriteLine(String.Format("{0} is not a supported type of gradebook, please try again", type)); break; } if (gradeBook != null) { Console.WriteLine("Created gradebook {0}.", name); GradeBookUserInterface.CommandLoop(gradeBook); } }
public static void CreateCommand(string command) { var parts = command.Split(' '); if (parts.Length != 4) { Console.WriteLine("Command not valid, Create requires a name, type of gradebook, if it's weighted (true / false)."); return; } var name = parts[1]; var gradeBookType = parts[2].ToLower(); bool isWeighted; BaseGradeBook gradeBook = null; if (!Boolean.TryParse(parts[3], out isWeighted)) { Console.WriteLine($"{parts[3]} is not a boolean. Please only use 'True' or 'False'"); } switch (gradeBookType) { case "standard": gradeBook = new StandardGradeBook(name, isWeighted); break; case "ranked": gradeBook = new RankedGradeBook(name, isWeighted); break; default: Console.WriteLine($"{parts[2]} is not a supported type of gradebook, please try again"); return; } Console.WriteLine("Created gradebook {0}.", name); GradeBookUserInterface.CommandLoop(gradeBook); }
public static void CreateCommand(string command) { var parts = command.Split(' '); if (parts.Length != 4) { Console.WriteLine("Command not valid, Create requires a name, type of gradebook, if it's weighted (true / false)."); return; } var name = parts[1]; BaseGradeBook gradeBook = null; bool w = false; if (parts[3].ToLower() == "true") { w = true; } if (parts[2].ToLower() == "standard") { gradeBook = new StandardGradeBook(name, w); } else if (parts[2].ToLower() == "ranked") { gradeBook = new RankedGradeBook(name, w); } else { Console.WriteLine(parts[2] + " is not a supported type of gradebook, please try again"); } if (gradeBook != null) { Console.WriteLine("Created gradebook {0}.", name); GradeBookUserInterface.CommandLoop(gradeBook); } }
public static void CreateCommand(string command) { var parts = command.Split(' '); if (parts.Length != 4) { Console.WriteLine("Command not valid, Create requires a name, type of gradebook, if it's weighted (true / false)."); return; } var name = parts[1]; BaseGradeBook gradeBook = null /*new BaseGradeBook(name)*/; switch (parts[2]) { case "standard": { gradeBook = new StandardGradeBook(name, bool.Parse(parts[3])); break; } case "ranked": { gradeBook = new RankedGradeBook(name, bool.Parse(parts[3])); break; } default: { Console.WriteLine($"{parts[2]} is not a supported type of gradebook, please try again"); return; } } Console.WriteLine("Created gradebook {0}.", name); GradeBookUserInterface.CommandLoop(gradeBook); }
public static void CreateCommand(string command) { string formatError = "Command not valid, Create requires a name, type of gradebook, if it's weighted (true / false)."; var parts = command.Split(' '); if (parts.Length != 4) { Console.WriteLine(formatError); return; } var name = parts[1]; var gradeBookType = parts[2].ToLower(); bool isWeighted = Convert.ToBoolean(parts[3]); BaseGradeBook gradeBook = null; string typeErrorMessage = gradeBookType + " is not a supported type of gradebook, please try again"; if (gradeBookType == "standard") { gradeBook = new StandardGradeBook(name, isWeighted); } else if (gradeBookType == "ranked") { gradeBook = new RankedGradeBook(name, isWeighted); } else { Console.WriteLine(typeErrorMessage); return; } Console.WriteLine("Created gradebook {0}.", name); GradeBookUserInterface.CommandLoop(gradeBook); }
public static void CreateCommand(string command) { var parts = command.Split(' '); if (parts.Length != 4) { Console.WriteLine("Command not valid, Create requires a name, type of gradebook, if it's weighted (true / false)."); return; } string name = parts[1]; string gradeBookType = parts[2]; bool isWeighted = false; bool.TryParse(parts[3], out isWeighted); // Instantiate the gradebook. BaseGradeBook gradeBook = null; if (gradeBookType == "standard") { gradeBook = new StandardGradeBook(name, isWeighted); } else if (gradeBookType == "ranked") { gradeBook = new RankedGradeBook(name, isWeighted); } else { Console.WriteLine($"{gradeBookType} is not a supported type of gradebook, please try again"); return; } Console.WriteLine("Created gradebook {0}.", name); GradeBookUserInterface.CommandLoop(gradeBook); }
public void AddMultipleGradeBookTypeSupportToBaseGradeBookTest() { var gradebookEnum = (from assembly in AppDomain.CurrentDomain.GetAssemblies() from type in assembly.GetTypes() where type.FullName == "GradeBook.Enums.GradeBookType" select type).FirstOrDefault(); Assert.True(gradebookEnum != null, "GradeBook.Enums.GradeBookType doesn't exist. @create-gradebook-variable"); // Test if when the `GradeBookType` is `Standard` the matching `StandardGradeBook` object is returned. var standardGradeBook = (from assembly in AppDomain.CurrentDomain.GetAssemblies() from type in assembly.GetTypes() where type.Name == "StandardGradeBook" select type).FirstOrDefault(); Assert.True(standardGradeBook != null, "`GradeBook.GradeBooks.StandardGradeBook` doesn't exist. @create-gradebook-variable"); var ctor = standardGradeBook.GetConstructors().FirstOrDefault(); Assert.True(ctor != null, "`GradeBook.GradeBooks.StandardGradeBook` doesn't appear to have a constructor. @create-gradebook-variable"); var parameters = ctor.GetParameters(); object gradeBook = null; if (parameters.Count() == 2 && parameters[0].ParameterType == typeof(string) && parameters[1].ParameterType == typeof(bool)) { gradeBook = Activator.CreateInstance(standardGradeBook, "LoadTest", true); } else if (parameters.Count() == 1 && parameters[0].ParameterType == typeof(string)) { gradeBook = Activator.CreateInstance(standardGradeBook, "LoadTest"); } Assert.True(gradeBook != null, "The constructor for `GradeBook.GradeBooks.StandardGradeBook` doesn't have the expected parameters. @create-gradebook-variable"); Assert.True(gradeBook.GetType().GetProperty("Type") != null, "`GradeBook.GradeBooks.BaseGradeBook` doesn't appear to have a `Type` property. @create-gradebook-variable"); gradeBook.GetType().GetProperty("Type").SetValue(gradeBook, Enum.Parse(gradebookEnum, "Standard", true)); try { using (var file = new FileStream("LoadTest.gdbk", FileMode.Create, FileAccess.Write)) { using (var writer = new StreamWriter(file)) { var json = JsonConvert.SerializeObject(gradeBook); writer.Write(json); } } } catch (Exception ex) { Assert.True(ex != null, "Test for GradeBook.GradeBooks.BaseGradeBook.Load was unable to run. This is likely due to issues being able to read/write gradebook files to the local file system. @create-gradebook-variable"); } var actual = BaseGradeBook.Load("LoadTest"); File.Delete("LoadTest.gdbk"); Assert.True((string)actual.GetType().GetProperty("Name").GetValue(gradeBook) == "LoadTest", "`GradeBook.GradeBooks.BaseGradeBook.Load` did not properly load when the gradebook is a `StandardGradeBook`. @get-gradebooktype"); Assert.True(actual.GetType() == standardGradeBook, "`GradeBook.GradeBooks.BaseGradeBook.Load` did not properly create a `StandardGradeBook` when the loaded gradebook is a `StandardGradeBook`. @instantiate-standardgradebook"); Assert.True(actual.GetType().GetProperty("Type").GetValue(actual).ToString() == Enum.Parse(gradebookEnum, "Standard", true).ToString(), "`GradeBook.GradeBooks.BaseGradeBook.Load` did not properly set the `Type` property of gradebook to `Standard` when the gradebook is a `StandardGradeBook`. @instantiate-standardgradebook"); // Test if when the `GradeBookType` isn't set the matching `StandardGradeBook` object is returned. var esnuGradeBook = (from assembly in AppDomain.CurrentDomain.GetAssemblies() from type in assembly.GetTypes() where type.Name == "ESNUGradeBook" select type).FirstOrDefault(); if (esnuGradeBook == null) { parameters = ctor.GetParameters(); gradeBook = null; if (parameters.Count() == 2 && parameters[0].ParameterType == typeof(string) && parameters[1].ParameterType == typeof(bool)) { gradeBook = Activator.CreateInstance(standardGradeBook, "LoadTest", true); } else if (parameters.Count() == 1 && parameters[0].ParameterType == typeof(string)) { gradeBook = Activator.CreateInstance(standardGradeBook, "LoadTest"); } Assert.True(gradeBook != null, "The constructor for `GradeBook.GradeBooks.StandardGradeBook` doesn't have the expected parameters. @handle-invalid-types"); Assert.True(gradeBook.GetType().GetProperty("Type") != null, "`GradeBook.GradeBooks.BaseGradeBook` doesn't appear to have a `Type` property. @handle-invalid-types"); gradeBook.GetType().GetProperty("Type").SetValue(gradeBook, Enum.Parse(gradebookEnum, "ESNU", true)); try { using (var file = new FileStream("LoadTest.gdbk", FileMode.Create, FileAccess.Write)) { using (var writer = new StreamWriter(file)) { var json = JsonConvert.SerializeObject(gradeBook); writer.Write(json); } } } catch (Exception ex) { Assert.True(ex != null, "Test for GradeBook.GradeBooks.BaseGradeBook.Load was unable to run. This is likely due to issues being able to read/write gradebook files to the local file system. @handle-invalid-types"); } try { BaseGradeBook.Load("LoadTest"); Assert.True(1 == 1, "`GradeBook.GradeBooks.BaseGradeBook.Load` didn't throw an `InvalidOperationException` when the `GradeBookType` was not yet implimented. @handle-invalid-types"); } catch (Exception ex) { Assert.True(ex.GetType() == typeof(InvalidOperationException), "`GradeBook.GradeBooks.BaseGradeBook.Load` threw an exception, however; it was not an `InvalidOperationException` @handle-invalid-types."); Assert.True(ex.Message == "The gradebook you've attempted to load is not in a supported type of gradebook.", "`GradeBook.GradeBooks.BaseGradeBook`'s `Load` method threw the proper exception type, but didn't have the message \"The gradebook you've attempted to load is not in a supported type of gradebook.\" @handle-invalid-types"); } File.Delete("LoadTest.gdbk"); } // Test if when the `GradeBookType` is `Ranked` the matching `RankedGradeBook` object is returned. var rankedGradeBook = (from assembly in AppDomain.CurrentDomain.GetAssemblies() from type in assembly.GetTypes() where type.Name == "RankedGradeBook" select type).FirstOrDefault(); Assert.True(rankedGradeBook != null, "`GradeBook.GradeBooks.RankedGradeBook` doesn't exist. @instantiate-rankedgradebook"); ctor = rankedGradeBook.GetConstructors().FirstOrDefault(); Assert.True(ctor != null, "`GradeBook.GradeBooks.RankedGradeBook` doesn't appear to have a constructor. @instantiate-rankedgradebook"); parameters = ctor.GetParameters(); gradeBook = null; if (parameters.Count() == 2 && parameters[0].ParameterType == typeof(string) && parameters[1].ParameterType == typeof(bool)) { gradeBook = Activator.CreateInstance(rankedGradeBook, "LoadTest", true); } else if (parameters.Count() == 1 && parameters[0].ParameterType == typeof(string)) { gradeBook = Activator.CreateInstance(rankedGradeBook, "LoadTest"); } Assert.True(gradeBook != null, "The constructor for `GradeBook.GradeBooks.RankedGradeBook` doesn't have the expected parameters. @instantiate-rankedgradebook"); gradeBook.GetType().GetProperty("Type").SetValue(gradeBook, Enum.Parse(gradebookEnum, "Ranked", true)); try { using (var file = new FileStream("LoadTest.gdbk", FileMode.Create, FileAccess.Write)) { using (var writer = new StreamWriter(file)) { var json = JsonConvert.SerializeObject(gradeBook); writer.Write(json); } } } catch (Exception ex) { Assert.True(ex != null, "Test for GradeBook.GradeBooks.BaseGradeBook.Load was unable to run. This is likely due to issues being able to read/write gradebook files to the local file system. @instantiate-rankedgradebook"); } actual = BaseGradeBook.Load("LoadTest"); File.Delete("LoadTest.gdbk"); Assert.True((string)actual.GetType().GetProperty("Name").GetValue(gradeBook) == "LoadTest", "`GradeBook.GradeBooks.BaseGradeBook.Load` did not properly load when the gradebook is a `RankedGradeBook`. @instantiate-rankedgradebook @update-loads-return"); Assert.True(actual.GetType() == rankedGradeBook, "`GradeBook.GradeBooks.BaseGradeBook.Load` did not properly create a `RankedGradeBook` when the loaded gradebook is a `RankedGradeBook`. @instantiate-rankedgradebook @update-loads-return"); Assert.True(actual.GetType().GetProperty("Type").GetValue(actual).ToString() == Enum.Parse(gradebookEnum, "Ranked", true).ToString(), "`GradeBook.GradeBooks.BaseGradeBook.Load` did not properly set the `Type` property of gradebook to `Ranked` when the gradebook is a `RankedGradeBook`. @instantiate-rankedgradebook"); }
private static void InstantiateGradeBook(string type, string name, bool isWeighted, out BaseGradeBook gradeBook) { switch (type) { case nameof(GradeBookType.Standard): gradeBook = new StandardGradeBook(name, isWeighted); break; case nameof(GradeBookType.Ranked): gradeBook = new RankedGradeBook(name, isWeighted); break; default: Console.WriteLine($"{type} is not a supported type of gradebook, please try again"); gradeBook = null; return; } }