public void Authenticate()
        {
            var client = new ExpertInfoClient();

            var authResult = client.Authenticate(new AuthenticateRequest
            {
                UserCredential = new UserCredential { AccountNumber = _accountNumber, Password = _password }
            });

            //Print out some information so that we can see it happen
            Console.Out.WriteLineAsync("Last Login: " + authResult.AuthenticationDetail.LastLogon.ToString());

            client.Logout();

            Assert.AreEqual(_accountNumber, authResult.AuthenticationDetail.AccountNumber);
        }
        public void FetchMostRecentEventSequence()
        {
            var client = new ExpertInfoClient();

            client.Authenticate(new AuthenticateRequest
            {
                UserCredential = new UserCredential { AccountNumber = _accountNumber, Password = _password }
            });

            var dispatchedEvents = client.FetchMostRecentEventSequence(new FetchMostRecentEventSequenceRequest());

            //Print out some information so that we can see it happen
            Console.Out.WriteLineAsync("Most recent sequence number: " + dispatchedEvents.MostRecentEventSequence.ToString());

            client.Logout();

            Assert.IsTrue(dispatchedEvents.MostRecentEventSequence > 0);
        }
        public void FetchAvailableMeetings()
        {
            var client = new ExpertInfoClient();

            client.Authenticate(new AuthenticateRequest
            {
                UserCredential = new UserCredential { AccountNumber = _accountNumber, Password = _password }
            });

            var racing = client.FetchAvailableMeetings(new FetchAvailableMeetingsRequest
            {
                MeetingDate = DateTime.Today.Date
            });

            //Print out some information so that we can see it happen
            foreach (var element in racing.Meetings)
            {
                Console.Out.WriteLineAsync(element.MeetingID + " - " + element.CourseName);
            }

            client.Logout();

            Assert.IsTrue(racing.Meetings.Length > 0);
        }
        public void FetchEventsFromSequence()
        {
            var client = new ExpertInfoClient();

            client.Authenticate(new AuthenticateRequest
            {
                UserCredential = new UserCredential { AccountNumber = _accountNumber, Password = _password }
            });

            var dispatchedEvents1 = client.FetchMostRecentEventSequence(new FetchMostRecentEventSequenceRequest());
            var mostRecentEventSequence = dispatchedEvents1.MostRecentEventSequence;

            var dispatchedEvents2 = client.FetchEventsFromSequence(new FetchEventsFromSequenceRequest
            {
                LastKnownEventSequence = mostRecentEventSequence
                //LastKnownEventSequence = mostRecentEventSequence, AllowedTypesList = new [] { EventType.RaceOfficial },
            });

            //Print out some information so that we can see it happen
            Console.Out.WriteLine("Most recent sequence number: " + dispatchedEvents1.MostRecentEventSequence.ToString());
            //FIXME: some sensible output
            foreach (var element in dispatchedEvents2.Events)
            {
                Console.Out.WriteLine("Event Details: " + element.EventType.ToString() + " - " + element.EventTimestamp.ToLocalTime());
            }

            client.Logout();

            Assert.IsTrue(dispatchedEvents2.Events.Length >= 0);
        }
        public void FetchNoveltyTrend()
        {
            var client = new ExpertInfoClient();

            client.Authenticate(new AuthenticateRequest
            {
                UserCredential = new UserCredential
                { AccountNumber = _accountNumber, Password = _password }
            });

            var racing = client.FetchAvailableMeetings(new FetchAvailableMeetingsRequest
            {
                MeetingDate = DateTime.Today.Date
            });

            Assert.IsTrue(racing.Meetings.Length > 0);

            var meetingForDay = racing.Meetings[0].MeetingID;

            var trends = client.FetchNoveltyTrend(new FetchNoveltyTrendRequest
            {
                MeetingDate = DateTime.Today.Date,
                MeetingId = meetingForDay,
                PoolFilters = new PoolFilterCollection { new PoolFilter { PoolCode = PoolCode.Win } }
            });

            client.Logout();

            Assert.IsTrue(trends.TrendPools.Length >= 0);

            if (trends.TrendPools.Length > 0)
            {
                Assert.AreEqual(PoolCode.Win, trends.TrendPools[0].PoolKey.PoolCode);

                Assert.IsTrue(trends.TrendPools[0].TrendStarterList.Count >= 0);

                if (trends.TrendPools[0].TrendStarterList.Count > 0)
                {
                    Assert.IsTrue(trends.TrendPools[0].TrendStarterList[0].StarterNumber > 0);
                    Assert.IsTrue(trends.TrendPools[0].TrendStarterList[0].TrendPositionList.Count > 0);
                }
            }
        }
        public void FetchProvDivs()
        {
            var client = new ExpertInfoClient();

            client.Authenticate(new AuthenticateRequest
            {
                UserCredential = new UserCredential
                { AccountNumber = _accountNumber, Password = _password }
            });

            var racing = client.FetchAvailableMeetings(new FetchAvailableMeetingsRequest
            {
                MeetingDate = DateTime.Today.Date
            });

            Assert.IsTrue(racing.Meetings.Length > 0);

            var meetingForDay = racing.Meetings[0].MeetingID;

            var provDivs = client.FetchProvDivs(new FetchProvDivsRequest
            {
                MeetingDate = DateTime.Today.Date,
                MeetingId = meetingForDay,
                PoolFilters = new PoolFilterCollection { new PoolFilter { PoolCode = PoolCode.Win } }
            });

            client.Logout();

            Assert.IsTrue(provDivs.ProvDivPools.Length > 0);
            Assert.AreEqual(PoolCode.Win, provDivs.ProvDivPools[0].PoolKey.PoolCode);
        }
        public void FetchMarketMovers()
        {
            var client = new ExpertInfoClient();

            client.Authenticate(new AuthenticateRequest
            {
                UserCredential = new UserCredential { AccountNumber = _accountNumber, Password = _password }
            });

            var racing = client.FetchAvailableMeetings(new FetchAvailableMeetingsRequest
            {
                MeetingDate = DateTime.Today.Date
            });

            Assert.IsTrue(racing.Meetings.Length > 0);

            var meetingForDay = racing.Meetings[0].MeetingID;

            var marketMovers = client.FetchMarketMovers(new FetchMarketMoversRequest
            {
                MeetingDate = DateTime.Today.Date,
                MeetingId = meetingForDay,
                RaceNumber = 1
            });

            client.Logout();

            //FIXME: Asserts cause method to always fail
            Assert.IsTrue(marketMovers.MarketMoverPool.MarketMoverProvDivList.Count > 0);
            Assert.IsTrue(marketMovers.MarketMoverPool.MarketMoverProvDivList[0].HistoricalProvDivResultList.Count > 0);
            Assert.IsTrue(marketMovers.MarketMoverPool.MarketMoverProvDivList[0].HistoricalProvDivResultList[0].StarterNumber > 0);
        }