public void HeaderFormat_IsCorrect() { var nes = new NumberEncoderService(); var actualBytes = _npcFile.SerializeToByteArray(nes); CollectionAssert.AreEqual(Encoding.ASCII.GetBytes(_npcFile.FileType), actualBytes.Take(3).ToArray()); CollectionAssert.AreEqual(nes.EncodeNumber(_npcFile.CheckSum, 4), actualBytes.Skip(3).Take(4).ToArray()); CollectionAssert.AreEqual(nes.EncodeNumber(_npcFile.Length, 2), actualBytes.Skip(7).Take(2).ToArray()); CollectionAssert.AreEqual(nes.EncodeNumber(1, 1), actualBytes.Skip(9).Take(1).ToArray()); }
private byte[] MakeENFFileWithWrongLength(int checksum, int length, params ENFRecord[] records) { var numberEncoderService = new NumberEncoderService(); var bytes = new List <byte>(); bytes.AddRange(Encoding.ASCII.GetBytes("ENF")); bytes.AddRange(numberEncoderService.EncodeNumber(checksum, 4)); bytes.AddRange(numberEncoderService.EncodeNumber(length, 2)); bytes.Add(numberEncoderService.EncodeNumber(1, 1)[0]); foreach (var record in records) { bytes.AddRange(record.SerializeToByteArray(numberEncoderService)); } return(bytes.ToArray()); }
private static byte[] CreateExpectedBytes(IMapFileProperties props) { var numberEncoderService = new NumberEncoderService(); var mapStringEncoderService = new MapStringEncoderService(); var ret = new List <byte>(); ret.AddRange(Encoding.ASCII.GetBytes(props.FileType)); ret.AddRange(props.Checksum); var fullName = Enumerable.Repeat((byte)0xFF, 24).ToArray(); var encodedName = mapStringEncoderService.EncodeMapString(props.Name); Array.Copy(encodedName, 0, fullName, fullName.Length - encodedName.Length, encodedName.Length); ret.AddRange(fullName); ret.AddRange(numberEncoderService.EncodeNumber(props.PKAvailable ? 3 : 0, 1)); ret.AddRange(numberEncoderService.EncodeNumber((byte)props.Effect, 1)); ret.AddRange(numberEncoderService.EncodeNumber(props.Music, 1)); ret.AddRange(numberEncoderService.EncodeNumber(props.MusicExtra, 1)); ret.AddRange(numberEncoderService.EncodeNumber(props.AmbientNoise, 2)); ret.AddRange(numberEncoderService.EncodeNumber(props.Width, 1)); ret.AddRange(numberEncoderService.EncodeNumber(props.Height, 1)); ret.AddRange(numberEncoderService.EncodeNumber(props.FillTile, 2)); ret.AddRange(numberEncoderService.EncodeNumber(props.MapAvailable ? 1 : 0, 1)); ret.AddRange(numberEncoderService.EncodeNumber(props.CanScroll ? 1 : 0, 1)); ret.AddRange(numberEncoderService.EncodeNumber(props.RelogX, 1)); ret.AddRange(numberEncoderService.EncodeNumber(props.RelogY, 1)); ret.AddRange(numberEncoderService.EncodeNumber(props.Unknown2, 1)); return(ret.ToArray()); }