public void GetOrCreate_Existing_AreEqual() { var info = new BotInfo("Engine1", 0); var bots = new Bots(); bots.Add(new Bot() { Info = new BotInfo("Engine1", 0, true) }); var act = bots.GetOrCreate(info); Assert.AreEqual(1, bots.Count, "bots.Count"); Assert.AreEqual("Engine1", act.Info.Name, "Name"); Assert.AreEqual(false, act.Info.Inactive, "Inactive"); }
private MethodInfo GetMainMethod(BotInfo info) { var exe = BotLocations[info].GetFiles("*.exe").FirstOrDefault(); if(exe != null) { var assembly = Assembly.LoadFile(exe.FullName); var program = assembly.GetTypes().FirstOrDefault(tp => tp.GetMethod("Main", BindingFlags.Public|BindingFlags.NonPublic|BindingFlags.Static) != null); if(program != null) { var main = program.GetMethod("Main", BindingFlags.Public|BindingFlags.NonPublic|BindingFlags.Static); return main; } } return null; }
public static bool TryParse(string dir, out BotInfo info) { var match = DirectoryPattern.Match(dir ?? String.Empty); if (match.Success) { var inactive = !String.IsNullOrEmpty(match.Groups["disabled"].Value); var name = match.Groups["name"].Value; var version = String.IsNullOrEmpty(match.Groups["version"].Value) ? 0 : Int32.Parse(match.Groups["version"].Value); info = new BotInfo(name, version, inactive); return true; } else { info = default(BotInfo); return false; } }
public static bool TryCreate(DirectoryInfo dir, out BotInfo info) { return TryParse(dir.Name, out info); }