public void BoardResult_SerializeTest()
        {
            Guid user  = Guid.Parse("4C0856A8-BBBF-4F78-8FF9-B7C161F470AC");
            var  board = new Board2();

            board.Vulnerable = Vulnerable.Both;

            var participant = new Participant(new SeatCollection <string>(new string[4] {
                "Robo", "", "NewUser", ""
            }));
            var newResult = new BoardResult("", board, participant);

            newResult.Auction = new Auction(board.Vulnerable, board.Dealer);
            newResult.Auction.Record(Bid.C("3NT"));
            newResult.Auction.Record(Bid.C("p"));
            newResult.Auction.Record(Bid.C("p"));
            newResult.Auction.Record(Bid.C("p"));
            newResult.Play = new PlaySequence(new Contract("3NT", Seats.South, board.Vulnerable), 13);
            newResult.Play.Record(Suits.Clubs, Ranks.Seven);

            var s = new DataContractSerializer(typeof(BoardResult));
            var m = new MemoryStream();

            s.WriteObject(m, newResult);
            m.Seek(0, SeekOrigin.Begin);
            BoardResult r = s.ReadObject(m) as BoardResult;

            Assert.AreEqual <string>(newResult.TeamName, r.TeamName);
        }
        public void Tournament_SavePbn()
        {
            var original = TournamentLoad("WC2005final01.pbn");
            var allPass  = new BoardResult("", original.Boards[0], new Participant("test1", "test1", "test1", "test1"));

            allPass.Auction.Record(Bid.C("p"));
            allPass.Auction.Record(Bid.C("p"));
            allPass.Auction.Record(Bid.C("p"));
            allPass.Auction.Record(Bid.C("p"));
            original.Boards[0].Results.Add(allPass);
            var partialPlay = new BoardResult("", original.Boards[0], new Participant("test2", "test2", "test2", "test2"));

            partialPlay.HandleBidDone(Seats.North, Bid.C("1S"));
            partialPlay.HandleBidDone(Seats.East, Bid.C("p"));
            partialPlay.HandleBidDone(Seats.South, Bid.C("p"));
            partialPlay.HandleBidDone(Seats.West, Bid.C("p"));
            partialPlay.HandleCardPlayed(Seats.East, Suits.Hearts, Ranks.King);
            partialPlay.HandleCardPlayed(Seats.South, Suits.Hearts, Ranks.Two);
            partialPlay.HandleCardPlayed(Seats.West, Suits.Hearts, Ranks.Three);
            partialPlay.HandleCardPlayed(Seats.North, Suits.Hearts, Ranks.Ace);
            partialPlay.HandleCardPlayed(Seats.North, Suits.Spades, Ranks.Ace);
            original.Boards[0].Results.Add(partialPlay);
            var partialAuction = new BoardResult("", original.Boards[0], new Participant("test3", "test3", "test3", "test3"));

            partialAuction.Auction.Record(Bid.C("1S"));
            partialAuction.Auction.Record(Bid.C("p"));
            partialAuction.Auction.Record(Bid.C("p"));
            original.Boards[0].Results.Add(partialAuction);
            Pbn2Tournament.Save(original, File.Create("t1.pbn"));
            var copy = TournamentLoad("t1.pbn");

            Assert.AreEqual(original.EventName, copy.EventName, "EventName");
            Assert.AreEqual <DateTime>(original.Created, copy.Created, "Created");
            Assert.AreEqual <int>(original.Boards.Count, copy.Boards.Count, "Boards.Count");
        }
Exemple #3
0
        public DecompressedBoardState(int boardHistory)
        {
            BoardHistoryUtils.ValidateBoardHistory(
                boardHistory,
                out int currentTurn,
                out int playerOneBoardSnapshot,
                out int playerTwoBoardSnapshot,
                out var boardResult);

            BoardHistory           = boardHistory;
            CurrentTurn            = currentTurn;
            PlayerOneBoardSnapshot = playerOneBoardSnapshot;
            PlayerTwoBoardSnapshot = playerTwoBoardSnapshot;
            BoardResult            = boardResult;
        }
Exemple #4
0
        public static object BOARD(
            [ExcelArgument(Description = "の時価情報を取得する", Name = "銘柄コード")] string Symbol,
            [ExcelArgument(Description = "の時価情報を取得する", Name = "市場コード")] string Exchange)
        {
            string ret = null;

            try
            {
                string ResultMessage = Validate.ValidateRequired(Symbol, Exchange);
                if (!string.IsNullOrEmpty(ResultMessage))
                {
                    return(ResultMessage);
                }

                Tuple <DateTime, string> tpl;
                var tplKey = Symbol + "-" + Exchange;
                if (_boardCache.TryGetValue(tplKey, out tpl))
                {
                    if ((DateTime.Now - tpl.Item1).TotalSeconds < 1)
                    {
                        ret = tpl.Item2;
                    }
                }
                if (String.IsNullOrEmpty(ret))
                {
                    ret = middleware.GetBoard(Symbol, Exchange);
                    _boardCache[tplKey] = Tuple.Create(DateTime.Now, ret);
                }

                object array;
                array = BoardResult.BoadCheck(ret);

                return(XlCall.Excel(XlCall.xlUDF, "Resize", array));
            }
            catch (Exception exception)
            {
                if (exception.InnerException == null)
                {
                    return(exception.Message);
                }
                else
                {
                    return(exception.InnerException.Message);
                }
            }
        }
Exemple #5
0
        public static object WEBSOCKET(
            [ExcelArgument(Description = "", Name = "銘柄コード")] string symbol,
            [ExcelArgument(Description = "", Name = "市場コード")] string exchange,
            [ExcelArgument(Description = "", Name = "項目名")] string itemName)
        {
            try
            {
                string ResultMessage = Validate.ValidateRtdBoard(_websocketStream, symbol, exchange, itemName);
                if (!string.IsNullOrEmpty(ResultMessage))
                {
                    return(ResultMessage);
                }

                if (!_websocketStream && CustomRibbon._updatePressed)
                {
                    middleware.StartWebSocket();
                }

                object ret = null;
                if (CustomRibbon._updatePressed)
                {
                    ret = XlCall.RTD(RtdBoard.WebApiRequestServerProgId, null, "WEBSOCKET");
                }

                if (!CustomRibbon._env)
                {
                    return(0);
                }

                Dictionary <string, Tuple <DateTime, BoardElement> > _Cache = _websocketCache;
                object returnData = "";

                if (_Cache.Count > 0)
                {
                    var tplKey = symbol + "-" + exchange;
                    Tuple <DateTime, BoardElement> tpl;
                    if (_Cache.TryGetValue(tplKey, out tpl))
                    {
                        returnData = BoardResult.GetBoardItem(tpl.Item2, symbol, int.Parse(exchange), itemName, false);
                    }

                    // 銘柄コード、市場コードのキーでキャッシュに該当データが無い場合、指数としてキャッシュをチェック
                    if (string.IsNullOrEmpty(returnData.ToString()))
                    {
                        // Nullの場合、キャッシュには"0"で登録されるため、市場コ-ド"0"でキャッシュをチェック
                        tplKey = symbol + "-" + "0";
                        if (_Cache.TryGetValue(tplKey, out tpl))
                        {
                            returnData = BoardResult.GetBoardItem(tpl.Item2, symbol, int.Parse(exchange), itemName, false);
                        }
                    }
                }

                return(returnData);
            }
            catch (Exception exception)
            {
                if (exception.InnerException == null)
                {
                    return(exception.Message);
                }
                else
                {
                    return(exception.InnerException.Message);
                }
            }
        }
 public void InvalidOperation(BoardResult boardResult)
 {
     System.Console.WriteLine($"Invalid movement: {System.Enum.GetName(typeof(BoardResult), boardResult)}");
 }
 public override Task SaveAsync(BoardResult result)
 {
     throw new NotImplementedException();
 }
Exemple #8
0
        public void Board_SerializeTest()
        {
            Board2 board     = new Board2(@"South, All
         S T87432
         H 53
         D 72
         C KT6
S QJ965           S AK
H JT96            H AQ8
D 9               D KJ865
C 973             C AQ4
         S 
         H K742
         D AQT43
         C J852
");
            var    newResult = new BoardResult("owner1", board, new Participant("N", "E", "S", "W"));

            newResult.Auction = new Auction(newResult);
            newResult.Auction.Record(Bid.C("3NT"));
            newResult.Auction.Record(Bid.C("p"));
            newResult.Auction.Record(Bid.C("p"));
            newResult.Auction.Record(Bid.C("p"));
            newResult.Play = new PlaySequence(newResult.Contract, 13);
            newResult.Play.Record(Suits.Clubs, Ranks.Seven);
            newResult.Play.Record(Suits.Clubs, Ranks.Eight);
            newResult.Play.Record(Suits.Clubs, Ranks.Queen);
            newResult.Play.Record(Suits.Clubs, Ranks.Ace);
            newResult.Play.Record(Suits.Diamonds, Ranks.Ace);
            newResult.Play.Record(Suits.Diamonds, Ranks.Seven);
            newResult.Play.Record(Suits.Diamonds, Ranks.Two);
            newResult.Play.Record(Suits.Diamonds, Ranks.Four);
            newResult.Play.Record(Suits.Diamonds, Ranks.King);
            newResult.Play.Record(Suits.Diamonds, Ranks.Queen);
            newResult.Play.Record(Suits.Diamonds, Ranks.Three);
            newResult.Play.Record(Suits.Diamonds, Ranks.Five);
            board.Results.Add(newResult);

            var newResult2 = new BoardResult("owner2", board, new Participant("N2", "E2", "S2", "W2"));

            board.Results.Add(newResult2);

            var    serializer      = new DataContractSerializer(board.GetType());
            string serializedBoard = "";

            using (var sw = new StringWriter())
            {
                using (var xw = new XmlTextWriter(sw))
                {
                    serializer.WriteObject(xw, board);
                }
                serializedBoard = sw.ToString();
            }

            Debug.WriteLine(serializedBoard);
            Assert.IsNotNull(serializedBoard);

            Board2 copy = null;

            using (var sr = new StringReader(serializedBoard))
            {
                using (var xr = new XmlTextReader(sr))
                {
                    copy = (Board2)serializer.ReadObject(xr);
                }
            }

            Assert.AreEqual <Board2>(board, copy, "board");

            var    serializer2      = new DataContractSerializer(newResult.GetType());
            string serializedResult = "";

            using (var sw = new StringWriter())
            {
                using (var xw = new XmlTextWriter(sw))
                {
                    serializer2.WriteObject(xw, newResult);
                }
                serializedResult = sw.ToString();
            }

            BoardResult resultCopy = null;

            using (var sr = new StringReader(serializedResult))
            {
                using (var xr = new XmlTextReader(sr))
                {
                    resultCopy = (BoardResult)serializer2.ReadObject(xr);
                }
            }

            resultCopy.Board = board;
            Assert.AreEqual <BoardResult>(newResult, resultCopy);
        }