Exemple #1
0
        public void TestSpellbookContent()
        {
            Serial serial  = 0x1000;
            ushort offset  = 10;
            ulong  content = 0x123456789ABCDEF0;

            var data = new SpellbookContent(serial, offset, content).Compile();

            Span <byte> expectedData = stackalloc byte[5 + 64 * 19]; // Max size
            var         pos          = 0;

            expectedData.Write(ref pos, (byte)0x3C); // Packet ID
            pos += 4;                                // Length + spell count

            ushort count = 0;

            for (var i = 0; i < 64; i++)
            {
                if ((content & (1ul << i)) != 0)
                {
                    expectedData.Write(ref pos, 0x7FFFFFFF - i);
#if NO_LOCAL_INIT
                    expectedData.Write(ref pos, (ushort)0);
                    expectedData.Write(ref pos, (byte)0);
#else
                    pos += 3;
#endif
                    expectedData.Write(ref pos, (ushort)(i + offset));
#if NO_LOCAL_INIT
                    expectedData.Write(ref pos, 0); // X. Y
#else
                    pos += 4;
#endif
                    expectedData.Write(ref pos, serial);
#if NO_LOCAL_INIT
                    expectedData.Write(ref pos, (ushort)0);
#else
                    pos += 2;
#endif
                    count++;
                }
            }

            expectedData.Slice(1, 2).Write((ushort)pos); // Length
            expectedData.Slice(3, 2).Write(count);       // Count

            expectedData = expectedData.Slice(0, pos);

            AssertThat.Equal(data, expectedData);
        }
Exemple #2
0
        public void TestSpellbookContent()
        {
            Serial serial  = 0x1000;
            ushort offset  = 10;
            ushort graphic = 100;
            ulong  content = 0x123456789ABCDEF0;

            var expected = new SpellbookContent(serial, offset, content).Compile();

            using var ns = PacketTestUtilities.CreateTestNetState();
            ns.SendSpellbookContent(serial, graphic, offset, content);

            var result = ns.SendPipe.Reader.TryRead();

            AssertThat.Equal(result.Buffer[0].AsSpan(0), expected);
        }