public void TestVendorBuyList() { var vendor = new Mobile(0x1); vendor.DefaultMobileInit(); var cont = new Container(World.NewItem); var buyStates = new List <BuyItemState> { new("First Item", cont.Serial, World.NewItem, 10, 1, 0x01, 0), new("Second Item", cont.Serial, World.NewItem, 20, 2, 0x0A, 0), new("Third Item", cont.Serial, World.NewItem, 30, 10, 0x0F, 0) }; var expected = new VendorBuyList(vendor, buyStates).Compile(); var ns = PacketTestUtilities.CreateTestNetState(); ns.SendVendorBuyList(vendor, buyStates); var result = ns.SendPipe.Reader.TryRead(); AssertThat.Equal(result.Buffer[0].AsSpan(0), expected); }
public void TestVendorBuyList() { var vendor = new Mobile(0x1); vendor.DefaultMobileInit(); var cont = new Container(Serial.LastItem + 1); var buyStates = new List <BuyItemState> { new BuyItemState("First Item", cont.Serial, Serial.NewItem, 10, 1, 0x01, 0), new BuyItemState("Second Item", cont.Serial, Serial.NewItem, 20, 2, 0x0A, 0), new BuyItemState("Third Item", cont.Serial, Serial.NewItem, 30, 10, 0x0F, 0) }; Span <byte> data = new VendorBuyList(vendor, buyStates).Compile(); int length = 8 + 5 * 3 + buyStates.Sum(state => state.Description.Length + 1); Span <byte> expectedData = stackalloc byte[length]; int pos = 0; expectedData[pos++] = 0x74; // Packet ID ((ushort)expectedData.Length).CopyTo(ref pos, expectedData); // Length Serial.MinusOne.CopyTo(ref pos, expectedData); // Vendor Buy Pack Serial or -1 expectedData[pos++] = (byte)buyStates.Count; for (int i = 0; i < buyStates.Count; i++) { BuyItemState state = buyStates[i]; state.Price.CopyTo(ref pos, expectedData); string desc = state.Description ?? ""; expectedData[pos++] = (byte)(desc.Length + 1); desc.CopyASCIITo(ref pos, expectedData); pos++; } AssertThat.Equal(data, expectedData); }
public void TestVendorBuyList() { var vendor = new Mobile(0x1); vendor.DefaultMobileInit(); var cont = new Container(Serial.LastItem + 1); var buyStates = new List <BuyItemState> { new BuyItemState("First Item", cont.Serial, Serial.NewItem, 10, 1, 0x01, 0), new BuyItemState("Second Item", cont.Serial, Serial.NewItem, 20, 2, 0x0A, 0), new BuyItemState("Third Item", cont.Serial, Serial.NewItem, 30, 10, 0x0F, 0) }; var data = new VendorBuyList(vendor, buyStates).Compile(); var length = 8 + buyStates.Sum(state => 6 + state.Description.Length); Span <byte> expectedData = stackalloc byte[length]; var pos = 0; expectedData.Write(ref pos, (byte)0x74); // Packet ID expectedData.Write(ref pos, (ushort)expectedData.Length); // Length expectedData.Write(ref pos, Serial.MinusOne); // Vendor Buy Pack Serial or -1 expectedData.Write(ref pos, (byte)buyStates.Count); for (var i = 0; i < buyStates.Count; i++) { var state = buyStates[i]; expectedData.Write(ref pos, state.Price); var description = state.Description ?? ""; expectedData.Write(ref pos, (byte)Math.Min(255, description.Length + 1)); expectedData.WriteAsciiNull(ref pos, description, 255); } AssertThat.Equal(data, expectedData); }