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"); }
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; }
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); } } }
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(); }
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); }