public TestResult Update(bool goodData, bool verbose) { var charRequest = new WoW.Messages.Characters.UpdateRequest(); WoW.Enums.Class oldClass = Class; WoW.Enums.Race oldRace = Race; WoW.Enums.Faction oldFaction = Faction; charRequest.Login = Login; Generate(goodData); charRequest.Class = Class; charRequest.Faction = Faction; charRequest.Race = Race; TestResult result = Submit("/update", "POST", charRequest, verbose, "charUpdate"); if (!result.Success) { Class = oldClass; Faction = oldFaction; Race = oldRace; } return(result); }
//Generates the Race/Class and, if not supplied, Faction public void Generate(bool goodData, WoW.Enums.Faction?faction = null) { Random random = new Random(); Enums.Faction usedFaction = faction.HasValue ? faction.Value : Faction; if (goodData) { if (usedFaction == Enums.Faction.Alliance) { switch (random.Next(3)) { case 0: Race = Enums.Race.Human; Class = _classes[random.Next(3)]; break; case 1: Race = Enums.Race.Gnome; Class = _classes[random.Next(3)]; break; case 2: Race = Enums.Race.Worgen; Class = _classes[random.Next(4)]; break; } } else { switch (random.Next(3)) { case 0: Race = Enums.Race.BloodElf; Class = _classes[random.Next(2)]; break; case 1: Race = Enums.Race.Orc; Class = _classes[random.Next(3)]; break; case 2: Race = Enums.Race.Tauren; Class = _classes[random.Next(4)]; break; } } } else { //determine the cause of failure: case 0 sets a bad class against a //race for the current faction. case 1 sets a bad race against the //current faction (class is correct) switch (random.Next(2)) { case 0: if (Faction == Enums.Faction.Alliance) { Race = Enums.Race.Human; Class = Enums.Class.Druid; } break; case 1: if (Faction == Enums.Faction.Horde) { switch (random.Next(3)) { case 0: Race = Enums.Race.Human; Class = _classes[random.Next(3)]; break; case 1: Race = Enums.Race.Gnome; Class = _classes[random.Next(3)]; break; case 2: Race = Enums.Race.Worgen; Class = _classes[random.Next(4)]; break; } } else { switch (random.Next(3)) { case 0: Race = Enums.Race.BloodElf; Class = _classes[random.Next(2)]; break; case 1: Race = Enums.Race.Orc; Class = _classes[random.Next(3)]; break; case 2: Race = Enums.Race.Tauren; Class = _classes[random.Next(4)]; break; } } break; } } }