public void TestVendorBuyContent6017() { 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 VendorBuyContent6017(buyStates).Compile(); Span <byte> expectedData = stackalloc byte[5 + buyStates.Count * 20]; var pos = 0; expectedData.Write(ref pos, (byte)0x3C); // Packet ID expectedData.Write(ref pos, (ushort)expectedData.Length); // Length expectedData.Write(ref pos, (ushort)buyStates.Count); // Count for (var i = buyStates.Count - 1; i >= 0; i--) { var buyState = buyStates[i]; expectedData.Write(ref pos, buyState.MySerial); expectedData.Write(ref pos, (ushort)buyState.ItemID); pos++; // ItemID Offset expectedData.Write(ref pos, (ushort)buyState.Amount); expectedData.Write(ref pos, (ushort)(i + 1)); // X expectedData.Write(ref pos, (ushort)1); // Y #if NO_LOCAL_INIT expectedData.Write(ref pos, (byte)0); // Grid Location? #else pos++; #endif expectedData.Write(ref pos, buyState.ContainerSerial); expectedData.Write(ref pos, (ushort)buyState.Hue); } AssertThat.Equal(data, expectedData); }
public void TestVendorBuyContent6017() { 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 VendorBuyContent6017(buyStates).Compile(); Span <byte> expectedData = stackalloc byte[5 + buyStates.Count * 20]; int pos = 0; expectedData[pos++] = 0x3C; // Packet ID ((ushort)expectedData.Length).CopyTo(ref pos, expectedData); // Length ((ushort)buyStates.Count).CopyTo(ref pos, expectedData); // Count for (int i = buyStates.Count - 1; i >= 0; i--) { BuyItemState buyState = buyStates[i]; buyState.MySerial.CopyTo(ref pos, expectedData); ((ushort)buyState.ItemID).CopyTo(ref pos, expectedData); pos++; // ItemID Offset ((ushort)buyState.Amount).CopyTo(ref pos, expectedData); ((ushort)(i + 1)).CopyTo(ref pos, expectedData); // X expectedData[pos++] = 0; expectedData[pos++] = 1; // Y expectedData[pos++] = 0; // Grid Location buyState.ContainerSerial.CopyTo(ref pos, expectedData); ((ushort)buyState.Hue).CopyTo(ref pos, expectedData); } AssertThat.Equal(data, expectedData); }