FpDebug: tests for signed enum

This commit is contained in:
Martin 2025-04-19 23:30:24 +02:00
parent 3f5473a15b
commit b4af31d09f
5 changed files with 49 additions and 4 deletions

View File

@ -1066,8 +1066,11 @@ t.Add(AName, p+'FiveDynArray'+e+'[0]', weMatch('.*',skRecord));
t.Add(AName, p+'EnumX0a'+e, weEnum('EnXVal01', 'TEnumX0'));
t.Add(AName, p+'EnumX0b'+e, weEnum('EnXVal04', 'TEnumX0'));
t.Add(AName, p+'EnumX1a'+e, weEnum('EnXVal11', 'TEnumX1'));
t.Add(AName, p+'EnumX1b'+e, weEnum('EnXVal14', 'TEnumX1'));
t.Add(AName, p+'EnumX1a'+e, weEnum('EnXVal11 = -3', 'TEnumX1'));
t.Add(AName, p+'EnumX1b'+e, weEnum('EnXVal14 = 10', 'TEnumX1'));
t.Add(AName, p+'EnumX1Aa'+e, weEnum('EnXValA11 = 1', 'TEnumX1a'));
t.Add(AName, p+'EnumX1Ab'+e, weEnum('EnXValA14 = 190', 'TEnumX1a'))
.IgnAll(stDwarf2, Compiler.Version >= 030301);
t.Add(AName, p+'EnumX2a'+e, weEnum('EnXVal21', 'TEnumX2'));
t.Add(AName, p+'EnumX2b'+e, weEnum('EnXVal24', 'TEnumX2'));
@ -1428,6 +1431,9 @@ begin
t.Add('EnXVal14', 'EnXVal14', weMatch('EnXVal14 *:?= *10', skEnumValue));
t.Add('EnXVal21', 'EnXVal21', weMatch('EnXVal21 *:?= *-203', skEnumValue));
t.Add('EnXVal24', 'EnXVal24', weMatch('EnXVal24 *:?= *210', skEnumValue));
t.Add('EnXValA11', 'EnXValA11', weMatch('EnXValA11 *= *1', skEnumValue));
t.Add('EnXValA14', 'EnXValA14', weMatch('EnXValA14 *= *190', skEnumValue))
.IgnAll(stDwarf2, Compiler.Version >= 030301);
// recurse pointers
// TODO: currently just run them and check they do not fail,crash or hang.
@ -4055,7 +4061,32 @@ procedure TTestWatches.TestWatchesExpression;
t.Add('ENUM-Cmp: ', 'TEnum('+p+'Enum) > eNVaL3', weBool(False));
t.Add('ENUM-Cmp: ', p+'Enum > TEnum(2)', weBool(False));
t.Add('ENUM-Cmp: ', p+'Enum > TEnum(1)', weBool(True));
t.Add('ENUM-Cmp: ', p+'Enum > TEnum(-1)', weBool(True));
t.Add('ENUM-Cmp: ', p+'Enum > TEnum(-1)', weBool(False)) // Enum is all positive / cast will be an unsigned enum // changed
.IgnAll([], Compiler.Version < 030301)
.IgnAll(stDwarf2, Compiler.Version >= 030301);
t.Add('ENUM-Cmp: ', p+'EnumX0a < TEnumX0(-1)', weBool(True));
t.Add('ENUM-Cmp: ', p+'EnumX0a > TEnumX0(-900)', weBool(True));
t.Add('ENUM-Cmp: ', p+'EnumX0b > TEnumX0(-1)', weBool(True));
t.Add('ENUM-Cmp: ', p+'EnumX1a < '+p+'EnumX1b', weBool(True));
t.Add('ENUM-Cmp: ', p+'EnumX1a < EnXVal14', weBool(True));
t.Add('ENUM-Cmp: ', p+'EnumX1a = EnXVal11', weBool(True));
t.Add('ENUM-Cmp: ', p+'EnumX1b > EnXVal11', weBool(True));
t.Add('ENUM-Cmp: ', p+'EnumX1b > EnXVal12', weBool(True));
t.Add('ENUM-Cmp: ', 'EnXVal11 < EnXVal14', weBool(True));
t.Add('ENUM-Cmp: ', p+'EnumX1Aa < '+p+'EnumX1Ab', weBool(True))
.IgnAll(stDwarf2, Compiler.Version >= 030301);
t.Add('ENUM-Cmp: ', p+'EnumX1Aa < EnXValA14', weBool(True))
.IgnAll(stDwarf2, Compiler.Version >= 030301);
t.Add('ENUM-Cmp: ', p+'EnumX1Aa = EnXValA11', weBool(True))
.IgnAll(stDwarf2, Compiler.Version >= 030301);
t.Add('ENUM-Cmp: ', p+'EnumX1Ab > EnXValA11', weBool(True))
.IgnAll(stDwarf2, Compiler.Version >= 030301);
t.Add('ENUM-Cmp: ', p+'EnumX1Ab > EnXValA12', weBool(True))
.IgnAll(stDwarf2, Compiler.Version >= 030301);
t.Add('ENUM-Cmp: ', 'EnXValA11 < EnXValA14', weBool(True))
.IgnAll(stDwarf2, Compiler.Version >= 030301);
end;
var

View File

@ -276,7 +276,8 @@ type
TEnumX0 = (EnXVal01= -503, EnXVal02= 4, EnXVal03= 7, EnXVal04= 510);
{$PackEnum 1}
TEnumX1 = (EnXVal11= -3, EnXVal12= 4, EnXVal13= 7, EnXVal14= 10);
TEnumX1 = (EnXVal11= -3, EnXVal12= 4, EnXVal13= 7, EnXVal14= 10);
TEnumX1a = (EnXValA11= 1, EnXValA12= 4, EnXValA13= 7, EnXValA14= 190);
{$PackEnum 2}
TEnumX2 = (EnXVal21= -203, EnXVal22= 4, EnXVal23= 7, EnXVal24= 210);
{$PackEnum default}

View File

@ -425,6 +425,8 @@
pre__EnumX0b{e} _OP_ TEnumX0(EnXVal04); //@@ _pre3_EnumX0b{e3};
pre__EnumX1a{e} _OP_ TEnumX1(EnXVal11); //@@ _pre3_EnumX1a{e3};
pre__EnumX1b{e} _OP_ TEnumX1(EnXVal14); //@@ _pre3_EnumX1b{e3};
pre__EnumX1Aa{e} _OP_ TEnumX1a(EnXValA11); //@@ _pre3_EnumX1Aa{e3};
pre__EnumX1Ab{e} _OP_ TEnumX1a(EnXValA14); //@@ _pre3_EnumX1Ab{e3};
pre__EnumX2a{e} _OP_ TEnumX2(EnXVal21); //@@ _pre3_EnumX2a{e3};
pre__EnumX2b{e} _OP_ TEnumX2(EnXVal24); //@@ _pre3_EnumX2b{e3};

View File

@ -1845,6 +1845,17 @@ begin
Result := True;
Expect := AContext.Expectation;
TestWatchDisplayFormat.Enum.UseInherited := True;
TestWatchDisplayFormat.EnumVal.UseInherited := True;
TestWatchDisplayFormat.Enum.MainFormat := vdfEnumName;
TestWatchDisplayFormat.EnumVal.MainFormat := vdfEnumName;
if pos('=', Expect.ExpTextData) > 0 then begin
TestWatchDisplayFormat.Enum.UseInherited := False;
TestWatchDisplayFormat.EnumVal.UseInherited := False;
TestWatchDisplayFormat.Enum.MainFormat := vdfEnumNameAndOrd;
TestWatchDisplayFormat.EnumVal.MainFormat := vdfEnumNameAndOrd;
end;
Result := TestEquals('Data', Expect.ExpTextData, FWatchResultPrinter.PrintWatchValue(AContext.WatchRes, TestWatchDisplayFormat, ''), not(Compiler.SymbolType in stDwarf2), AContext, AnIgnoreRsn);
end;
end;