public void Q5_2()
 {
     Assert.AreEqual(@"0.1", BitManipulation.Q2_PrintBinary(0.5));
     Assert.AreEqual(@"ERROR", BitManipulation.Q2_PrintBinary(1));
     Assert.AreEqual(@"0.11", BitManipulation.Q2_PrintBinary(0.75));
     Assert.AreEqual(@"0.001", BitManipulation.Q2_PrintBinary(0.125));
 }
Esempio n. 2
0
        public IEnumerable <float?> Read()
        {
            var present   = ReadBooleanStream(Protocol.StreamKind.Present);
            var data      = ReadBinaryStream(Protocol.StreamKind.Data);
            int dataIndex = 0;

            if (present == null)
            {
                while (dataIndex + 4 <= data.Length)
                {
                    var value = BitManipulation.ReadFloatBE(data, dataIndex);
                    dataIndex += 4;
                    yield return(value);
                }
            }
            else
            {
                foreach (var isPresent in present)
                {
                    if (isPresent)
                    {
                        var value = BitManipulation.ReadFloatBE(data, dataIndex);
                        dataIndex += 4;
                        yield return(value);
                    }
                    else
                    {
                        yield return(null);
                    }
                }
            }
        }
        public void Q5_7()
        {
            var array = new List <BitInteger>()
            {
                new BitInteger(0x0005),
                new BitInteger(0x0000),
                new BitInteger(0x0001),
                new BitInteger(0x0003),
                new BitInteger(0x0002),
                new BitInteger(0x0006),
            };

            Assert.AreEqual(0x0004, BitManipulation.Q7_FindMissing(array));

            array = new List <BitInteger>()
            {
                new BitInteger(0x0005),
                new BitInteger(0x0001),
                new BitInteger(0x0003),
                new BitInteger(0x0002),
                new BitInteger(0x0006),
                new BitInteger(0x0004),
            };

            Assert.AreEqual(0x0000, BitManipulation.Q7_FindMissing(array));
        }
        public void Q5_3()
        {
            Assert.AreEqual(0x00000001, BitManipulation.Q3_GetPrevArith(0x00000002));
            Assert.AreEqual(0x00000850, BitManipulation.Q3_GetPrevArith(0x00000860));

            Assert.AreEqual(0x17FFFFFF, BitManipulation.Q3_GetNextArith(0x0FFFFFFF));
            Assert.AreEqual(0x00000881, BitManipulation.Q3_GetNextArith(0x00000860));
        }
        public void Q5_8()
        {
            const int width  = 8 * 2;
            const int height = 1;
            var       screen = new byte[width * height / 8];

            BitManipulation.Q8_DrawHorizontalLine(screen, width, 8, 10, 0);

            Assert.AreEqual(0xE0, screen[1]);

            screen = new byte[width * height / 8];
            BitManipulation.Q8_DrawHorizontalLine(screen, width, 0, 15, 0);

            Assert.AreEqual(0xFF, screen[0]);
            Assert.AreEqual(0xFF, screen[1]);
        }
        private void ParseItemNano(int rectype, int recnum, byte[] data)
        {
            this.BR = new Parser.BufferedReader(rectype,recnum,data, this.Tracing);
            bool flag;
            flag = !Parser.Output.ItemNano_Begin(XR.RecordNum, XR.RecordType == 1040005, CS);
            if (flag)
            {
                return;
            }

            br.SkipBytes(16, "Pre-Attr");
            int num = br.ReadCNum("AttrCount");
            Plugin.ItemNanoInfo info = default(Plugin.ItemNanoInfo);
            List<Plugin.ItemNanoKeyVal> list = new List<Plugin.ItemNanoKeyVal>();
            bool flag2 = false;
            int arg_C0_0 = 0;
            short num5;
            short num6;
            checked
            {
                int num2 = num - 1;
                int num3 = arg_C0_0;
                while (true)
                {
                    int arg_1C2_0 = num3;
                    int num4 = num2;
                    if (arg_1C2_0 > num4)
                    {
                        break;
                    }
                    Plugin.ItemNanoKeyVal item = default(Plugin.ItemNanoKeyVal);
                    item.AttrKey = br.ReadInt32("AttrKey" + Conversions.ToString(num3));
                    item.AttrVal = br.ReadInt32("AttrVal" + Conversions.ToString(num3));
                    list.Add(item);
                    int attrKey = item.AttrKey;
                    flag = (attrKey == 54);
                    if (flag)
                    {
                        info.QL = item.AttrVal;
                    }
                    else
                    {
                        flag = (attrKey == 76);
                        if (flag)
                        {
                            info.EquipPage = item.AttrVal;
                        }
                        else
                        {
                            flag = (attrKey == 88);
                            if (flag)
                            {
                                info.DefaultSlot = item.AttrVal;
                            }
                            else
                            {
                                flag = (attrKey == 298);
                                if (flag)
                                {
                                    info.EquipSlots = item.AttrVal;
                                }
                                else
                                {
                                    flag = (attrKey == 388);
                                    if (flag)
                                    {
                                        flag2 = true;
                                    }
                                }
                            }
                        }
                    }
                    num3++;
                }
                br.SkipBytes(8, "Post-Attr");
                num5 = br.ReadInt16("NameLen");
                num6 = br.ReadInt16("DescLen");
            }
            bool arg_222_0;
            if (num5 >= 0 && num6 >= 0)
            {
                if ((long)num5 <= 4095L)
                {
                    if ((long)num6 <= 4095L)
                    {
                        arg_222_0 = false;
                        goto IL_222;
                    }
                }
            }
            arg_222_0 = true;
        IL_222:
            flag = arg_222_0;
            if (flag)
            {
                br.DebugDump("NameLen or DescLen is invalid", Parser.ParserReturns.Failed);
            }
            flag = (num5 > 0);
            if (flag)
            {
                info.Name = br.ReadString((int)num5, "Name");
            }
            else
            {
                info.Name = "";
            }
            flag = (num6 > 0);
            if (flag)
            {
                info.Description = br.ReadString((int)num6, "Description");
            }
            else
            {
                info.Description = "";
            }
            BitManipulation bitManipulation = new BitManipulation();
            info.Type = info.EquipPage;
            flag = (Strings.InStr(info.Name, "_", CompareMethod.Binary) != 0 || Strings.InStr(Strings.UCase(info.Name), "BOSS", CompareMethod.Binary) != 0);
            if (flag)
            {
                info.Type = 4;
            }
            else
            {
                flag = flag2;
                if (flag)
                {
                    info.Type = 7;
                }
                else
                {
                    flag = (info.EquipPage == 1);
                    if (flag)
                    {
                        bool flag3 = bitManipulation.CheckBit((long)info.EquipSlots, 6) || bitManipulation.CheckBit((long)info.EquipSlots, 8);
                        if (flag3)
                        {
                            info.Type = 1;
                        }
                        else
                        {
                            info.Type = 6;
                        }
                    }
                }
            }
            try
            {
                Parser.Output.ItemNano(info, list.ToArray());
            }
            catch (SQLiteException expr_371)
            {
                ProjectData.SetProjectError(expr_371);
                Parser.ReturnCode = Parser.ParserReturns.Crashed;
                ProjectData.ClearProjectError();
            }
            catch (Exception expr_387)
            {
                ProjectData.SetProjectError(expr_387);
                Exception ex3 = expr_387;
                CustomException ex4 = new CustomException(ex3.ToString(), "Plugin Error");
                Parser.ReturnCode = Parser.ParserReturns.Crashed;
                ProjectData.ClearProjectError();
            }
            bool flag4 = true;
            checked
            {
                while (br.Ptr < br.Buffer.Length - 8 && flag4)
                {
                    switch (br.ReadInt32("ParseSetsKeyNum"))
                    {
                        case 2:
                            this.ParseFunctionSet(ref flag4);
                            break;
                        case 3:
                        case 5:
                        case 7:
                        case 8:
                        case 9:
                        case 10:
                        case 11:
                        case 12:
                        case 13:
                        case 15:
                        case 16:
                        case 17:
                        case 18:
                        case 19:
                        case 21:
                            goto IL_4BF;
                        case 4:
                            this.ParseAtkDefSet(ref flag4);
                            break;
                        case 6:
                            {
                                br.SkipBytes(4, "Pre-SkipSet");
                                int count = br.ReadCNum("SkipSet") * 8;
                                br.SkipBytes(count, "Post-SkipSet");
                                break;
                            }
                        case 14:
                            this.ParseAnimSoundSet(1, ref flag4);
                            break;
                        case 20:
                            this.ParseAnimSoundSet(2, ref flag4);
                            break;
                        case 22:
                            this.ParseActionSet(ref flag4);
                            break;
                        case 23:
                            this.ParseShopHash(ref flag4);
                            break;
                        default:
                            goto IL_4BF;
                    }
                    continue;
                IL_4BF:
                    flag4 = this.CritError("Invalid KeyNum");
                }
                try
                {
                    Parser.Output.ItemNano_End();
                }
                catch (SQLiteException expr_50A)
                {
                    ProjectData.SetProjectError(expr_50A);
                    Parser.ReturnCode = Parser.ParserReturns.Crashed;
                    ProjectData.ClearProjectError();
                }
                catch (Exception expr_520)
                {
                    ProjectData.SetProjectError(expr_520);
                    Exception ex5 = expr_520;
                    CustomException ex6 = new CustomException(ex5.ToString(), "Plugin Error");
                    Parser.ReturnCode = Parser.ParserReturns.Crashed;
                    ProjectData.ClearProjectError();
                }
            }
        }
 public void Q5_6()
 {
     Assert.AreEqual(0x00005555, BitManipulation.Q6_SwapOddEvenBits(0x0000AAAA));
     Assert.AreEqual(0x0000D893, BitManipulation.Q6_SwapOddEvenBits(0x0000E463));
 }
 public void Q5_5()
 {
     Assert.AreEqual(0, BitManipulation.Q5_BitSwapRequired(0x000000E2, 0x000000E2));
     Assert.AreEqual(4, BitManipulation.Q5_BitSwapRequired(0x00000860, 0x0000F860));
 }
 public void Q5_1()
 {
     Assert.AreEqual(0x0000044C, BitManipulation.Q1_InsertBits(0x00000400, 0x00000013, 2, 6));
     Assert.AreEqual(0x00000413, BitManipulation.Q1_InsertBits(0x00000400, 0x00000013, 0, 4));
     Assert.AreEqual(0x000BFFFF, BitManipulation.Q1_InsertBits(0x000B0000, 0x0000FFFF, 0, 15));
 }
Esempio n. 10
0
 public BitmanipulationTestClass()
 {
     bitManipulation = new BitManipulation();
 }