public async Task ListShouldReturnTheItemsAsync()
        {
            _bazaarHttpClient !.Setup(b =>
                                      b.GetBazaarLinksAsync(
                                          It.IsAny <int>(),
                                          It.IsAny <int>(),
                                          It.IsAny <int>(),
                                          It.IsAny <BazaarListType>(),
                                          It.IsAny <byte>(),
                                          It.IsAny <byte>(),
                                          It.IsAny <byte>(),
                                          It.IsAny <byte>(),
                                          It.IsAny <long?>())
                                      ).ReturnsAsync(new List <BazaarLink>
            {
                new BazaarLink
                {
                    SellerName = "test",
                    BazaarItem = new BazaarItemDto
                    {
                        Price = 50, Amount = 1, DateStart = SystemTime.Now(), Duration = 200
                    },
                    ItemInstance = new ItemInstanceDto {
                        ItemVNum = 1012, Amount = 1
                    }
                }
            });
            await _cblistPacketHandler !.ExecuteAsync(new CBListPacket {
                ItemVNumFilter = new List <short>()
            }, _session !).ConfigureAwait(false);
            var lastpacket = (RcbListPacket?)_session !.LastPackets.FirstOrDefault(s => s is RcbListPacket);

            Assert.IsTrue(lastpacket?.Items?.Count == 1);
        }
Beispiel #2
0
        public async Task Test_ReceiveGiftNoPlaceAsync()
        {
            TestHelpers.Instance.WorldConfiguration.BackpackSize = 0;
            var item = _item !.Create(1);
            var mail = new MailData
            {
                ItemInstance = (ItemInstanceDto)item,
                MailDto      = new MailDto
                {
                    ItemInstanceId = item.Id
                }
            };

            _itemInstanceDao !.Setup(o => o.FirstOrDefaultAsync(It.IsAny <Expression <Func <IItemInstanceDto?, bool> > >()))
            .ReturnsAsync(item);
            _mailHttpClient !.Setup(s => s.GetGiftAsync(1, _session !.Character.CharacterId, false)).ReturnsAsync(mail);
            await _pclPacketHandler !.ExecuteAsync(new PclPacket
            {
                Type   = 4,
                GiftId = 1
            }, _session !).ConfigureAwait(false);
            var packet = (ParcelPacket?)_session !.LastPackets.FirstOrDefault(s => s is ParcelPacket);

            Assert.IsTrue(packet?.Type == 5);
        }
Beispiel #3
0
        public async Task OpenWhenNoMedalAsync()
        {
            await _cskillPacketHandler !.ExecuteAsync(new CSkillPacket(), _session !).ConfigureAwait(false);
            var   lastpacket = (InfoPacket?)_session !.LastPackets.FirstOrDefault(s => s is InfoPacket);

            Assert.IsTrue(lastpacket?.Message ==
                          GameLanguage.Instance.GetMessageFromKey(LanguageKey.NO_BAZAAR_MEDAL, _session.Account.Language));
        }
        public async Task Test_Transform_NoSpAsync()
        {
            await _spTransformPacketHandler !.ExecuteAsync(new SpTransformPacket {
                Type = SlPacketType.WearSp
            }, _session !).ConfigureAwait(false);
            var packet = (MsgPacket?)_session !.LastPackets.FirstOrDefault(s => s is MsgPacket);

            Assert.IsTrue(packet?.Message ==
                          GameLanguage.Instance.GetMessageFromKey(LanguageKey.NO_SP, _session.Account.Language));
        }
Beispiel #5
0
        public void SendPackets(IEnumerable <IPacket> packets)
        {
            var packetDefinitions = (packets as IPacket[] ?? packets.ToArray()).Where(c => c != null);

            if (packetDefinitions.Any())
            {
                Parallel.ForEach(packets, packet => LastPackets.Enqueue(packet));
                Parallel.For(0, LastPackets.Count - maxPacketsBuffer, (_, __) => LastPackets.TryDequeue(out var ___));
                Channel?.WriteAndFlushAsync(packetDefinitions);
            }
        }
Beispiel #6
0
        public async Task Test_DeleteGiftAsync()
        {
            _mailHttpClient !.Setup(s => s.GetGiftAsync(1, _session !.Character.CharacterId, false)).ReturnsAsync(new MailData());
            await _pclPacketHandler !.ExecuteAsync(new PclPacket
            {
                Type   = 5,
                GiftId = 1
            }, _session !).ConfigureAwait(false);
            var packet = (ParcelPacket?)_session !.LastPackets.FirstOrDefault(s => s is ParcelPacket);

            Assert.IsTrue(packet?.Type == 7);
        }
Beispiel #7
0
        public async Task ModifyWhenPriceSamePrice()
        {
            await _cmodPacketHandler !.ExecuteAsync(new CModPacket
            {
                BazaarId = 2,
                NewPrice = 60,
                Amount   = 1,
                VNum     = 1012
            }, _session !).ConfigureAwait(false);

            Assert.IsNull(_session !.LastPackets.FirstOrDefault());
        }
Beispiel #8
0
        public async Task RetrieveWhenNotYourItemAsync()
        {
            await _cScalcPacketHandler !.ExecuteAsync(new CScalcPacket
            {
                BazaarId = 2,
                Price    = 50,
                Amount   = 1,
                VNum     = 1012
            }, _session !).ConfigureAwait(false);
            var lastpacket = (RCScalcPacket?)_session !.LastPackets.FirstOrDefault(s => s is RCScalcPacket);

            Assert.AreEqual(0, lastpacket?.Price);
        }
Beispiel #9
0
        public async Task LoginOldClientAsync()
        {
            _loginConfiguration.ClientVersion = new ClientVersionSubPacket {
                Major = 1
            };
            await _noS0577PacketHandler !.ExecuteAsync(new NoS0577Packet
            {
                AuthToken = GuidToToken(_tokenGuid),
            }, _session !).ConfigureAwait(false);

            Assert.IsTrue(((FailcPacket?)_session !.LastPackets.FirstOrDefault(s => s is FailcPacket))?.Type ==
                          LoginFailType.OldClient);
        }
        public async Task Test_TitleGuriHandlerWhenNoTitleItemAsync()
        {
            await ExecuteGuriEventHandlerAsync(new GuriPacket
            {
                Type     = GuriPacketType.Title,
                VisualId = 0
            }).ConfigureAwait(false);

            var lastpacket = (InfoPacket?)Session !.LastPackets.FirstOrDefault(s => s is InfoPacket);

            Assert.IsNull(lastpacket);
            Assert.AreEqual(0, Session.Character.Titles.Count);
        }
Beispiel #11
0
        public async Task ModifyWhenSold()
        {
            await _cmodPacketHandler !.ExecuteAsync(new CModPacket
            {
                BazaarId = 3,
                NewPrice = 60,
                Amount   = 1,
                VNum     = 1012
            }, _session !).ConfigureAwait(false);
            var lastpacket = (ModalPacket?)_session !.LastPackets.FirstOrDefault(s => s is ModalPacket);

            Assert.IsTrue(lastpacket?.Message ==
                          GameLanguage.Instance.GetMessageFromKey(LanguageKey.CAN_NOT_MODIFY_SOLD_ITEMS, _session.Account.Language));
        }
Beispiel #12
0
        public async Task ModifyWhenWrongAmount()
        {
            await _cmodPacketHandler !.ExecuteAsync(new CModPacket
            {
                BazaarId = 2,
                NewPrice = 70,
                Amount   = 2,
                VNum     = 1012
            }, _session !).ConfigureAwait(false);
            var lastpacket = (ModalPacket?)_session !.LastPackets.FirstOrDefault(s => s is ModalPacket);

            Assert.IsTrue(lastpacket?.Message ==
                          GameLanguage.Instance.GetMessageFromKey(LanguageKey.STATE_CHANGED_BAZAAR, _session.Account.Language));
        }
Beispiel #13
0
        public async Task CanPrivateMinilandAsync()
        {
            var mleditPacket = new MLEditPacket()
            {
                Parameter = MinilandState.Private,
                Type      = 2
            };
            await _mlEditPacketHandler !.ExecuteAsync(mleditPacket, _session !).ConfigureAwait(false);
            var   lastpacket = (MsgiPacket?)_session !.LastPackets.FirstOrDefault(s => s is MsgiPacket);

            Assert.AreEqual(lastpacket?.Message, Game18NConstString.MinilandPrivate);
            var miniland = _minilandProvider.GetMiniland(_session.Character.CharacterId);

            Assert.AreEqual(MinilandState.Private, miniland.State);
        }
        public async Task Test_Move_Quicklist()
        {
            await _qsetPacketHandler !.ExecuteAsync(new QsetPacket
            {
                Type                = QSetType.Set,
                OriginQuickList     = 1,
                OriginQuickListSlot = 2,
                FirstData           = 3,
                SecondData          = 4
            }, _session !).ConfigureAwait(false);

            await _qsetPacketHandler.ExecuteAsync(new QsetPacket
            {
                Type                = QSetType.Set,
                OriginQuickList     = 1,
                OriginQuickListSlot = 3,
                FirstData           = 4,
                SecondData          = 5
            }, _session !).ConfigureAwait(false);

            _session !.LastPackets.Clear();
            await _qsetPacketHandler.ExecuteAsync(new QsetPacket
            {
                Type                = QSetType.Move,
                OriginQuickList     = 1,
                OriginQuickListSlot = 3,
                FirstData           = 1,
                SecondData          = 2
            }, _session).ConfigureAwait(false);

            var firstpacket = (QsetClientPacket?)_session.LastPackets.FirstOrDefault(s => s is QsetClientPacket);
            var lastpacket  = (QsetClientPacket?)_session.LastPackets.Skip(1).FirstOrDefault(s => s is QsetClientPacket);

            Assert.AreEqual(QSetType.Set, lastpacket?.Data?.Type);
            Assert.AreEqual(1, lastpacket?.OriginQuickList ?? 0);
            Assert.AreEqual(2, lastpacket?.OriginQuickListSlot ?? 0);
            Assert.AreEqual(0, (int?)lastpacket?.Data?.Data ?? 0);
            Assert.AreEqual(4, lastpacket?.Data?.OriginQuickList ?? 0);
            Assert.AreEqual(5, lastpacket?.Data?.OriginQuickListSlot ?? 0);

            Assert.AreEqual(1, firstpacket?.OriginQuickList ?? 0);
            Assert.AreEqual(3, firstpacket?.OriginQuickListSlot ?? 0);
            Assert.AreEqual(0, (int?)firstpacket?.Data?.Data ?? 0);
            Assert.AreEqual(3, firstpacket?.Data?.OriginQuickList ?? 0);
            Assert.AreEqual(4, firstpacket?.Data?.OriginQuickListSlot ?? 0);

            Assert.AreEqual(2, _session.Character.QuicklistEntries.Count);
        }
Beispiel #15
0
        public async Task RetrieveAsync()
        {
            _itemInstanceDao !.Setup(s => s.FirstOrDefaultAsync(It.IsAny <Expression <Func <IItemInstanceDto?, bool> > >()))
            .ReturnsAsync(new ItemInstanceDto {
                ItemVNum = 1012, Amount = 0
            });
            await _cScalcPacketHandler !.ExecuteAsync(new CScalcPacket
            {
                BazaarId = 0,
                Price    = 50,
                Amount   = 1,
                VNum     = 1012
            }, _session !).ConfigureAwait(false);
            var lastpacket = (RCScalcPacket?)_session !.LastPackets.FirstOrDefault(s => s is RCScalcPacket);

            Assert.AreEqual(50, lastpacket?.Total);
        }
Beispiel #16
0
        public async Task Modify()
        {
            await _cmodPacketHandler !.ExecuteAsync(new CModPacket
            {
                BazaarId = 2,
                NewPrice = 70,
                Amount   = 1,
                VNum     = 1012
            }, _session !).ConfigureAwait(false);
            var lastpacket = (SayPacket?)_session !.LastPackets.FirstOrDefault(s => s is SayPacket);

            Assert.IsTrue(lastpacket?.Message ==
                          string.Format(
                              GameLanguage.Instance.GetMessageFromKey(LanguageKey.BAZAAR_PRICE_CHANGED, _session.Account.Language),
                              70
                              ));
        }
        public async Task RegisterTaxWhenMedalMoreThanGoldAsync()
        {
            await _cregPacketHandler !.ExecuteAsync(new CRegPacket
            {
                Type       = 0,
                Inventory  = 0,
                Slot       = 0,
                Durability = 0,
                IsPackage  = false,
                Amount     = 1,
                Taxe       = 0,
                MedalUsed  = 0
            }, _session !).ConfigureAwait(false);

            var lastpacket = (MsgiPacket?)_session !.LastPackets.FirstOrDefault(s => s is MsgiPacket);

            Assert.IsTrue(lastpacket?.Message == Game18NConstString.NotEnoughGold);
        }
Beispiel #18
0
        public async Task CanChangeMinilandMessageWithSpaceAsync()
        {
            var mleditPacket = new MLEditPacket()
            {
                MinilandInfo = "Test Test",
                Type         = 1
            };
            await _mlEditPacketHandler !.ExecuteAsync(mleditPacket, _session !).ConfigureAwait(false);
            var   lastpacket = (InfoiPacket?)_session !.LastPackets.FirstOrDefault(s => s is InfoiPacket);

            Assert.AreEqual(Game18NConstString.MinilandChanged, lastpacket !.Message);
            var miniland = _minilandProvider.GetMiniland(_session.Character.CharacterId);

            Assert.AreEqual("Test Test", miniland.MinilandMessage);
            var lastpacket2 = (MlintroPacket?)_session !.LastPackets.FirstOrDefault(s => s is MlintroPacket);

            Assert.AreEqual("Test^Test", lastpacket2?.Intro);
        }
Beispiel #19
0
        public async Task RegisterTaxWhenMedalMoreThanGoldAsync()
        {
            await _cregPacketHandler !.ExecuteAsync(new CRegPacket
            {
                Type       = 0,
                Inventory  = 0,
                Slot       = 0,
                Durability = 0,
                IsPackage  = false,
                Amount     = 1,
                Taxe       = 0,
                MedalUsed  = 0
            }, _session !).ConfigureAwait(false);

            var lastpacket = (MsgPacket?)_session !.LastPackets.FirstOrDefault(s => s is MsgPacket);

            Assert.IsTrue(lastpacket?.Message ==
                          GameLanguage.Instance.GetMessageFromKey(LanguageKey.NOT_ENOUGH_MONEY, _session.Account.Language));
        }
        public async Task Test_Delete_FromQuicklist()
        {
            await _qsetPacketHandler !.ExecuteAsync(new QsetPacket
            {
                Type                = QSetType.Remove,
                OriginQuickList     = 1,
                OriginQuickListSlot = 2,
                FirstData           = 3,
                SecondData          = 4
            }, _session !).ConfigureAwait(false);
            var lastpacket = (QsetClientPacket?)_session !.LastPackets.FirstOrDefault(s => s is QsetClientPacket);

            Assert.AreEqual(QSetType.Reset, lastpacket?.Data?.Type ?? 0);
            Assert.AreEqual(1, lastpacket?.OriginQuickList ?? 0);
            Assert.AreEqual(2, lastpacket?.OriginQuickListSlot ?? 0);
            Assert.AreEqual(0, lastpacket?.Data?.Data ?? 0);
            Assert.AreEqual(7, lastpacket?.Data?.OriginQuickList ?? 0);
            Assert.AreEqual(-1, lastpacket?.Data?.OriginQuickListSlot ?? 0);
            Assert.AreEqual(0, _session.Character.QuicklistEntries.Count);
        }
        public async Task ListShouldReturnEmptyWhenNoItemsAsync()
        {
            _bazaarHttpClient !.Setup(b =>
                                      b.GetBazaarLinksAsync(
                                          It.IsAny <int>(),
                                          It.IsAny <int>(),
                                          It.IsAny <int>(),
                                          It.IsAny <BazaarListType>(),
                                          It.IsAny <byte>(),
                                          It.IsAny <byte>(),
                                          It.IsAny <byte>(),
                                          It.IsAny <byte>(),
                                          It.IsAny <long?>())
                                      ).ReturnsAsync(new List <BazaarLink>());
            await _cblistPacketHandler !.ExecuteAsync(new CBListPacket {
                ItemVNumFilter = new List <short>()
            }, _session !).ConfigureAwait(false);
            var lastpacket = (RcbListPacket?)_session !.LastPackets.FirstOrDefault(s => s is RcbListPacket);

            Assert.IsTrue(lastpacket?.Items?.Count == 0);
        }