1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-19 16:40:26 +02:00
Beef/IDEHelper/Tests/src/Bitfields.bf

50 lines
997 B
Beef
Raw Normal View History

2022-02-11 05:49:11 -05:00
using System;
namespace Tests
{
class Bitfields
{
enum EnumA
{
A = -64,
B = 12,
C = 63
}
struct StructA
{
[Bitfield<uint8>(.Public, "A")]
[Bitfield<uint8>(.Public, .Bits(3), "B")]
[Bitfield<EnumA>(.Public, "C")]
[Bitfield(.Public, .ValueRange(0..<12), "D")]
public int32 mVal;
[Bitfield<uint8>(.Public, .AutoRev, "E")]
[Bitfield<uint8>(.Public, .BitsRev(8), "F")]
[Bitfield<uint8>(.Public, .ValueRangeRev(0..<256), "G")]
[Bitfield<uint8>(.Public, .BitsAt(8, 0), "H")]
2022-02-11 09:44:41 -05:00
public static int32 sVal2;
2022-02-11 05:49:11 -05:00
}
[Test]
static void TestBasics()
{
2022-02-11 09:44:41 -05:00
Test.Assert(sizeof(StructA) == 4);
2022-02-11 05:49:11 -05:00
StructA sa = .();
sa.A = 0x12;
sa.B = 7;
sa.C = .C;
sa.D = 9;
2022-02-11 09:44:41 -05:00
StructA.E = 0x22;
StructA.F = 0x33;
StructA.G = 0x44;
StructA.H = 0x55;
2022-02-11 05:49:11 -05:00
Test.Assert(sa.A == 0x12);
Test.Assert(sa.B == 7);
Test.Assert(sa.C == .C);
Test.Assert(sa.D == 9);
Test.Assert(sa.mVal == 0x0025FF12);
2022-02-11 09:44:41 -05:00
Test.Assert(StructA.sVal2 == 0x22334455);
2022-02-11 05:49:11 -05:00
}
}
}