public async Task GetTournamentRoundGroup_ReturnsTournamentGroup()
        {
            var result = await ChessAPI.GetTournamentRoundGroupAsync("-33rd-chesscom-quick-knockouts-1401-1600", "1", "1");

            Assert.AreNotEqual(null, result.Games);
            Assert.AreNotEqual(null, result.Players);
        }
示例#2
0
        public void SimpleAtomicityTest2()
        {
            racyvariable = 0;

            Thread t = new Thread((Object irrelevant) =>
            {
                ChessAPI.TraceEvent("doing child ops");
                ChessAPI.PreemptionDisable();
                ChessAPI.PreemptionDisable();
                ChessAPI.PreemptionEnable();
                ChessAPI.PreemptionEnable();
                racyvariable++;
            });

            t.Start();

            ChessAPI.TraceEvent("doing parent ops");
            ChessAPI.PreemptionDisable();
            racyvariable++;
            ChessAPI.PreemptionEnable();

            t.Join();

            Assert.AreEqual(2, racyvariable);
        }
示例#3
0
        public void Sample2()
        {
            Pair   p  = new Pair();
            Thread t1 = new Thread(() =>
            {
                ChessAPI.ObserveOperationCall("set a=0");
                p.Write_a(0);
                ChessAPI.ObserveOperationReturn();
                ChessAPI.ObserveOperationCall("read both");
                ChessAPI.ObserveInteger("val", p.Read_both());
                ChessAPI.ObserveOperationReturn();
                ChessAPI.ObserveOperationCall("read a");
                ChessAPI.ObserveInteger("val", p.Read_a());
                ChessAPI.ObserveOperationReturn();
            });
            Thread t2 = new Thread(() =>
            {
                ChessAPI.ObserveOperationCall("set b=10");
                p.Write_b(10);
                ChessAPI.ObserveOperationReturn();
                ChessAPI.ObserveOperationCall("read both");
                ChessAPI.ObserveInteger("val", p.Read_both());
                ChessAPI.ObserveOperationReturn();
            });

            t1.Start();
            t2.Start();
            t1.Join();
            t2.Join();
        }
示例#4
0
        public void SimpleAtomicityTest3b()
        {
            racyvariable = 0;

            Thread t = new Thread((Object irrelevant) =>
            {
                ChessAPI.RunWithoutPreemptions(() =>
                {
                    racyvariable++;
                });
            });

            t.Start();

            try
            {
                ChessAPI.RunWithoutPreemptions(() => ((Object)(null)).GetHashCode());
            }
            catch (NullReferenceException)
            {
            }

            racyvariable++;

            t.Join();

            Assert.AreEqual(2, racyvariable);
        }
        public static async Task CheckPercentageLostGames_ReturnsDouble()
        {
            var games = await ChessAPI.GetMonthlyArchiveAsync("https://api.chess.com/pub/player/calculatedblunder/games/2018/08");

            var percentage = GameChecker.CheckPercentageLostGames(games, "calculatedblunder");

            Assert.IsTrue(percentage > 0);
        }
        public async Task GetJsonFromUrl_ReturnsString()
        {
            // Arrange
            // var class = new MyClass();
            // Act
            var result = await ChessAPI.GetJsonFromUrlAsync("https://api.chess.com/pub/player/calculatedblunder");

            // Assert
            Assert.AreNotEqual(string.Empty, result);
        }
        public string GetInitialGame()
        {
            XmlNode xml = ChessAPI.getInitialGameXML();
            Game    g   = new Game();

            g.Reset();
            g.ActivePlay.GetBestMove();
            g.XmlDeserialize(xml);
            Move m = g.ActivePlay.GetBestMove();

            return("hi");
        }
示例#8
0
        private static void ForkJoin(T objundertest, string[][] matrix, Action <T>[][] ops)
        {
            Thread[] threads = new Thread[ops.Length];

            // Create all threads
            for (int t = 0; t < threads.Length; t++)
            {
                int tt = t;
                threads[t] = new Thread(() =>
                {
                    for (int o = 0; o < ops[tt].Length; o++)
                    {
                        try
                        {
                            ChessAPI.TraceEvent(matrix[tt][o]);
                            ChessAPI.ObserveOperationCall(matrix[tt][o]);
                            ops[tt][o](objundertest);
                        }
                        catch (Exception e)
                        {
                            if (ChessAPI.IsBreakingDeadlock())
                            {
                                break;
                            }

                            ChessAPI.ObserveString("exception", e.Message);
                        }
                        ChessAPI.ObserveOperationReturn();
                    }
                });
            }

            // start all threads
            foreach (var t in threads)
            {
                t.Start();
            }

            // join all threads
            foreach (var t in threads)
            {
                t.Join();
            }
        }
示例#9
0
 public void SmallFailingSample1()
 {
     a = 0;
     b = 0;
     System.Threading.Tasks.Parallel.Invoke(
         () =>
     {
         ChessAPI.ObserveOperationCall("first");
         a = 1;
         ChessAPI.ObserveInteger("val", a);
         ChessAPI.ObserveOperationReturn();
     },
         () =>
     {
         ChessAPI.ObserveOperationCall("second");
         a = 2;
         ChessAPI.ObserveOperationReturn();
     }
         );
 }
示例#10
0
 [ExpectedResult(TestResultType.Error)]   // TODO make special error type for these?
 public void Test1()
 {
     System.Threading.Tasks.Parallel.Invoke(
         () =>
     {
         ChessAPI.ObserveOperationCall("first");
         a = 1;
         a = 1;
         b = a;
         ChessAPI.ObserveOperationReturn();
     },
         () =>
     {
         ChessAPI.ObserveOperationCall("second");
         b = 1;
         b = 1;
         ChessAPI.ObserveOperationReturn();
     }
         );
 }
示例#11
0
        // harness for testing "Pair" objects
        private ComponentHarness <Pair> CreateHarness()
        {
            var harness = new ComponentHarness <Pair>();

            harness.DefineConstructor("default", () =>
            {
                return(new Pair());
            });
            harness.DefineOperation("read a", (Pair p) =>
            {
                int val = p.Read_a();
                ChessAPI.ObserveInteger("val", val);
            });
            harness.DefineOperation("read both", (Pair p) =>
            {
                int val = p.Read_both();
                ChessAPI.ObserveInteger("val", val);
            });
            for (int i = 0; i < 2; i++)
            {
                int val = i * 10;
                harness.DefineOperation("set a=" + val, (Pair p) =>
                {
                    p.Write_a(val);
                });
                harness.DefineOperation("set b=" + val, (Pair p) =>
                {
                    p.Write_b(val);
                });
            }
            harness.DefineOperation("set a=b=10", (Pair p) =>
            {
                p.Write_both(10, 10);
            });

            return(harness);
        }
示例#12
0
 public void SmallPassingSample1()
 {
     a = 0;
     b = 0;
     System.Threading.Tasks.Parallel.Invoke(
         () =>
     {
         ChessAPI.ObserveOperationCall("first");
         a = 1;
         a = 1;
         b = a;
         ChessAPI.ObserveInteger("val", 2);
         ChessAPI.ObserveOperationReturn();
     },
         () =>
     {
         ChessAPI.ObserveOperationCall("second");
         b = 1;
         ChessAPI.ObserveString("ret", "hurra");
         b = 1;
         ChessAPI.ObserveOperationReturn();
     }
         );
 }
        public async Task IsPlayerOnlineAsync_PlayerIsOffline_ReturnsFalse()
        {
            var result = await ChessAPI.IsPlayerOnlineAsync("calculatedblunder");

            Assert.IsTrue(!result);
        }
        public async Task GetPlayerStats_ReturnsProfileStats()
        {
            var result = await ChessAPI.GetPlayerStatsAsync("erik");

            Assert.IsNotNull(result.ChessBullet);
        }
        public async Task LookupPlayersWithTitleAsync_ReturnsStringArray()
        {
            var result = await ChessAPI.GetPlayersWithTitleAsync("GM");

            Assert.AreNotEqual(new string[0], result);
        }
        public async Task GetLeaderboards_ReturnsLeaderboard()
        {
            var result = await ChessAPI.GetLeaderboardsAsync();

            Assert.AreNotEqual(null, result.Bullet);
        }
        public async Task GetStreamers_ReturnsStreamerArray()
        {
            var result = await ChessAPI.GetStreamersAsync();

            Assert.AreNotEqual(string.Empty, result[0].Username);
        }
        public async Task GetRandomPuzzle_ReturnsDailyPuzzle()
        {
            var result = await ChessAPI.GetRandomPuzzleAsync();

            Assert.AreNotEqual(string.Empty, result.Title);
        }
        public async Task GetClubMembers_ReturnsClubMembers()
        {
            var result = await ChessAPI.GetClubMembersAsync("chess-com-developer-community");

            Assert.IsTrue(result.Weekly.Length > 0);
        }
        public async Task GetLiveTeamMatchBoard_ReturnsTeamMatchBoard()
        {
            var result = await ChessAPI.GetLiveTeamMatchBoardAsync("5833", "5");

            Assert.AreNotEqual(null, result.Games);
        }
        public async Task GetLiveTeamMatch_ReturnsTeamMatch()
        {
            var result = await ChessAPI.GetLiveTeamMatchAsync("5833");

            Assert.AreNotEqual(null, result.Name);
        }
        public async Task GetTournamentRound_ReturnsTournamentRound()
        {
            var result = await ChessAPI.GetTournamentRoundAsync("-33rd-chesscom-quick-knockouts-1401-1600", "1");

            Assert.IsTrue(result.Players.Length > 0 || result.Groups.Length > 0);
        }
        public async Task GetTournament_ReturnsTournament()
        {
            var result = await ChessAPI.GetTournamentAsync("-33rd-chesscom-quick-knockouts-1401-1600");

            Assert.AreNotEqual(string.Empty, result.Name);
        }
        public async Task GetClubMatches_ReturnsClubMatches()
        {
            var result = await ChessAPI.GetClubMatchesAsync("team-usa-southwest");

            Assert.IsTrue(result.Finished.Length > 0);
        }
        public async Task GetDailyGamesPlayerToMove_ReturnsDailyGameArray()
        {
            var result = await ChessAPI.GetDailyGamesPlayerToMoveAsync("erik");

            Assert.IsNotNull(result);
        }
        public async Task GetPlayerProfileAsync_ReturnsPlayer()
        {
            var result = await ChessAPI.GetPlayerProfileAsync("erik");

            Assert.AreEqual(41, result.PlayerID);
        }
        public async Task GetAvailableMonthlyArchives_ReturnsStringArray()
        {
            var result = await ChessAPI.GetAvailableMonthlyArchivesAsync("erik");

            Assert.IsNotNull(result);
        }
        public async Task GetClubProfile_ReturnsClubProfile()
        {
            var result = await ChessAPI.GetClubProfileAsync("chess-com-developer-community");

            Assert.IsTrue(result.ID > 0);
        }
        public async Task GetMonthlyArchive_ReturnsArchiveGameArray()
        {
            var result = await ChessAPI.GetMonthlyArchiveAsync("erik", 2017, 12);

            Assert.IsNotNull(result);
        }
        public async Task GetDailyTeamMatchBoard_ReturnsTeamMatch()
        {
            var result = await ChessAPI.GetDailyTeamMatchBoardAsync("12803", "1");

            Assert.AreNotEqual(null, result.Games);
        }