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)); }
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)); }
public BitmanipulationTestClass() { bitManipulation = new BitManipulation(); }