mirror of
				https://gitlab.com/freepascal.org/fpc/source.git
				synced 2025-11-04 06:39:25 +01:00 
			
		
		
		
	git-svn-id: trunk@9 -
This commit is contained in:
		
							parent
							
								
									b68af1b0e3
								
							
						
					
					
						commit
						8caa0877d8
					
				
							
								
								
									
										1
									
								
								.gitattributes
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitattributes
									
									
									
									
										vendored
									
									
								
							@ -6128,6 +6128,7 @@ tests/webtbs/tw3893.pp -text
 | 
			
		||||
tests/webtbs/tw3898.pp -text
 | 
			
		||||
tests/webtbs/tw3899.pp -text
 | 
			
		||||
tests/webtbs/tw3900.pp -text
 | 
			
		||||
tests/webtbs/tw3973.pp -text
 | 
			
		||||
tests/webtbs/ub1873.pp -text
 | 
			
		||||
tests/webtbs/ub1883.pp -text
 | 
			
		||||
tests/webtbs/uw0555.pp -text
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										143
									
								
								tests/webtbs/tw3973.pp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										143
									
								
								tests/webtbs/tw3973.pp
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,143 @@
 | 
			
		||||
{ Source provided for Free Pascal Bug Report 3973 }
 | 
			
		||||
{ Submitted by "alphax" on  2005-05-16 }
 | 
			
		||||
{ e-mail: graphcoloring@yahoo.com.cn }
 | 
			
		||||
program fpc_test_3;
 | 
			
		||||
 | 
			
		||||
{$APPTYPE CONSOLE}
 | 
			
		||||
 | 
			
		||||
{$IFDEF FPC}
 | 
			
		||||
  {$MODE objfpc}
 | 
			
		||||
{$ENDIF}
 | 
			
		||||
 | 
			
		||||
uses
 | 
			
		||||
  SysUtils, Variants;
 | 
			
		||||
 | 
			
		||||
var
 | 
			
		||||
  FailureCount: Integer;
 | 
			
		||||
 | 
			
		||||
  procedure TestOpenArray;
 | 
			
		||||
 | 
			
		||||
    procedure p(const a: array of const);
 | 
			
		||||
 | 
			
		||||
      procedure Check(
 | 
			
		||||
              const TypeName: string;
 | 
			
		||||
              const aVarRec: TVarRec;
 | 
			
		||||
              const aExpectedVType: Byte
 | 
			
		||||
            );
 | 
			
		||||
      begin
 | 
			
		||||
        Write('VType of ', TypeName, ' element is: ', aVarRec.VType, '--------');
 | 
			
		||||
        if aVarRec.VType = aExpectedVType then
 | 
			
		||||
          WriteLn('Ok')
 | 
			
		||||
        else
 | 
			
		||||
        begin
 | 
			
		||||
          Inc(FailureCount);
 | 
			
		||||
          WriteLn('Failure');
 | 
			
		||||
        end;
 | 
			
		||||
      end;
 | 
			
		||||
 | 
			
		||||
    begin
 | 
			
		||||
      Check('Currency', a[0], vtCurrency);
 | 
			
		||||
      Check('Interface(nil)', a[1], vtInterface);
 | 
			
		||||
      Check('Interface', a[2], vtInterface);
 | 
			
		||||
      Check('Class Object(nil)', a[3], vtObject);
 | 
			
		||||
      Check('Class', a[4], vtClass);
 | 
			
		||||
      {$IFDEF FPC}
 | 
			
		||||
      Check('QWord', a[5], vtQWord);
 | 
			
		||||
      {$ENDIF}
 | 
			
		||||
      
 | 
			
		||||
      { I WISH FPC Introduce a vtDateTime for the TDatetime parameter }
 | 
			
		||||
    end;
 | 
			
		||||
 | 
			
		||||
  var
 | 
			
		||||
    C: Currency;
 | 
			
		||||
    DT: TDateTime;
 | 
			
		||||
    IntfNil, Intf: IInterface;
 | 
			
		||||
    Obj: TObject;
 | 
			
		||||
 | 
			
		||||
    {$IFDEF FPC}
 | 
			
		||||
    Quad: QWord;
 | 
			
		||||
    {$ENDIF}
 | 
			
		||||
  begin
 | 
			
		||||
    C := 0;
 | 
			
		||||
    IntfNil := nil;
 | 
			
		||||
    Intf := TInterfacedObject.Create();
 | 
			
		||||
    Obj := nil;
 | 
			
		||||
    {$IFDEF FPC}
 | 
			
		||||
    Quad := 0;
 | 
			
		||||
    p([C, IntfNil, Intf, Obj, TObject, Quad]);
 | 
			
		||||
    {$ELSE}
 | 
			
		||||
    p([C, IntfNil, Intf, Obj, TObject]);
 | 
			
		||||
    {$ENDIF}
 | 
			
		||||
  end;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  procedure TestVarType;
 | 
			
		||||
 | 
			
		||||
    procedure Check(
 | 
			
		||||
            const aTypeName: string;
 | 
			
		||||
            const V: Variant;
 | 
			
		||||
            const aExpectedVarType: TVarType);
 | 
			
		||||
    var
 | 
			
		||||
      VT: TVarType;
 | 
			
		||||
    begin
 | 
			
		||||
      VT := VarType(V);
 | 
			
		||||
      Write('VarType of ', aTypeName, ' variant is: ', VT, '--------');
 | 
			
		||||
      if VT = aExpectedVarType then
 | 
			
		||||
        Writeln('Ok')
 | 
			
		||||
      else
 | 
			
		||||
      begin
 | 
			
		||||
        WriteLn('Failure');
 | 
			
		||||
        Inc(FailureCount);
 | 
			
		||||
      end;
 | 
			
		||||
    end;
 | 
			
		||||
 | 
			
		||||
  var
 | 
			
		||||
    C: Currency;
 | 
			
		||||
    DT: TDateTime;
 | 
			
		||||
    Intf: IInterface;
 | 
			
		||||
    {$IFDEF FPC}
 | 
			
		||||
    Quad: QWord;
 | 
			
		||||
    {$ENDIF}
 | 
			
		||||
  begin
 | 
			
		||||
    C := 0;
 | 
			
		||||
    DT := 0;
 | 
			
		||||
    Intf := TInterfacedObject.Create();
 | 
			
		||||
    {$IFDEF FPC}
 | 
			
		||||
    Quad := 0;
 | 
			
		||||
    {$ENDIF}
 | 
			
		||||
    Check('Currency', C, varCurrency);
 | 
			
		||||
    Check('Datetime', DT, varDate);
 | 
			
		||||
    Check('Interface', Intf, varUnknown);
 | 
			
		||||
    {$IFDEF FPC}
 | 
			
		||||
    Check('QWord', Quad, varQWord);
 | 
			
		||||
    {$ENDIF}
 | 
			
		||||
  end;
 | 
			
		||||
 | 
			
		||||
  procedure TestFormat;
 | 
			
		||||
  var
 | 
			
		||||
    uLong: Longword;
 | 
			
		||||
    Longlong: Int64;
 | 
			
		||||
    {$IFDEF FPC}
 | 
			
		||||
    Quad: QWord;
 | 
			
		||||
    {$ENDIF}
 | 
			
		||||
  begin
 | 
			
		||||
    uLong := High(uLong);
 | 
			
		||||
    Writeln(Format('high of longword is: %u', [uLong]), ' ', IntToHex(ulong, 8));
 | 
			
		||||
    Longlong := High(Longlong);
 | 
			
		||||
    Writeln(Format('high of int64 is: %d', [Longlong]), ' ', IntToHex(Longlong, 16));
 | 
			
		||||
    {$IFDEF FPC}
 | 
			
		||||
    Quad := High(Quad);
 | 
			
		||||
    Writeln(Format('high of quadword is: %u', [Quad]), ' ', IntToHex(Quad, 16));
 | 
			
		||||
    {$ENDIF}
 | 
			
		||||
  end;
 | 
			
		||||
 | 
			
		||||
begin
 | 
			
		||||
  TestOpenArray();
 | 
			
		||||
  TestVarType();
 | 
			
		||||
  TestFormat();
 | 
			
		||||
  WriteLn;
 | 
			
		||||
  if FailureCount = 0 then
 | 
			
		||||
    WriteLn('All passed')
 | 
			
		||||
  else WriteLn(FailureCount, 'Failures');
 | 
			
		||||
  ReadLn;
 | 
			
		||||
end.
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user