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
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|