diff --git a/components/codetools/tests/runtestscodetools.lpi b/components/codetools/tests/runtestscodetools.lpi index 31f669c36f..33b85051e5 100644 --- a/components/codetools/tests/runtestscodetools.lpi +++ b/components/codetools/tests/runtestscodetools.lpi @@ -37,7 +37,7 @@ - + @@ -99,6 +99,11 @@ + + + + + diff --git a/components/codetools/tests/runtestscodetools.lpr b/components/codetools/tests/runtestscodetools.lpr index de21807b79..352d9d4d3f 100644 --- a/components/codetools/tests/runtestscodetools.lpr +++ b/components/codetools/tests/runtestscodetools.lpr @@ -37,8 +37,9 @@ uses fdt_objccategory, fdt_objcclass, {$ENDIF} TestBasicCodetools, TestCTRangeScan, TestPascalParser, TestMethodJumpTool, - TestStdCodetools, TestFindDeclaration, TestCompleteBlock, TestRefactoring, - fdt_arrays, testcodecompletion, TestCompReaderWriterPas; + TestStdCodetools, TestFindDeclaration, TestIdentCompletion, TestCompleteBlock, + TestRefactoring, TestCodeCompletion, TestCompReaderWriterPas, + fdt_arrays; const ConfigFilename = 'codetools.config'; diff --git a/components/codetools/tests/testcompreaderwriterpas.pas b/components/codetools/tests/testcompreaderwriterpas.pas index adba9e2166..63ea9018af 100644 --- a/components/codetools/tests/testcompreaderwriterpas.pas +++ b/components/codetools/tests/testcompreaderwriterpas.pas @@ -1,25 +1,30 @@ { Test with: ./runtests --format=plain --suite=TTestCompReaderWriterPas - ./runtests --format=plain --suite=TTestCompReaderWriterPas.TestWriteProperties + ./runtests --format=plain --suite=TTestCompReaderWriterPas.TestBaseTypesMaxValues + +Working: +- integer +- strings +- enum, custom enum range +- set of enum, set of custom enum range ToDo: -- base types -- UTF-8 string -- unicodestring -- enum -- set +- enum: add unit, avoid nameclash with-do +- set of boolean +- set of char +- custom integer TColor, add unit, avoid nameclash with-do +- method, avoid nameclash with-do - variant - datetime - TComponent.Left/Right -- custom range TColor - subcomponents - cycle in subcomponents - ancestor - childpos - inline component - collection -- DefineProperty +- DefineProperties } unit TestCompReaderWriterPas; @@ -200,6 +205,7 @@ type { TCompBaseTypesCustomStored } TCompBaseTypesCustomStored = class(TComponent) + procedure OnClick(Sender: TObject); private FABoolean: Boolean; FAByte: Byte; @@ -225,6 +231,7 @@ type FAWordBool: WordBool; FEnum: TEnum; FEnumRg: TEnumRg; + FEvent: TNotifyEvent; FSetOfEnum: TSetOfEnum; FSetOfEnumRg: TSetOfEnumRg; function ABooleanIsStored: Boolean; @@ -251,6 +258,7 @@ type function AWordIsStored: Boolean; function EnumIsStored: Boolean; function EnumRgIsStored: Boolean; + function EventIsStored: Boolean; function SetOfEnumIsStored: Boolean; function SetOfEnumRgIsStored: Boolean; public @@ -280,8 +288,9 @@ type DefEnumRg: TEnumRg; DefSetOfEnum: TSetOfEnum; DefSetOfEnumRg: TSetOfEnumRg; - published + DefEvent: TNotifyEvent; constructor Create(AOwner: TComponent); override; + published property ABoolean: Boolean read FABoolean write FABoolean stored ABooleanIsStored; property AByteBool: ByteBool read FAByteBool write FAByteBool stored AByteBoolIsStored; property AWordBool: WordBool read FAWordBool write FAWordBool stored AWordBoolIsStored; @@ -308,6 +317,7 @@ type property EnumRg: TEnumRg read FEnumRg write FEnumRg stored EnumRgIsStored; property SetOfEnum: TSetOfEnum read FSetOfEnum write FSetOfEnum stored SetOfEnumIsStored; property SetOfEnumRg: TSetOfEnumRg read FSetOfEnumRg write FSetOfEnumRg stored SetOfEnumRgIsStored; + property Event: TNotifyEvent read FEvent write FEvent stored EventIsStored; end; { TTestCompReaderWriterPas } @@ -421,6 +431,11 @@ end; { TCompBaseTypesCustomStored } +procedure TCompBaseTypesCustomStored.OnClick(Sender: TObject); +begin + if Sender=nil then ; +end; + function TCompBaseTypesCustomStored.ABooleanIsStored: Boolean; begin Result:=FABoolean<>DefABoolean; @@ -541,6 +556,11 @@ begin Result:=FEnumRg<>DefEnumRg; end; +function TCompBaseTypesCustomStored.EventIsStored: Boolean; +begin + Result:=TMethod(FEvent).Code<>TMethod(DefEvent).Code; +end; + function TCompBaseTypesCustomStored.SetOfEnumIsStored: Boolean; begin Result:=FSetOfEnum<>DefSetOfEnum; @@ -771,6 +791,7 @@ begin DefMethodValue.Code := nil; end; + //system.writeln('TCompWriterPas.WriteProperty ',dbgs(MethodValue.Data),' ',dbgs(MethodValue.Code),' ',dbgs(DefMethodValue.Data),' ',dbgs(DefMethodValue.Code)); if Assigned(OnGetMethodName) then begin if (MethodValue.Code <> DefMethodValue.Code) or @@ -837,8 +858,8 @@ begin end; tkVariant: begin - { Ensure that a Variant manager is installed } - if not assigned(VarClearProc) then + // Ensure that a Variant manager is installed + if not Assigned(VarClearProc) then raise EWriteError.Create(SErrNoVariantSupport); VarValue := tvardata(GetVariantProp(Instance, PropInfo)); @@ -853,7 +874,9 @@ begin System.writeln('TCompWriterPas.WriteProperty Property="',PropName,'" Kind=',PropType^.Kind); raise EWriteError.Create('proptype not supported: '+GetEnumName(TypeInfo(PropType^.Kind),ord(PropType^.Kind))); {$ENDIF} - { can't use variant() typecast, pulls in variants unit } + // can't use variant() typecast, pulls in variants unit + //case VarValue.vtype ofall + //ToDo WriteVariant(pvariant(@VarValue)^); end; end; @@ -1308,6 +1331,8 @@ begin DefSetOfEnum:=[red]; SetOfEnumRg:=[]; DefSetOfEnumRg:=[red]; + Event:=nil; + DefEvent:=@OnClick; end; TestWriteDescendant('TestBaseTypesZeroes',AComponent,nil,[ 'AByte:=0;', @@ -1325,6 +1350,7 @@ begin 'EnumRg:=TEnumRg(0);', 'SetOfEnum:=[];', 'SetOfEnumRg:=[];', + //'Event:=nil;', must not be written '']); finally AComponent.Free; @@ -1382,6 +1408,8 @@ begin DefSetOfEnum:=[red]; SetOfEnumRg:=[]; DefSetOfEnumRg:=[red]; + Event:=@OnClick; + DefEvent:=nil; end; TestWriteDescendant('TestBaseTypesMinValues',AComponent,nil,[ 'ABoolean:=False;', @@ -1404,6 +1432,7 @@ begin 'EnumRg:=green;', 'SetOfEnum:=[];', 'SetOfEnumRg:=[];', + 'Event:=@OnClick;', '']); finally AComponent.Free; @@ -1499,9 +1528,11 @@ begin with AComponent do begin Name:=AComponent.ClassName+'1'; AString:=#9'A'#13#10; + AShortString:=#9'A'#13#10; end; TestWriteDescendant('TestStringASCII',AComponent,nil,[ - 'AString:=#9''A''#13#10;']); + 'AString:=#9''A''#13#10;', + 'AShortString:=#9''A''#13#10;']); finally AComponent.Free; end;