Exemple #1
0
        public async Task GetMatches_MissingPlayer()
        {
            var query = new GetMatches();

            await Global.Session.Query(query);

            Assert.Fail("An exception should have been thrown");
        }
Exemple #2
0
        public void GetConstructedUri_NoParamaters_MatchesExpected()
        {
            var query = new GetMatches();

            var uri = query.GetConstructedUri();

            Assert.AreEqual($"stats/h5/players/{null}/matches{null}", uri);
        }
        public void GetConstructedUri_NoParamaters_MatchesExpected()
        {
            var query = new GetMatches();

            var uri = query.GetConstructedUri();

            Assert.AreEqual(string.Format(BaseUri, null, null), uri);
        }
Exemple #4
0
        public void GetConstructedUri_NoParameters_MatchesExpected()
        {
            var query = new GetMatches();

            var uri = query.GetConstructedUri();

            Assert.AreEqual($"stats/h5/players/{null}/matches{null}", uri);
        }
        public void GetConstructedUri_Skip_MatchesExpected(int skip)
        {
            var query = new GetMatches()
                .Skip(skip);

            var uri = query.GetConstructedUri();

            Assert.AreEqual(string.Format(BaseUri, null, $"?start={skip}"), uri);
        }
        public void GetConstructedUri_InGameModes_MatchesExpected(Enumeration.GameMode gameMode1, Enumeration.GameMode gameMode2)
        {
            var query = new GetMatches()
                .InGameModes(new List<Enumeration.GameMode> {gameMode1, gameMode2});

            var uri = query.GetConstructedUri();

            Assert.AreEqual(string.Format(BaseUri, null, $"?modes={gameMode1},{gameMode2}"), uri);
        }
        public void GetConstructedUri_InGameMode_MatchesExpected(Enumeration.GameMode gameMode)
        {
            var query = new GetMatches()
                .InGameMode(gameMode);

            var uri = query.GetConstructedUri();

            Assert.AreEqual(string.Format(BaseUri, null, $"?modes={gameMode}" ), uri);
        }
        public void GetConstructedUri_ForPlayer_MatchesExpected(string gamertag)
        {
            var query = new GetMatches()
                .ForPlayer(gamertag);

            var uri = query.GetConstructedUri();

            Assert.AreEqual(string.Format(BaseUri, gamertag, null), uri);
        }
Exemple #9
0
        public async Task GetMatches_IsSerializable(string gamertag)
        {
            var query = new GetMatches()
                        .ForPlayer(gamertag);

            var result = await Global.Session.Query(query);

            SerializationUtility <MatchSet> .AssertRoundTripSerializationIsPossible(result);
        }
Exemple #10
0
        public async Task GetMatches_DoesNotThrow(string gamertag)
        {
            var query = new GetMatches()
                        .ForPlayer(gamertag);

            var result = await Global.Session.Query(query);

            Assert.IsInstanceOf(typeof(MatchSet), result);
        }
Exemple #11
0
        public void GetConstructedUri_Take_MatchesExpected(int take)
        {
            var query = new GetMatches()
                        .Take(take);

            var uri = query.GetConstructedUri();

            Assert.AreEqual($"stats/h5/players/{null}/matches?count={take}", uri);
        }
Exemple #12
0
        public async Task GetMatches_InvalidGamertag(string gamertag)
        {
            var query = new GetMatches()
                        .ForPlayer(gamertag);

            await Global.Session.Query(query);

            Assert.Fail("An exception should have been thrown");
        }
Exemple #13
0
        public void GetConstructedUri_ForPlayer_MatchesExpected(string gamertag)
        {
            var query = new GetMatches()
                .ForPlayer(gamertag);

            var uri = query.GetConstructedUri();

            Assert.AreEqual($"stats/h5/players/{gamertag}/matches{null}", uri);
        }
Exemple #14
0
        public void GetConstructedUri_InGameMode_MatchesExpected(Enumeration.GameMode gameMode)
        {
            var query = new GetMatches()
                .InGameMode(gameMode);

            var uri = query.GetConstructedUri();

            Assert.AreEqual($"stats/h5/players/{null}/matches?modes={gameMode}", uri);
        }
Exemple #15
0
        public async Task <MatchSet> GetMatchesForPlayer(string gamertag, int start = 0, int count = 10, params Enumeration.GameMode[] gameModes)
        {
            var query = new GetMatches().ForPlayer(gamertag).Skip(start).Take(count);

            if (gameModes != null && gameModes.Length > 0)
            {
                if (gameModes.Length == 1)
                {
                    query.InGameMode(gameModes[0]);
                }
                else
                {
                    query.InGameModes(gameModes.ToList());
                }
            }

            var matches = await _session.Query(query);

            foreach (var match in matches.Results)
            {
                match.Map = await _metadataRepository.GetMap(match.MapId);

                if (match.MapVariant != null && match.MapVariant.ResourceType == Enumeration.ResourceType.MapVariant &&
                    match.MapVariant.OwnerType == Enumeration.OwnerType.Official)
                {
                    match.MapVariantInfo = await _metadataRepository.GetMapVariant(match.MapVariant.ResourceId);
                }

                match.GameBaseVariant = await _metadataRepository.GetGameBaseVariant(match.GameBaseVariantId);

                if (match.GameVariant != null && match.GameVariant.ResourceType == Enumeration.ResourceType.GameVariant &&
                    match.GameVariant.OwnerType == Enumeration.OwnerType.Official)
                {
                    match.GameVariantInfo = await _metadataRepository.GetGameVariant(match.GameVariant.ResourceId);
                }

                if (match.HopperId.HasValue)
                {
                    match.Playlist = await _metadataRepository.GetPlaylist(match.HopperId.Value);
                }

                if (match.SeasonId.HasValue)
                {
                    match.Season = await _metadataRepository.GetSeason(match.SeasonId);
                }

                if (match.Teams != null)
                {
                    foreach (var team in match.Teams)
                    {
                        team.TeamColor = await _metadataRepository.GetTeamColor(team.Id);
                    }
                }
            }

            return(matches);
        }
Exemple #16
0
        public void GetConstructedUri_InGameModes_MatchesExpected(Enumeration.GameMode gameMode1, Enumeration.GameMode gameMode2)
        {
            var query = new GetMatches()
                .InGameModes(new List<Enumeration.GameMode> {gameMode1, gameMode2});

            var uri = query.GetConstructedUri();

            Assert.AreEqual($"stats/h5/players/{null}/matches?modes={gameMode1},{gameMode2}", uri);
        }
Exemple #17
0
        public async Task GetMatches(string gamertag)
        {
            var query = new GetMatches()
                .ForPlayer(gamertag);

            var result = await Session.Query(query);

            Assert.IsInstanceOf(typeof (MatchSet), result);
        }
Exemple #18
0
        public void GetConstructedUri_InGameMode_MatchesExpected(Enumeration.GameMode gameMode)
        {
            var query = new GetMatches()
                        .InGameMode(gameMode);

            var uri = query.GetConstructedUri();

            Assert.AreEqual($"stats/h5/players/{null}/matches?modes={gameMode}", uri);
        }
Exemple #19
0
        public void GetConstructedUri_Skip_MatchesExpected(int skip)
        {
            var query = new GetMatches()
                        .Skip(skip);

            var uri = query.GetConstructedUri();

            Assert.AreEqual($"stats/h5/players/{null}/matches?start={skip}", uri);
        }
Exemple #20
0
        public void GetConstructedUri_ForPlayer_MatchesExpected(string gamertag)
        {
            var query = new GetMatches()
                        .ForPlayer(gamertag);

            var uri = query.GetConstructedUri();

            Assert.AreEqual($"stats/h5/players/{gamertag}/matches{null}", uri);
        }
Exemple #21
0
        public async Task Query_DoesNotThrow()
        {
            var query = new GetMatches()
                        .ForPlayer("Player");

            var result = await _mockSession.Query(query);

            Assert.IsInstanceOf(typeof(MatchSet), result);
            Assert.AreEqual(_matchSet, result);
        }
Exemple #22
0
        public void GetConstructedUri_InGameModes_MatchesExpected(Enumeration.GameMode gameMode1, Enumeration.GameMode gameMode2)
        {
            var query = new GetMatches()
                        .InGameModes(new List <Enumeration.GameMode> {
                gameMode1, gameMode2
            });

            var uri = query.GetConstructedUri();

            Assert.AreEqual($"stats/h5/players/{null}/matches?modes={gameMode1},{gameMode2}", uri);
        }
Exemple #23
0
        public async Task GetMatches_InGameMode(string gamertag, int gameMode)
        {
            var query = new GetMatches()
                .InGameMode((Enumeration.GameMode)gameMode)
                .ForPlayer(gamertag);

            var result = await Session.Query(query);

            Assert.IsInstanceOf(typeof(MatchSet), result);
            Assert.IsTrue(result.Results.All(r => r.Id.GameMode == (Enumeration.GameMode)gameMode));
        }
Exemple #24
0
        public void GetConstructedUri_Complex_MatchesExpected(string gamertag, Enumeration.GameMode gameMode, int skip, int take)
        {
            var query = new GetMatches()
                        .ForPlayer(gamertag)
                        .InGameMode(gameMode)
                        .Skip(skip)
                        .Take(take);

            var uri = query.GetConstructedUri();

            Assert.AreEqual($"stats/h5/players/{gamertag}/matches?modes={gameMode}&start={skip}&count={take}", uri);
        }
Exemple #25
0
        public static void Validate(this GetMatches getMatches)
        {
            var validationResult = new ValidationResult();

            if (!getMatches.Player.IsValidGamertag())
            {
                validationResult.Messages.Add("GetMatches query requires a valid Gamertag (Player) to be set.");
            }

            if (getMatches.Parameters.ContainsKey("modes"))
            {
                var modes = getMatches.Parameters["modes"].Split(',');

                foreach (var mode in modes)
                {
                    var defined = Enum.IsDefined(typeof(Enumeration.GameMode), mode);

                    if (!defined)
                    {
                        validationResult.Messages.Add($"GetMatches optional parameter 'Game Mode' is invalid: {mode}.");
                    }
                }
            }

            if (getMatches.Parameters.ContainsKey("start"))
            {
                int start;
                var parsed = int.TryParse(getMatches.Parameters["start"], out start);

                if (!parsed || start < 0)
                {
                    validationResult.Messages.Add($"GetMatches optional parameter 'Take' is invalid: {start}.");
                }
            }

            if (getMatches.Parameters.ContainsKey("count"))
            {
                int count;
                var parsed = int.TryParse(getMatches.Parameters["count"], out count);

                if (!parsed || count < 1 || count > 25)
                {
                    validationResult.Messages.Add($"GetMatches optional parameter 'Take' is invalid: {count}.");
                }
            }

            if (!validationResult.Success)
            {
                throw new ValidationException(validationResult.Messages);
            }
        }
Exemple #26
0
        public async Task GetMatches_SchemaIsValid(string gamertag)
        {
            var weaponsSchema = JSchema.Parse(File.ReadAllText(Config.MatchesJsonSchemaPath), new JSchemaReaderSettings
            {
                Resolver = new JSchemaUrlResolver(),
                BaseUri  = new Uri(Path.GetFullPath(Config.MatchesJsonSchemaPath))
            });

            var query = new GetMatches()
                        .ForPlayer(gamertag);

            var jArray = await Global.Session.Get <JObject>(query.GetConstructedUri());

            SchemaUtility.AssertSchemaIsValid(weaponsSchema, jArray);
        }
Exemple #27
0
        public void TestMethod1()
        {
            //arrange
            string str1 = "hello";
            string str2 = "he 1llo";


            //execute
            GetMatches match    = new GetMatches();
            int        distance = match.LevenshteinDistance(str1, str2);

            //assert
            Debug.WriteLine(distance);

            Assert.AreEqual(16, distance);
        }
Exemple #28
0
        public async Task GetMatches_InGameModes(string gamertag)
        {
            var gameModes = new List<Enumeration.GameMode>
            {
                Enumeration.GameMode.Arena,
                Enumeration.GameMode.Warzone
            };

            var query = new GetMatches()
                .InGameModes(gameModes)
                .ForPlayer(gamertag);

            var result = await Session.Query(query);

            Assert.IsInstanceOf(typeof(MatchSet), result);
            Assert.IsTrue(result.Results.All(r => r.Id.GameMode == Enumeration.GameMode.Arena || r.Id.GameMode == Enumeration.GameMode.Warzone));
        }
Exemple #29
0
        /// <summary>
        /// Creates an array of frames from a string expression. The expression must be similar to the following format:
        /// "0,3,7-11,2,5"
        /// Whitespace is permitted, and commas are optional.
        /// <param name="input">A string formatted as above, describing the frames to generate.</param>
        /// </summary>
        public static int[] ParseFrames(string input)
        {
            // Make sure the pattern matches, and alert the user if it doesn't
            var parse = SyntaxCheck.Match(input);

            if (!parse.Success)
            {
                throw new Exception(string.Format("Invalid format: {0}", input));
            }

            // Get all numbers/ranges in the input string.
            var frames = new List <int>();

            foreach (Match match in GetMatches.Matches(input))
            {
                var range = GetRange.Match(match.Value);
                if (range.Success)
                {
                    int from = int.Parse(range.Groups[1].Value);
                    int to   = int.Parse(range.Groups[2].Value);

                    // Support ascending and descending ranges
                    if (from < to)
                    {
                        while (from <= to)
                        {
                            frames.Add(from++);
                        }
                    }
                    else
                    {
                        while (from >= to)
                        {
                            frames.Add(from--);
                        }
                    }
                }
                else
                {
                    frames.Add(int.Parse(match.Value));
                }
            }

            return(frames.ToArray());
        }
Exemple #30
0
        public async Task GetMatches_ModelMatchesSchema(string gamertag)
        {
            var schema = JSchema.Parse(File.ReadAllText(Config.MatchesJsonSchemaPath), new JSchemaReaderSettings
            {
                Resolver = new JSchemaUrlResolver(),
                BaseUri  = new Uri(Path.GetFullPath(Config.MatchesJsonSchemaPath))
            });

            var query = new GetMatches()
                        .ForPlayer(gamertag);

            var result = await Global.Session.Query(query);

            var json       = JsonConvert.SerializeObject(result);
            var jContainer = JsonConvert.DeserializeObject <JObject>(json);

            SchemaUtility.AssertSchemaIsValid(schema, jContainer);
        }
Exemple #31
0
        public async Task GetMatches_MissingPlayer()
        {
            var query = new GetMatches();

            try
            {
                await Session.Query(query);
                Assert.Fail("An exception should have been thrown");
            }
            catch (HaloApiException e)
            {
                Assert.AreEqual((int)Enumeration.StatusCode.NotFound, e.HaloApiError.StatusCode);
            }
            catch (System.Exception e)
            {
                Assert.Fail("Unexpected exception of type {0} caught: {1}", e.GetType(), e.Message);
            }
        }
        public async Task GetCampaignMatchDetails(string gamertag)
        {
            var getMatchesQuery = new GetMatches()
                .InGameMode(Enumeration.GameMode.Campaign)
                .ForPlayer(gamertag);

            var matches = await Session.Query(getMatchesQuery);

            Assert.IsTrue(matches.Results.Any());

            foreach (var match in matches.Results)
            {
                var getCampaignMatchDetailsQuery = new GetCampaignMatchDetails()
                    .ForMatchId(match.Id.MatchId);

                var result = await Session.Query(getCampaignMatchDetailsQuery);

                Assert.IsInstanceOf(typeof(CampaignMatch), result);
            }
        }
        public async Task GetMatches_InvalidGamertag(string gamertag)
        {
            var query = new GetMatches()
                .ForPlayer(gamertag);

            await Global.Session.Query(query);
            Assert.Fail("An exception should have been thrown");
        }
Exemple #34
0
        public async Task GetMatches_InvalidGamertag(string gamertag)
        {
            var query = new GetMatches()
                .ForPlayer(gamertag);

            try
            {
                await Session.Query(query);
                Assert.Fail("An exception should have been thrown");
            }
            catch (HaloApiException e)
            {
                Assert.AreEqual((int)Enumeration.StatusCode.BadRequest, e.HaloApiError.StatusCode);
            }
            catch (System.Exception e)
            {
                Assert.Fail("Unexpected exception of type {0} caught: {1}", e.GetType(), e.Message);
            }
        }
        public void GetConstructedUri_Take_MatchesExpected(int take)
        {
            var query = new GetMatches()
                .Take(take);

            var uri = query.GetConstructedUri();

            Assert.AreEqual(string.Format(BaseUri, null, $"?count={take}"), uri);
        }
        public async Task GetMatches_DoesNotThrow(string gamertag)
        {
            var query = new GetMatches()
                .ForPlayer(gamertag)
                .SkipCache();

            var result = await Global.Session.Query(query);

            Assert.IsInstanceOf(typeof(MatchSet), result);
        }
        public async Task GetMatches_MissingPlayer()
        {
            var query = new GetMatches();

            await Global.Session.Query(query);
            Assert.Fail("An exception should have been thrown");
        }
Exemple #38
0
        public void GetConstructedUri_Skip_MatchesExpected(int skip)
        {
            var query = new GetMatches()
                .Skip(skip);

            var uri = query.GetConstructedUri();

            Assert.AreEqual($"stats/h5/players/{null}/matches?start={skip}", uri);
        }
Exemple #39
0
        public void GetConstructedUri_Take_MatchesExpected(int take)
        {
            var query = new GetMatches()
                .Take(take);

            var uri = query.GetConstructedUri();

            Assert.AreEqual($"stats/h5/players/{null}/matches?count={take}", uri);
        }
Exemple #40
0
        public void GetConstructedUri_Complex_MatchesExpected(string gamertag, Enumeration.GameMode gameMode, int skip, int take)
        {
            var query = new GetMatches()
                .ForPlayer(gamertag)
                .InGameMode(gameMode)
                .Skip(skip)
                .Take(take);

            var uri = query.GetConstructedUri();

            Assert.AreEqual($"stats/h5/players/{gamertag}/matches?modes={gameMode}&start={skip}&count={take}", uri);
        }
Exemple #41
0
        public async Task Query_DoesNotThrow()
        {
            var query = new GetMatches();

            var result = await _mockSession.Query(query);

            Assert.IsInstanceOf(typeof(MatchSet), result);
            Assert.AreEqual(_matchSet, result);
        }
Exemple #42
0
        public async Task GetMatches_SchemaIsValid(string gamertag)
        {
            var weaponsSchema = JSchema.Parse(File.ReadAllText(Config.MatchesJsonSchemaPath), new JSchemaReaderSettings
            {
                Resolver = new JSchemaUrlResolver(),
                BaseUri = new Uri(Path.GetFullPath(Config.MatchesJsonSchemaPath))
            });

            var query = new GetMatches()
                .ForPlayer(gamertag);

            var jArray = await Global.Session.Get<JObject>(query.GetConstructedUri());

            SchemaUtility.AssertSchemaIsValid(weaponsSchema, jArray);
        }
Exemple #43
0
        public async Task GetMatches_ModelMatchesSchema(string gamertag)
        {
            var schema = JSchema.Parse(File.ReadAllText(Config.MatchesJsonSchemaPath), new JSchemaReaderSettings
            {
                Resolver = new JSchemaUrlResolver(),
                BaseUri = new Uri(Path.GetFullPath(Config.MatchesJsonSchemaPath))
            });

            var query = new GetMatches()
                .ForPlayer(gamertag);

            var result = await Global.Session.Query(query);

            var json = JsonConvert.SerializeObject(result);
            var jContainer = JsonConvert.DeserializeObject<JObject>(json);

            SchemaUtility.AssertSchemaIsValid(schema, jContainer);
        }
Exemple #44
0
        public async Task GetMatches_IsSerializable(string gamertag)
        {
            var query = new GetMatches()
                .ForPlayer(gamertag);

            var result = await Global.Session.Query(query);

            SerializationUtility<MatchSet>.AssertRoundTripSerializationIsPossible(result);
        }