public void testImportValidData() { Jester dataCollector = new Jester(); Mock <FileContentImporter> mockImporter = new Mock <FileContentImporter>(); Ingester dataIngester = new Ingester(); dataIngester.Collector = dataCollector; dataIngester.Importer = mockImporter.Object; string[] data = new string[1]; DateTime expectedDate = new DateTime(2019, 10, 1); data[0] = "a,\"b,c\",1.0,2.0,3.0," + expectedDate + ",4.0"; string filePath = "abc.csv"; mockImporter.Setup(imp => imp.import(filePath)).Returns(data).Verifiable(); dataIngester.ingest(filePath); List <HistoricalPrecipitation> collector = dataCollector.PrecipitationHistory; Assert.IsNotEmpty(collector); Assert.IsTrue(collector.Count == 1); Assert.AreEqual(expectedDate, collector[0].RecordedDate); mockImporter.Verify(imp => imp.import(filePath), Times.Once); }
public static void clearAndReloadRoles() { Jester.clearAndReload(); Mayor.clearAndReload(); Engineer.clearAndReload(); Sheriff.clearAndReload(); Lighter.clearAndReload(); Godfather.clearAndReload(); Mafioso.clearAndReload(); Janitor.clearAndReload(); Detective.clearAndReload(); TimeMaster.clearAndReload(); Medic.clearAndReload(); Shifter.clearAndReload(); Swapper.clearAndReload(); Lovers.clearAndReload(); Seer.clearAndReload(); Morphling.clearAndReload(); Camouflager.clearAndReload(); Hacker.clearAndReload(); Child.clearAndReload(); Tracker.clearAndReload(); Vampire.clearAndReload(); Snitch.clearAndReload(); Jackal.clearAndReload(); Sidekick.clearAndReload(); Eraser.clearAndReload(); Spy.clearAndReload(); Trickster.clearAndReload(); }
public void testPredictWithNoPrecipitationData() { Jester predictor = new Jester(); Assert.IsEmpty(predictor.PrecipitationHistory); HistoricalPrecipitation prediction = predictor.predict(DateTime.Now); Assert.IsNull(prediction); }
public void testImportNoData() { Jester dataCollector = new Jester(); Mock <FileContentImporter> mockImporter = new Mock <FileContentImporter>(); Ingester dataIngester = new Ingester(); dataIngester.Collector = dataCollector; dataIngester.Importer = mockImporter.Object; string[] data = new string[0]; string filePath = "abc.csv"; mockImporter.Setup(imp => imp.import(filePath)).Returns(data).Verifiable(); dataIngester.ingest(filePath); Assert.IsEmpty(dataCollector.PrecipitationHistory); mockImporter.Verify(imp => imp.import(filePath), Times.Once); }
public static void ExeToJes(PlayerControl player) { player.myTasks.RemoveAt(0); Role.RoleDictionary.Remove(player.PlayerId); if (CustomGameOptions.OnTargetDead == OnTargetDead.Jester) { var jester = new Jester(player); var task = new GameObject("JesterTask").AddComponent <ImportantTextTask>(); task.transform.SetParent(player.transform, false); task.Text = $"{jester.ColorString}Role: {jester.Name}\nYour target was killed. Now you get voted out!\nFake Tasks:[]"; player.myTasks.Insert(0, task); } else { new Crewmate(player); } }
public void testPredictWithPrecipitationData() { DateTime expectedDate = new DateTime(2019, 2, 14); DateTime actualDate = new DateTime(2019, 2, 14); double actualPrecipitation = 8.0; double expectedPrecipitation = 8.0; Jester predictor = new Jester(); HistoricalPrecipitation prediction1 = new HistoricalPrecipitation("station", "identification", 1.0, 2.0, 3.0, DateTime.Now, 4.0); predictor.addPrecipitationData(prediction1); predictor.addPrecipitationData("radio", "station", 5.0, 6.0, 7.0, actualDate, actualPrecipitation); Assert.IsTrue(predictor.PrecipitationHistory.Count == 2); HistoricalPrecipitation precipitation = predictor.predict(actualDate); Assert.IsNotNull(precipitation); Assert.AreEqual(expectedDate, precipitation.RecordedDate); Assert.AreEqual(expectedPrecipitation, precipitation.Precipitation); }
public static void clearAndReloadRoles() { Jester.clearAndReload(); Mayor.clearAndReload(); Engineer.clearAndReload(); Sheriff.clearAndReload(); Lighter.clearAndReload(); Godfather.clearAndReload(); Mafioso.clearAndReload(); Janitor.clearAndReload(); Detective.clearAndReload(); TimeMaster.clearAndReload(); Medic.clearAndReload(); Shifter.clearAndReload(); Swapper.clearAndReload(); Lovers.clearAndReload(); Seer.clearAndReload(); Morphling.clearAndReload(); Camouflager.clearAndReload(); Spy.clearAndReload(); Child.clearAndReload(); }
public static Game SetUp() { var board = new BasePiece[8, 8]; board[0, 1] = new Knight() { Color = Color.White, Location = new Vector(0, 1) }; board[0, 6] = new Knight() { Color = Color.White, Location = new Vector(0, 6) }; board[7, 1] = new Knight() { Color = Color.Black, Location = new Vector(7, 1) }; board[7, 6] = new Knight() { Color = Color.Black, Location = new Vector(7, 6) }; board[0, 2] = new Bishop() { Color = Color.White, Location = new Vector(0, 2) }; board[0, 5] = new Bishop() { Color = Color.White, Location = new Vector(0, 5) }; board[7, 2] = new Bishop() { Color = Color.Black, Location = new Vector(7, 2) }; board[7, 5] = new Bishop() { Color = Color.Black, Location = new Vector(7, 5) }; board[0, 0] = new Rook() { Color = Color.White, Location = new Vector(0, 0) }; board[0, 7] = new Rook() { Color = Color.White, Location = new Vector(0, 7) }; board[7, 0] = new Rook() { Color = Color.Black, Location = new Vector(7, 0) }; board[7, 7] = new Rook() { Color = Color.Black, Location = new Vector(7, 7) }; board[0, 4] = new King() { Color = Color.White, Location = new Vector(0, 4) }; board[0, 3] = new Jester() { Color = Color.White, Location = new Vector(0, 3) }; board[7, 4] = new King() { Color = Color.Black, Location = new Vector(7, 4) }; board[7, 3] = new Jester() { Color = Color.Black, Location = new Vector(7, 3) }; for (int i = 0; i < 8; i++) { board[1, i] = new Pawn() { Color = Color.White, Location = new Vector(1, i) }; board[6, i] = new Pawn() { Color = Color.Black, Location = new Vector(6, i) }; } Game Game = new Game(); Game.History.Push(board); Game.Players.Enqueue(new BasePlayer() { Name = "player1", Color = Color.White }); //Game.Players.Enqueue(new BasePlayer() { Name = "player2", Color = Color.Black }); Game.Players.Enqueue(new HumanPlayer() { Name = "player2", Color = Color.Black }); return(Game); }
// Methods private static IEnumerable <string> GetResults(Role role) { switch (role) { case Vigilante _: case Veteran _: case Mafioso _: // case Pirate _: case Ambusher _: return(new[] { Vigilante.GetName(), Veteran.GetName(), Mafioso.GetName(), Ambusher.GetName() }); case Medium _: case Janitor _: case Retributionist _: // case Necromancer _: case Trapper _: return(new[] { Medium.GetName(), Janitor.GetName(), Retributionist.GetName(), Trapper.GetName() }); case Survivor _: case VampireHunter _: case Amnesiac _: // case Medusa _: case Psychic _: return(new[] { Survivor.GetName(), VampireHunter.GetName(), Amnesiac.GetName(), Psychic.GetName() }); case Spy _: case Blackmailer _: case Jailor _: case GuardianAngel _: return(new[] { Spy.GetName(), Blackmailer.GetName(), Jailor.GetName(), GuardianAngel.GetName() }); case Sheriff _: case Executioner _: case Werewolf _: // case Poisoner _: return(new[] { Sheriff.GetName(), Executioner.GetName(), Werewolf.GetName() }); case Framer _: case Vampire _: case Jester _: // case HexMaster _: return(new[] { Framer.GetName(), Vampire.GetName(), Jester.GetName() }); case Lookout _: case Forger _: // case Juggernaut _: // case CovenLeader _: return(new[] { Lookout.GetName(), Forger.GetName() }); case Escort _: case Transporter _: case Consort _: case Hypnotist _: return(new[] { Escort.GetName(), Transporter.GetName(), Consort.GetName(), Hypnotist.GetName() }); case Doctor _: case Disguiser _: case SerialKiller _: // case PotionMaster _: return(new[] { Doctor.GetName(), Disguiser.GetName(), SerialKiller.GetName() }); case Investigator _: case Consigliere _: case Mayor _: case Tracker _: // case Plaguebearer _: return(new[] { Investigator.GetName(), Consigliere.GetName(), Mayor.GetName(), Tracker.GetName() }); case Bodyguard _: case Godfather _: case Arsonist _: case Crusader _: return(new[] { Bodyguard.GetName(), Godfather.GetName(), Arsonist.GetName(), Crusader.GetName() }); } return(new string[] { }); }
public static void erasePlayerRole(byte playerId) { PlayerControl player = Helpers.playerById(playerId); if (player == null) { return; } // Crewmate roles if (player == Mayor.mayor) { Mayor.clearAndReload(); } if (player == Engineer.engineer) { Engineer.clearAndReload(); } if (player == Sheriff.sheriff) { Sheriff.clearAndReload(); } if (player == Lighter.lighter) { Lighter.clearAndReload(); } if (player == Detective.detective) { Detective.clearAndReload(); } if (player == TimeMaster.timeMaster) { TimeMaster.clearAndReload(); } if (player == Medic.medic) { Medic.clearAndReload(); } if (player == Shifter.shifter) { Shifter.clearAndReload(); } if (player == Seer.seer) { Seer.clearAndReload(); } if (player == Hacker.hacker) { Hacker.clearAndReload(); } if (player == Child.child) { Child.clearAndReload(); } if (player == Tracker.tracker) { Tracker.clearAndReload(); } if (player == Snitch.snitch) { Snitch.clearAndReload(); } if (player == Swapper.swapper) { Swapper.clearAndReload(); } if (player == Spy.spy) { Spy.clearAndReload(); } // Impostor roles if (player == Morphling.morphling) { Morphling.clearAndReload(); } if (player == Camouflager.camouflager) { Camouflager.clearAndReload(); } if (player == Godfather.godfather) { Godfather.clearAndReload(); } if (player == Mafioso.mafioso) { Mafioso.clearAndReload(); } if (player == Janitor.janitor) { Janitor.clearAndReload(); } if (player == Vampire.vampire) { Vampire.clearAndReload(); } if (player == Eraser.eraser) { Eraser.clearAndReload(); } if (player == Trickster.trickster) { Trickster.clearAndReload(); } if (player == Cleaner.cleaner) { Cleaner.clearAndReload(); } if (player == Warlock.warlock) { Warlock.clearAndReload(); } // Other roles if (player == Jester.jester) { Jester.clearAndReload(); } if (player == Lovers.lover1 || player == Lovers.lover2) // The whole Lover couple is being erased { Lovers.clearAndReload(); } if (player == Jackal.jackal) // Promote Sidekick and hence override the the Jackal or erase Jackal { if (Sidekick.promotesToJackal && Sidekick.sidekick != null && !Sidekick.sidekick.Data.IsDead) { RPCProcedure.sidekickPromotes(); } else { Jackal.clearAndReload(); } } if (player == Sidekick.sidekick) { Sidekick.clearAndReload(); } }
// Methods private static string GetResult(Role role) { switch (role) { case Investigator _: return($"{role.Owner.Data.PlayerName} gathers information about people. They must be an {Investigator.GetName()}."); case Lookout _: return($"{role.Owner.Data.PlayerName} watches who visits people at night. They must be a {Lookout.GetName()}."); case Psychic _: return($"{role.Owner.Data.PlayerName} has the sight. They must be a {Psychic.GetName()}."); case Sheriff _: return($"{role.Owner.Data.PlayerName} is a protector of the {Faction.Crew.Name}. They must be a {Sheriff.GetName()}."); case Spy _: return($"{role.Owner.Data.PlayerName} secretly watches who someone visits. They must be a {Spy.GetName()}."); case Tracker _: return($"{role.Owner.Data.PlayerName} is a skilled in the art of tracking. They must be a {Tracker.GetName()}."); case Jailor _: return($"{role.Owner.Data.PlayerName} detains people at night. They must be a {Jailor.GetName()}."); case VampireHunter _: return($"{role.Owner.Data.PlayerName} tracks Vampires. They must be a {VampireHunter.GetName()}!"); case Veteran _: return($"{role.Owner.Data.PlayerName} is a paranoid war hero. They must be a {Veteran.GetName()}."); case Vigilante _: return($"{role.Owner.Data.PlayerName} will bend the law to enact justice. They must be a {Vigilante.GetName()}."); case Bodyguard _: return($"{role.Owner.Data.PlayerName} is a trained protector. They must be a {Bodyguard.GetName()}."); case Doctor _: return($"{role.Owner.Data.PlayerName} is a professional surgeon. They must be a {Doctor.GetName()}."); case Crusader _: return($"{role.Owner.Data.PlayerName} is a divine protector. They must be a {Crusader.GetName()}."); case Trapper _: return($"{role.Owner.Data.PlayerName} is waiting for a big catch. They must be a {Trapper.GetName()}."); case Escort _: return($"{role.Owner.Data.PlayerName} is a beautiful person working for the {Faction.Crew.Name}. They must be an {Escort.GetName()}."); case Mayor _: return($"{role.Owner.Data.PlayerName} is the leader of the {Faction.Crew.Name}. They must be the {Mayor.GetName()}."); case Medium _: return($"{role.Owner.Data.PlayerName} speaks with the dead. They must be a {Medium.GetName()}."); case Retributionist _: return($"{role.Owner.Data.PlayerName} wields mystical powers. They must be a {Retributionist.GetName()}."); case Transporter _: return($"{role.Owner.Data.PlayerName} specializes in transportation. They must be a {Transporter.GetName()}."); case Disguiser _: return($"{role.Owner.Data.PlayerName} makes other people appear to be someone they're not. They must be a {Disguiser.GetName()}"); case Forger _: return($"{role.Owner.Data.PlayerName} is good at forging documents. They must be a {Forger.GetName()}."); case Framer _: return($"{role.Owner.Data.PlayerName} has a desire to deceive. They must be a {Framer.GetName()}!"); case Hypnotist _: return($"{role.Owner.Data.PlayerName} is skilled at disrupting others. They must be a {Hypnotist.GetName()}."); case Janitor _: return($"{role.Owner.Data.PlayerName} cleans up dead bodies. They must be a {Janitor.GetName()}."); case Ambusher _: return($"{role.Owner.Data.PlayerName} lies in wait. They must be an {Ambusher.GetName()}."); case Godfather _: return($"{role.Owner.Data.PlayerName} is the leader of the {Faction.Mafia.Name}. They must be the {Godfather.GetName()}."); case Mafioso _: return($"{role.Owner.Data.PlayerName} does the {Godfather.GetName()}'s dirty work. They must be a {Mafioso.GetName()}."); case Blackmailer _: return($"{role.Owner.Data.PlayerName} uses information to silence people. They must be a {Blackmailer.GetName()}."); case Consigliere _: return($"{role.Owner.Data.PlayerName} gathers information for the {Faction.Mafia.Name}. They must be a {Consigliere.GetName()}."); case Consort _: return($"{role.Owner.Data.PlayerName} is a beautiful person working for the {Faction.Mafia.Name}. They must be a {Consort.GetName()}."); case Amnesiac _: return($"{role.Owner.Data.PlayerName} does not remember their role. They must be an {Amnesiac.GetName()}."); case GuardianAngel _: return($"{role.Owner.Data.PlayerName} is watching over someone. They must be a {GuardianAngel.GetName()}."); case Survivor _: return($"{role.Owner.Data.PlayerName} simply wants to live. They must be a {Survivor.GetName()}."); case Vampire _: return($"{role.Owner.Data.PlayerName} drinks blood. They must be a {Vampire.GetName()}!"); case Executioner _: return($"{role.Owner.Data.PlayerName} wants someone to be lynched at any cost. They must be an {Executioner.GetName()}."); case Jester _: return($"{role.Owner.Data.PlayerName} wants to be lynched. They must be a {Jester.GetName()}."); case Witch _: return($"{role.Owner.Data.PlayerName} casts spells on people. They must be a {Witch.GetName()}."); case Arsonist _: return($"{role.Owner.Data.PlayerName} likes to watch things burn. They must be an {Arsonist.GetName()}."); case SerialKiller _: return($"{role.Owner.Data.PlayerName} wants to kill everyone. They must be a {SerialKiller.GetName()}"); case Werewolf _: return($"{role.Owner.Data.PlayerName} howls at the moon. They must be a {Werewolf.GetName()}."); default: return("No special role found."); } }
public static void jackalCreatesSidekick(byte targetId) { foreach (PlayerControl player in PlayerControl.AllPlayerControls) { if (player.PlayerId == targetId) { if (!Jackal.canCreateSidekickFromImpostor && player.Data.IsImpostor) { Jackal.fakeSidekick = player; return; } Sidekick.sidekick = player; player.RemoveInfected(); // Crewmate roles if (player == Jester.jester) { Jester.clearAndReload(); } if (player == Mayor.mayor) { Mayor.clearAndReload(); } if (player == Engineer.engineer) { Engineer.clearAndReload(); } if (player == Sheriff.sheriff) { Sheriff.clearAndReload(); } if (player == Lighter.lighter) { Lighter.clearAndReload(); } if (player == Detective.detective) { Detective.clearAndReload(); } if (player == TimeMaster.timeMaster) { TimeMaster.clearAndReload(); } if (player == Medic.medic) { Medic.clearAndReload(); } if (player == Shifter.shifter) { Shifter.clearAndReload(); } if (player == Seer.seer) { Seer.clearAndReload(); } if (player == Spy.spy) { Spy.clearAndReload(); } if (player == Child.child) { Child.clearAndReload(); } if (player == Tracker.tracker) { Tracker.clearAndReload(); } if (player == BountyHunter.bountyHunter) { BountyHunter.clearAndReload(); } if (player == Snitch.snitch) { Snitch.clearAndReload(); } if (player == Swapper.swapper) { Swapper.clearAndReload(); } // Impostor roles if (player == Morphling.morphling) { Morphling.clearAndReload(); } if (player == Camouflager.camouflager) { Camouflager.clearAndReload(); } if (player == Godfather.godfather) { Godfather.clearAndReload(); } if (player == Mafioso.mafioso) { Mafioso.clearAndReload(); } if (player == Janitor.janitor) { Janitor.clearAndReload(); } if (player == Vampire.vampire) { Vampire.clearAndReload(); } // The Sidekick stays a part of the lover couple! if (PlayerControl.LocalPlayer == null) { return; } if (PlayerControl.LocalPlayer == player) { //Only the Lover keeps his ImportantTextTask Helpers.removeTasksFromPlayer(player, player != Lovers.lover1 && player != Lovers.lover2); var task = new GameObject("RoleTask").AddComponent <ImportantTextTask>(); task.transform.SetParent(player.transform, false); task.Text = "[00B4EBFF]Sidekick: Help your Jackal to kill everyone"; player.myTasks.Insert(0, task); } return; } } }
public static void eraseAllRoles(this PlayerControl player) { foreach (var t in RoleData.allRoleTypes) { t.Value.GetMethod("eraseRole", BindingFlags.Public | BindingFlags.Static)?.Invoke(null, new object[] { player }); } // Crewmate roles if (player.isRole(RoleType.Mayor)) { Mayor.clearAndReload(); } if (player.isRole(RoleType.Engineer)) { Engineer.clearAndReload(); } if (player.isRole(RoleType.Detective)) { Detective.clearAndReload(); } if (player.isRole(RoleType.TimeMaster)) { TimeMaster.clearAndReload(); } if (player.isRole(RoleType.Medic)) { Medic.clearAndReload(); } if (player.isRole(RoleType.Shifter)) { Shifter.clearAndReload(); } if (player.isRole(RoleType.Seer)) { Seer.clearAndReload(); } if (player.isRole(RoleType.Hacker)) { Hacker.clearAndReload(); } if (player.isRole(RoleType.Tracker)) { Tracker.clearAndReload(); } if (player.isRole(RoleType.Snitch)) { Snitch.clearAndReload(); } if (player.isRole(RoleType.Swapper)) { Swapper.clearAndReload(); } if (player.isRole(RoleType.Spy)) { Spy.clearAndReload(); } if (player.isRole(RoleType.SecurityGuard)) { SecurityGuard.clearAndReload(); } if (player.isRole(RoleType.Bait)) { Bait.clearAndReload(); } if (player.isRole(RoleType.Medium)) { Medium.clearAndReload(); } // Impostor roles if (player.isRole(RoleType.Morphling)) { Morphling.clearAndReload(); } if (player.isRole(RoleType.Camouflager)) { Camouflager.clearAndReload(); } if (player.isRole(RoleType.Godfather)) { Godfather.clearAndReload(); } if (player.isRole(RoleType.Mafioso)) { Mafioso.clearAndReload(); } if (player.isRole(RoleType.Janitor)) { Janitor.clearAndReload(); } if (player.isRole(RoleType.Vampire)) { Vampire.clearAndReload(); } if (player.isRole(RoleType.Eraser)) { Eraser.clearAndReload(); } if (player.isRole(RoleType.Trickster)) { Trickster.clearAndReload(); } if (player.isRole(RoleType.Cleaner)) { Cleaner.clearAndReload(); } if (player.isRole(RoleType.Warlock)) { Warlock.clearAndReload(); } if (player.isRole(RoleType.Witch)) { Witch.clearAndReload(); } if (player.isRole(RoleType.Assassin)) { Assassin.clearAndReload(); } if (player.isRole(RoleType.EvilHacker)) { EvilHacker.clearAndReload(); } // Other roles if (player.isRole(RoleType.Jester)) { Jester.clearAndReload(); } if (player.isRole(RoleType.Arsonist)) { Arsonist.clearAndReload(); } if (player.isRole(RoleType.Sidekick)) { Sidekick.clearAndReload(); } if (player.isRole(RoleType.BountyHunter)) { BountyHunter.clearAndReload(); } if (player.isRole(RoleType.Vulture)) { Vulture.clearAndReload(); } if (player.isRole(RoleType.Lawyer)) { Lawyer.clearAndReload(); } if (player.isRole(RoleType.Pursuer)) { Pursuer.clearAndReload(); } if (Guesser.isGuesser(player.PlayerId)) { Guesser.clear(player.PlayerId); } if (player.isRole(RoleType.Jackal)) { // Promote Sidekick and hence override the the Jackal or erase Jackal if (Sidekick.promotesToJackal && Sidekick.sidekick != null && Sidekick.sidekick.isAlive()) { RPCProcedure.sidekickPromotes(); } else { Jackal.clearAndReload(); } } }