program Test;

(* Automaticky test na konverzni funkce knihovny LibVer.
   Staci prelozit a spustit a test sam ohlasi je-li vse OK nebo chybu
*)

uses
  Crt,
  LibVer,
  Dos,
  NumToStr;


var
  OldExitProc:Pointer;

procedure MyExitProc; far;
begin
  ExitProc:=OldExitProc;

  if ExitCode<>0 then
  begin
    writeln('ExitCode: ',ExitCode, ', ErrAddr: ', PtrToStr(ErrorAddr));
   {$ifndef MCP}
    readln;
   {$endif}
  end;
 {$ifdef MCP}
  repeat until false;
 {$endif}
end;

var
  dwDate  :LongInt;
  dt      :DateTime;
  str     :tVerStr;
  PomVerNo:tVerNo;
begin
  clrscr;
  writeln('Spusteni programu');

  OldExitProc:=ExitProc;
  ExitProc:=@MyExitProc;

  if VerStrToNo(LibVer.cVer)<>LibVer.cVerNo then RunError(255);
  if VerNoToStr(LibVer.cVerNo)+','+GetVerDateStr(LibVer.cVer, '.')
                                           <>LibVer.cVer then RunError(255);

  dwDate:=GetVerPackDate(LibVer.cVer);
  UnPackTime(dwDate, dt);
  str:=IntToStr(dt.day, tpDec, 2)+'.'+IntToStr(dt.month, tpDec, 2)+'.'+IntToStr(dt.year, tpDec, 4);
  if str<>GetVerDateStr(LibVer.cVer, '.') then RunError(255);

  dwDate:=GetVerPackDate(LibVer.cVer);
  UnPackTime(dwDate, dt);
  str:=IntToStr(dt.day, tpDec, 2)+'/'+IntToStr(dt.month, tpDec, 2)+'/'+IntToStr(dt.year, tpDec, 4);
  if str<>GetVerDateStr(LibVer.cVer, '/') then RunError(255);

 {CheckVerNo}
  if CheckVerNo($0000)<>False then begin writeln('CheckVerNo Error'); RunError(255); end;
  if CheckVerNo($0001)<>True  then begin writeln('CheckVerNo Error'); RunError(255); end;
  if CheckVerNo($0100)<>True  then begin writeln('CheckVerNo Error'); RunError(255); end;
  if CheckVerNo($0009)<>True  then begin writeln('CheckVerNo Error'); RunError(255); end;
  if CheckVerNo($0099)<>True  then begin writeln('CheckVerNo Error'); RunError(255); end;
  if CheckVerNo($0900)<>True  then begin writeln('CheckVerNo Error'); RunError(255); end;
  if CheckVerNo($9000)<>True  then begin writeln('CheckVerNo Error'); RunError(255); end;
  if CheckVerNo($9900)<>True  then begin writeln('CheckVerNo Error'); RunError(255); end;
  if CheckVerNo($9999)<>True  then begin writeln('CheckVerNo Error'); RunError(255); end;
  if CheckVerNo($000A)<>False then begin writeln('CheckVerNo Error'); RunError(255); end;
  if CheckVerNo($00A8)<>False then begin writeln('CheckVerNo Error'); RunError(255); end;
  if CheckVerNo($9A00)<>False then begin writeln('CheckVerNo Error'); RunError(255); end;
  if CheckVerNo($FFFF)<>False then begin writeln('CheckVerNo Error'); RunError(255); end;
  if CheckVerNo($F000)<>False then begin writeln('CheckVerNo Error'); RunError(255); end;

 {VerStrToNo}
  if VerStrToNo    ('00.00,DD.MM.YYYY')<>$0000 then begin writeln('VerStrToNo Error'); RunError(255); end;
  if VerStrToNo    ('12.50,DD.MM.YYYY')<>$1250 then begin writeln('VerStrToNo Error'); RunError(255); end;
  if VerStrToNo    ('99.99,DD.MM.YYYY')<>$9999 then begin writeln('VerStrToNo Error'); RunError(255); end;

 {VerNoToStr}
  if VerNoToStr    ($0000)<>'00.00' then begin writeln('VerNoToStr Error'); RunError(255); end;
  if VerNoToStr    ($5678)<>'56.78' then begin writeln('VerNoToStr Error'); RunError(255); end;
  if VerNoToStr    ($9999)<>'99.99' then begin writeln('VerNoToStr Error'); RunError(255); end;

 {GetVerDateStr}
  if GetVerDateStr ('01.20,13.05.1989','.')<>'13.05.1989' then begin writeln('GetVerDateStr Error'); RunError(255); end;
  if GetVerDateStr ('01.20,13.05.1989','/')<>'13/05/1989' then begin writeln('GetVerDateStr Error'); RunError(255); end;
  if GetVerDateStr ('01.20,29.01.2060','-')<>'29-01-2060' then begin writeln('GetVerDateStr Error'); RunError(255); end;

 {GetVerPackDate}
  dwDate:=GetVerPackDate('01.20,13.05.1989'); UnPackTime(dwDate,dt);
  if (dt.Day<>13)or(dt.Month<> 5)or(dt.Year<>1989) then begin writeln('GetVerPackDate Error'); RunError(255); end;
  dwDate:=GetVerPackDate('01.20,29.01.2060'); UnPackTime(dwDate,dt);
  if (dt.Day<>29)or(dt.Month<> 1)or(dt.Year<>2060) then begin writeln('GetVerPackDate Error'); RunError(255); end;
  dwDate:=GetVerPackDate('01.20,01.12.2012'); UnPackTime(dwDate,dt);
  if (dt.Day<> 1)or(dt.Month<>12)or(dt.Year<>2012) then begin writeln('GetVerPackDate Error'); RunError(255); end;

 {IncVerNo}
  PomVerNo:=$0000; IncVerNo(PomVerNo); if PomVerNo<>$0001 then begin writeln('IncVerNo Error'); RunError(255); end;
  PomVerNo:=$0001; IncVerNo(PomVerNo); if PomVerNo<>$0002 then begin writeln('IncVerNo Error'); RunError(255); end;
  PomVerNo:=$0005; IncVerNo(PomVerNo); if PomVerNo<>$0006 then begin writeln('IncVerNo Error'); RunError(255); end;
  PomVerNo:=$0008; IncVerNo(PomVerNo); if PomVerNo<>$0009 then begin writeln('IncVerNo Error'); RunError(255); end;
  PomVerNo:=$0009; IncVerNo(PomVerNo); if PomVerNo<>$0010 then begin writeln('IncVerNo Error'); RunError(255); end;
  PomVerNo:=$0019; IncVerNo(PomVerNo); if PomVerNo<>$0020 then begin writeln('IncVerNo Error'); RunError(255); end;
  PomVerNo:=$0089; IncVerNo(PomVerNo); if PomVerNo<>$0090 then begin writeln('IncVerNo Error'); RunError(255); end;
  PomVerNo:=$0099; IncVerNo(PomVerNo); if PomVerNo<>$0100 then begin writeln('IncVerNo Error'); RunError(255); end;
  PomVerNo:=$0100; IncVerNo(PomVerNo); if PomVerNo<>$0101 then begin writeln('IncVerNo Error'); RunError(255); end;
  PomVerNo:=$0199; IncVerNo(PomVerNo); if PomVerNo<>$0200 then begin writeln('IncVerNo Error'); RunError(255); end;
  PomVerNo:=$0899; IncVerNo(PomVerNo); if PomVerNo<>$0900 then begin writeln('IncVerNo Error'); RunError(255); end;
  PomVerNo:=$0999; IncVerNo(PomVerNo); if PomVerNo<>$1000 then begin writeln('IncVerNo Error'); RunError(255); end;
  PomVerNo:=$1999; IncVerNo(PomVerNo); if PomVerNo<>$2000 then begin writeln('IncVerNo Error'); RunError(255); end;
  PomVerNo:=$8999; IncVerNo(PomVerNo); if PomVerNo<>$9000 then begin writeln('IncVerNo Error'); RunError(255); end;
  PomVerNo:=$9999; IncVerNo(PomVerNo); if PomVerNo<>$0000 then begin writeln('IncVerNo Error'); RunError(255); end;

  writeln('Test probehl bez chyby');
 {$ifdef MCP}
  repeat until false;
 {$endif}
end.