public void TestVendorSellList() { var vendor = new Mobile(0x1024u); vendor.DefaultMobileInit(); var item1 = new Item(World.NewItem); var item2 = new Item(World.NewItem) { Name = "Second Item" }; var item3 = new Item(World.NewItem); var sellStates = new List <SellItemState> { new(item1, 100, "Item 1"), new(item2, 100000, "Item 2"), new(item3, 1, "Item 3") }; var expected = new VendorSellList(vendor, sellStates).Compile(); var ns = PacketTestUtilities.CreateTestNetState(); ns.SendVendorSellList(vendor.Serial, sellStates); var result = ns.SendPipe.Reader.TryRead(); AssertThat.Equal(result.Buffer[0].AsSpan(0), expected); }
public void TestVendorSellList() { var vendor = new Mobile(0x1); vendor.DefaultMobileInit(); var item1 = new Item(World.NewItem); var item2 = new Item(World.NewItem) { Name = "Second Item" }; var item3 = new Item(World.NewItem); var sellStates = new List <SellItemState> { new(item1, 100, "Item 1"), new(item2, 100000, "Item 2"), new(item3, 1, "Item 3") }; var data = new VendorSellList(vendor, sellStates).Compile(); var length = 9 + 14 * 3 + sellStates.Sum( state => (string.IsNullOrWhiteSpace(state.Item.Name) ? state.Name ?? "" : state.Item.Name.Trim()).Length ); Span <byte> expectedData = stackalloc byte[length]; var pos = 0; expectedData.Write(ref pos, (byte)0x9E); // Packet ID expectedData.Write(ref pos, (ushort)length); expectedData.Write(ref pos, vendor.Serial); expectedData.Write(ref pos, (ushort)sellStates.Count); for (var i = 0; i < sellStates.Count; i++) { var state = sellStates[i]; expectedData.Write(ref pos, state.Item.Serial); expectedData.Write(ref pos, (ushort)state.Item.ItemID); expectedData.Write(ref pos, (ushort)state.Item.Hue); expectedData.Write(ref pos, (ushort)state.Item.Amount); expectedData.Write(ref pos, (ushort)state.Price); var name = string.IsNullOrWhiteSpace(state.Item.Name) ? state.Name ?? "" : state.Item.Name.Trim(); expectedData.Write(ref pos, (ushort)name.Length); expectedData.WriteAscii(ref pos, name); } AssertThat.Equal(data, expectedData); }
public void TestVendorSellList() { var vendor = new Mobile(0x1); vendor.DefaultMobileInit(); var item1 = new Item(Serial.LastItem + 1); var item2 = new Item(Serial.LastItem + 2) { Name = "Second Item" }; var item3 = new Item(Serial.LastItem + 3); var sellStates = new List <SellItemState> { new SellItemState(item1, 100, "Item 1"), new SellItemState(item2, 100000, "Item 2"), new SellItemState(item3, 1, "Item 3") }; Span <byte> data = new VendorSellList(vendor, sellStates).Compile(); int length = 9 + 14 * 3 + sellStates.Sum(state => (string.IsNullOrWhiteSpace(state.Item.Name) ? state.Name ?? "" : state.Item.Name.Trim()).Length ); Span <byte> expectedData = stackalloc byte[length]; int pos = 0; expectedData[pos++] = 0x9E; // Packet ID ((ushort)length).CopyTo(ref pos, expectedData); vendor.Serial.CopyTo(ref pos, expectedData); ((ushort)sellStates.Count).CopyTo(ref pos, expectedData); for (int i = 0; i < sellStates.Count; i++) { SellItemState state = sellStates[i]; state.Item.Serial.CopyTo(ref pos, expectedData); ((ushort)state.Item.ItemID).CopyTo(ref pos, expectedData); ((ushort)state.Item.Hue).CopyTo(ref pos, expectedData); ((ushort)state.Item.Amount).CopyTo(ref pos, expectedData); ((ushort)state.Price).CopyTo(ref pos, expectedData); string name = string.IsNullOrWhiteSpace(state.Item.Name) ? state.Name ?? "" : state.Item.Name.Trim(); ((ushort)name.Length).CopyTo(ref pos, expectedData); name.CopyASCIITo(ref pos, expectedData); } AssertThat.Equal(data, expectedData); }