mirror of
https://github.com/kwsch/PKHeX
synced 2024-11-10 06:34:19 +00:00
Add test for hex string (arbitrary length) convert
This commit is contained in:
parent
1cad57e35d
commit
01f75f8441
3 changed files with 23 additions and 9 deletions
|
@ -123,15 +123,20 @@ namespace PKHeX.Core
|
|||
|
||||
public static byte[] GetBytesFromHexString(string seed)
|
||||
{
|
||||
return Enumerable.Range(0, seed.Length)
|
||||
.Where(x => x % 2 == 0)
|
||||
.Select(x => Convert.ToByte(seed.Substring(x, 2), 16))
|
||||
.Reverse().ToArray();
|
||||
byte[] result = new byte[seed.Length / 2];
|
||||
for (int i = 0; i < result.Length; i++)
|
||||
{
|
||||
var slice = seed.Substring(i * 2, 2);
|
||||
result[i] = Convert.ToByte(slice, 16);
|
||||
}
|
||||
Array.Reverse(result);
|
||||
return result;
|
||||
}
|
||||
|
||||
public static string GetHexStringFromBytes(byte[] data, int offset, int length)
|
||||
{
|
||||
data = data.Skip(offset).Take(length).Reverse().ToArray();
|
||||
data = data.Slice(offset, length);
|
||||
Array.Reverse(data);
|
||||
return BitConverter.ToString(data).Replace("-", string.Empty);
|
||||
}
|
||||
|
||||
|
|
|
@ -49,12 +49,11 @@ namespace PKHeX.Tests.PKM
|
|||
CheckStringGetSet(nameof(pkm.Nickname), name_nidoran, pkm.Nickname, byte_nidoran, pkm.Nickname_Trash);
|
||||
}
|
||||
|
||||
private static void CheckStringGetSet(string check, string instr, string outstr, byte[] indata,
|
||||
byte[] outdata)
|
||||
private static void CheckStringGetSet(string check, string instr, string outstr, byte[] indata, byte[] outdata)
|
||||
{
|
||||
instr.Should().BeEquivalentTo(outstr);
|
||||
|
||||
outdata = outdata.Take(indata.Length).ToArray();
|
||||
outdata = outdata[..indata.Length];
|
||||
|
||||
indata.SequenceEqual(outdata).Should()
|
||||
.BeTrue($"expected {check} to set properly, instead got {string.Join(", ", outdata.Select(z => $"{z:X2}"))}");
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
using FluentAssertions;
|
||||
using System;
|
||||
using FluentAssertions;
|
||||
using Xunit;
|
||||
|
||||
namespace PKHeX.Tests.Util
|
||||
|
@ -34,5 +35,14 @@ namespace PKHeX.Tests.Util
|
|||
var convert = Core.Util.GetHexValue(v);
|
||||
convert.Should().Be(result);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData("01020304", 0x1020304)]
|
||||
public void CheckConvertHexString(string v, uint result)
|
||||
{
|
||||
var convert = Core.Util.GetBytesFromHexString(v);
|
||||
var u32 = BitConverter.ToUInt32(convert);
|
||||
u32.Should().Be(result);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue