You've already forked lazarus-ccr
XSD Date related implementations :
* TDurationRemotable : duration * TTimeRemotable : time * TDateRemotable : date * TDateTimeRemotable : dateTime git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@901 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
@ -400,6 +400,14 @@ type
|
|||||||
{ TDateRemotable }
|
{ TDateRemotable }
|
||||||
|
|
||||||
TDateRemotable = class(TBaseDateRemotable)
|
TDateRemotable = class(TBaseDateRemotable)
|
||||||
|
public
|
||||||
|
class function ToStr(const ADate : TDateTimeRec):string;override;
|
||||||
|
class function Parse(const ABuffer : string):TDateTimeRec;override;
|
||||||
|
end;
|
||||||
|
|
||||||
|
{ TDateTimeRemotable }
|
||||||
|
|
||||||
|
TDateTimeRemotable = class(TBaseDateRemotable)
|
||||||
protected
|
protected
|
||||||
function GetDatepart(const AIndex : Integer) : Integer;override;
|
function GetDatepart(const AIndex : Integer) : Integer;override;
|
||||||
public
|
public
|
||||||
@ -1734,7 +1742,8 @@ begin
|
|||||||
r.Register(sXSD_NS,TypeInfo(Double),'double').AddPascalSynonym('Double');
|
r.Register(sXSD_NS,TypeInfo(Double),'double').AddPascalSynonym('Double');
|
||||||
r.Register(sXSD_NS,TypeInfo(Extended),'decimal').AddPascalSynonym('Extended');
|
r.Register(sXSD_NS,TypeInfo(Extended),'decimal').AddPascalSynonym('Extended');
|
||||||
|
|
||||||
r.Register(sXSD_NS,TypeInfo(TDateRemotable),'dateTime').AddPascalSynonym('TDateRemotable');
|
r.Register(sXSD_NS,TypeInfo(TDateTimeRemotable),'dateTime').AddPascalSynonym('TDateTimeRemotable');
|
||||||
|
r.Register(sXSD_NS,TypeInfo(TDateRemotable),'date').AddPascalSynonym('TDateRemotable');
|
||||||
{$IFDEF WST_HAS_TDURATIONREMOTABLE}
|
{$IFDEF WST_HAS_TDURATIONREMOTABLE}
|
||||||
r.Register(sXSD_NS,TypeInfo(TDurationRemotable),'duration').AddPascalSynonym('TDurationRemotable');
|
r.Register(sXSD_NS,TypeInfo(TDurationRemotable),'duration').AddPascalSynonym('TDurationRemotable');
|
||||||
{$ELSE WST_HAS_TDURATIONREMOTABLE}
|
{$ELSE WST_HAS_TDURATIONREMOTABLE}
|
||||||
@ -5632,17 +5641,29 @@ end;
|
|||||||
|
|
||||||
{ TDateRemotable }
|
{ TDateRemotable }
|
||||||
|
|
||||||
class function TDateRemotable.ToStr(const ADate: TDateTimeRec): string;
|
class function TDateRemotable.ToStr(const ADate : TDateTimeRec) : string;
|
||||||
begin
|
begin
|
||||||
Result := xsd_DateTimeToStr(ADate);
|
Result := xsd_DateTimeToStr(ADate,xdkDate);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
class function TDateRemotable.Parse(const ABuffer: string): TDateTimeRec;
|
class function TDateRemotable.Parse(const ABuffer : string) : TDateTimeRec;
|
||||||
begin
|
begin
|
||||||
Result := xsd_StrToDate(ABuffer);
|
Result := xsd_StrToDate(ABuffer,xdkDate);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TDateRemotable.GetDatepart(const AIndex: Integer): Integer;
|
{ TDateTimeRemotable }
|
||||||
|
|
||||||
|
class function TDateTimeRemotable.ToStr(const ADate: TDateTimeRec): string;
|
||||||
|
begin
|
||||||
|
Result := xsd_DateTimeToStr(ADate,xdkDateTime);
|
||||||
|
end;
|
||||||
|
|
||||||
|
class function TDateTimeRemotable.Parse(const ABuffer: string): TDateTimeRec;
|
||||||
|
begin
|
||||||
|
Result := xsd_StrToDate(ABuffer,xdkDateTime);
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TDateTimeRemotable.GetDatepart(const AIndex: Integer): Integer;
|
||||||
begin
|
begin
|
||||||
case AIndex of
|
case AIndex of
|
||||||
3 : Result := HourOf(AsDate);
|
3 : Result := HourOf(AsDate);
|
||||||
@ -5675,7 +5696,7 @@ class procedure TBaseDateRemotable.Save(
|
|||||||
var
|
var
|
||||||
buffer : string;
|
buffer : string;
|
||||||
begin
|
begin
|
||||||
buffer := TDateRemotable(AObject).AsString;
|
buffer := TBaseDateRemotable(AObject).AsString;
|
||||||
AStore.BeginObject(AName,ATypeInfo);
|
AStore.BeginObject(AName,ATypeInfo);
|
||||||
try
|
try
|
||||||
AStore.PutScopeInnerValue(TypeInfo(string),buffer);
|
AStore.PutScopeInnerValue(TypeInfo(string),buffer);
|
||||||
@ -5697,7 +5718,7 @@ begin
|
|||||||
try
|
try
|
||||||
strBuffer := '';
|
strBuffer := '';
|
||||||
AStore.GetScopeInnerValue(TypeInfo(string),strBuffer);
|
AStore.GetScopeInnerValue(TypeInfo(string),strBuffer);
|
||||||
(AObject as TDateRemotable).AsString := strBuffer
|
(AObject as TBaseDateRemotable).AsString := strBuffer
|
||||||
finally
|
finally
|
||||||
AStore.EndScopeRead();
|
AStore.EndScopeRead();
|
||||||
end;
|
end;
|
||||||
@ -5706,8 +5727,8 @@ end;
|
|||||||
|
|
||||||
procedure TBaseDateRemotable.Assign(Source: TPersistent);
|
procedure TBaseDateRemotable.Assign(Source: TPersistent);
|
||||||
begin
|
begin
|
||||||
if Source.InheritsFrom(TDateRemotable) then begin
|
if Source.InheritsFrom(TBaseDateRemotable) then begin
|
||||||
FDate := TDateRemotable(Source).FDate;
|
FDate := TBaseDateRemotable(Source).FDate;
|
||||||
end else begin
|
end else begin
|
||||||
inherited Assign(Source);
|
inherited Assign(Source);
|
||||||
end;
|
end;
|
||||||
@ -6847,8 +6868,8 @@ begin
|
|||||||
end else begin
|
end else begin
|
||||||
if Source.InheritsFrom(TTimeRemotable) then
|
if Source.InheritsFrom(TTimeRemotable) then
|
||||||
Self.Data := TTimeRemotable(Source).Data
|
Self.Data := TTimeRemotable(Source).Data
|
||||||
else if Source.InheritsFrom(TDateRemotable) then
|
else if Source.InheritsFrom(TDateTimeRemotable) then
|
||||||
Self.Data := DateTimeToTimeRec(TDateRemotable(Source).AsUTCDate)
|
Self.Data := DateTimeToTimeRec(TDateTimeRemotable(Source).AsUTCDate)
|
||||||
else
|
else
|
||||||
inherited Assign(Source);
|
inherited Assign(Source);
|
||||||
end;
|
end;
|
||||||
|
@ -1263,7 +1263,9 @@ begin
|
|||||||
if ( ATypeInfo^.Kind = tkClass ) then begin
|
if ( ATypeInfo^.Kind = tkClass ) then begin
|
||||||
locClass := GetTypeData(ATypeInfo)^.ClassType;
|
locClass := GetTypeData(ATypeInfo)^.ClassType;
|
||||||
if locClass.InheritsFrom(TAbstractSimpleRemotable) then begin
|
if locClass.InheritsFrom(TAbstractSimpleRemotable) then begin
|
||||||
if locClass.InheritsFrom(TDateRemotable) then
|
if locClass.InheritsFrom(TDateTimeRemotable) or
|
||||||
|
locClass.InheritsFrom(TDateRemotable)
|
||||||
|
then
|
||||||
locScopeType := stXmlRpcDate
|
locScopeType := stXmlRpcDate
|
||||||
else
|
else
|
||||||
locScopeType := stSimpleContent;
|
locScopeType := stSimpleContent;
|
||||||
|
@ -65,11 +65,27 @@ const
|
|||||||
Negative : False;
|
Negative : False;
|
||||||
);
|
);
|
||||||
|
|
||||||
function xsd_TryStrToDate(const AStr : string; out ADate : TDateTimeRec) : Boolean;
|
type
|
||||||
function xsd_StrToDate(const AStr : string) : TDateTimeRec; {$IFDEF USE_INLINE}inline;{$ENDIF}
|
TXsdDateKind = ( xdkDateTime, xdkDate );
|
||||||
|
|
||||||
function xsd_DateTimeToStr(const ADate : TDateTimeRec) : string;overload;
|
function xsd_TryStrToDate(
|
||||||
function xsd_DateTimeToStr(const ADate : TDateTime) : string;overload;
|
const AStr : string;
|
||||||
|
out ADate : TDateTimeRec;
|
||||||
|
const ADateKind : TXsdDateKind
|
||||||
|
) : Boolean;
|
||||||
|
function xsd_StrToDate(
|
||||||
|
const AStr : string;
|
||||||
|
const ADateKind : TXsdDateKind
|
||||||
|
) : TDateTimeRec; {$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||||
|
|
||||||
|
function xsd_DateTimeToStr(
|
||||||
|
const ADate : TDateTimeRec;
|
||||||
|
const ADateKind : TXsdDateKind
|
||||||
|
) : string; overload;
|
||||||
|
function xsd_DateTimeToStr(
|
||||||
|
const ADate : TDateTime;
|
||||||
|
const ADateKind : TXsdDateKind
|
||||||
|
) : string;overload;
|
||||||
|
|
||||||
function xsd_TimeToStr(const ATime : TTimeRec) : string;
|
function xsd_TimeToStr(const ATime : TTimeRec) : string;
|
||||||
function xsd_TryStrToTime(const AStr : string; out ADate : TTimeRec) : Boolean;
|
function xsd_TryStrToTime(const AStr : string; out ADate : TTimeRec) : Boolean;
|
||||||
@ -184,7 +200,11 @@ begin
|
|||||||
( a.MinuteOffset = b.MinuteOffset );
|
( a.MinuteOffset = b.MinuteOffset );
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function xsd_TryStrToDate(const AStr : string; out ADate : TDateTimeRec) : Boolean;
|
function xsd_TryStrToDate(
|
||||||
|
const AStr : string;
|
||||||
|
out ADate : TDateTimeRec;
|
||||||
|
const ADateKind : TXsdDateKind
|
||||||
|
) : Boolean;
|
||||||
const
|
const
|
||||||
DATE_SEP_CHAR = '-'; TIME_MARKER_CHAR = 'T'; TIME_SEP_CHAR = ':';
|
DATE_SEP_CHAR = '-'; TIME_MARKER_CHAR = 'T'; TIME_SEP_CHAR = ':';
|
||||||
var
|
var
|
||||||
@ -262,30 +282,38 @@ begin
|
|||||||
if ReadInt(m,DATE_SEP_CHAR) then begin
|
if ReadInt(m,DATE_SEP_CHAR) then begin
|
||||||
Inc(bufferPos);
|
Inc(bufferPos);
|
||||||
if ReadInt(d,#0) then begin
|
if ReadInt(d,#0) then begin
|
||||||
Inc(bufferPos);
|
|
||||||
tz_hh := 0;
|
tz_hh := 0;
|
||||||
tz_mn := 0;
|
tz_mn := 0;
|
||||||
if ( bufferPos > bufferLen ) then begin
|
hh := 0;
|
||||||
hh := 0;
|
mn := 0;
|
||||||
mn := 0;
|
ss := 0;
|
||||||
ss := 0;
|
ssss := 0;
|
||||||
ssss := 0;
|
if ( bufferPos >= bufferLen ) then begin
|
||||||
ok := True;
|
ok := True;
|
||||||
end else begin
|
end else begin
|
||||||
ok := ( buffer[bufferPos -1] = TIME_MARKER_CHAR ) and ReadInt(hh,TIME_SEP_CHAR);
|
ok := ( buffer[bufferPos] in [TIME_MARKER_CHAR,'-','+'] );
|
||||||
if ok then begin
|
if ok then begin
|
||||||
Inc(bufferPos);
|
if ( buffer[bufferPos] = TIME_MARKER_CHAR ) then begin
|
||||||
ok := ReadInt(mn,TIME_SEP_CHAR);
|
|
||||||
if ok then begin
|
|
||||||
Inc(bufferPos);
|
Inc(bufferPos);
|
||||||
ok := ReadInt(ss,#0);
|
ok := ( ADateKind = xdkDateTime ) and ReadInt(hh,TIME_SEP_CHAR);
|
||||||
if ok and ( bufferPos < bufferLen ) and ( buffer[bufferPos] = '.' ) then begin
|
if ok then begin
|
||||||
Inc(bufferPos);
|
Inc(bufferPos);
|
||||||
ok := ReadMiliSeconds(ssss);
|
ok := ReadInt(mn,TIME_SEP_CHAR);
|
||||||
end else begin
|
if ok then begin
|
||||||
ssss := 0;
|
Inc(bufferPos);
|
||||||
|
ok := ReadInt(ss,#0);
|
||||||
|
if ok and ( bufferPos < bufferLen ) and ( buffer[bufferPos] = '.' ) then begin
|
||||||
|
Inc(bufferPos);
|
||||||
|
ok := ReadMiliSeconds(ssss);
|
||||||
|
end else begin
|
||||||
|
ssss := 0;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
if ok and ( bufferPos < bufferLen ) then begin
|
end;
|
||||||
|
if ok and ( bufferPos < bufferLen ) then begin
|
||||||
|
ok := ( buffer[bufferPos] in ['-','+'] );
|
||||||
|
if ok then begin
|
||||||
tz_negative := ( buffer[bufferPos] = '-' );
|
tz_negative := ( buffer[bufferPos] = '-' );
|
||||||
Inc(bufferPos);
|
Inc(bufferPos);
|
||||||
ok := ReadInt(tz_hh,TIME_SEP_CHAR);
|
ok := ReadInt(tz_hh,TIME_SEP_CHAR);
|
||||||
@ -319,18 +347,25 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function xsd_StrToDate(const AStr : string) : TDateTimeRec;
|
function xsd_StrToDate(
|
||||||
|
const AStr : string;
|
||||||
|
const ADateKind : TXsdDateKind
|
||||||
|
) : TDateTimeRec;
|
||||||
begin
|
begin
|
||||||
if not xsd_TryStrToDate(AStr,Result) then
|
if not xsd_TryStrToDate(AStr,Result,ADateKind) then
|
||||||
raise EConvertError.CreateFmt(SERR_InvalidDate,[AStr]);
|
raise EConvertError.CreateFmt(SERR_InvalidDate,[AStr]);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{$HINTS OFF}
|
{$HINTS OFF}
|
||||||
function xsd_DateTimeToStr(const ADate : TDateTimeRec) : string;
|
function xsd_DateTimeToStr(
|
||||||
|
const ADate : TDateTimeRec;
|
||||||
|
const ADateKind : TXsdDateKind
|
||||||
|
) : string;
|
||||||
var
|
var
|
||||||
locDate : TDateTime;
|
locDate : TDateTime;
|
||||||
d, m, y : Word;
|
d, m, y : Word;
|
||||||
hh, mn, ss, ssss : Word;
|
hh, mn, ss, ssss : Word;
|
||||||
|
locRes : string;
|
||||||
begin
|
begin
|
||||||
//'-'? yyyy '-' mm '-' dd 'T' hh ':' mm ':' ss ('.' s+)? (zzzzzz)?
|
//'-'? yyyy '-' mm '-' dd 'T' hh ':' mm ':' ss ('.' s+)? (zzzzzz)?
|
||||||
locDate := ADate.Date;
|
locDate := ADate.Date;
|
||||||
@ -338,21 +373,30 @@ begin
|
|||||||
locDate := IncHour(locDate,-ADate.HourOffset);
|
locDate := IncHour(locDate,-ADate.HourOffset);
|
||||||
if ( ADate.MinuteOffset <> 0 ) then
|
if ( ADate.MinuteOffset <> 0 ) then
|
||||||
locDate := IncMinute(locDate,-ADate.MinuteOffset);
|
locDate := IncMinute(locDate,-ADate.MinuteOffset);
|
||||||
DecodeDateTime(locDate,y,m,d,hh,mn,ss,ssss);
|
if ( ADateKind = xdkDate ) then begin
|
||||||
if ( ssss = 0 ) then
|
DecodeDate(locDate,y,m,d);
|
||||||
Result := Format('%.4d-%.2d-%.2dT%.2d:%.2d:%.2dZ',[y,m,d, hh,mn,ss])
|
locRes := Format('%.4d-%.2d-%.2d',[y,m,d]);
|
||||||
else
|
end else begin
|
||||||
Result := Format('%.4d-%.2d-%.2dT%.2d:%.2d:%.2d.%.3dZ',[y,m,d, hh,mn,ss,ssss]);
|
DecodeDateTime(locDate,y,m,d,hh,mn,ss,ssss);
|
||||||
|
if ( ssss = 0 ) then
|
||||||
|
locRes := Format('%.4d-%.2d-%.2dT%.2d:%.2d:%.2dZ',[y,m,d, hh,mn,ss])
|
||||||
|
else
|
||||||
|
locRes := Format('%.4d-%.2d-%.2dT%.2d:%.2d:%.2d.%.3dZ',[y,m,d, hh,mn,ss,ssss]);
|
||||||
|
end;
|
||||||
|
Result := locRes;
|
||||||
end;
|
end;
|
||||||
{$HINTS ON}
|
{$HINTS ON}
|
||||||
|
|
||||||
function xsd_DateTimeToStr(const ADate : TDateTime) : string;
|
function xsd_DateTimeToStr(
|
||||||
|
const ADate : TDateTime;
|
||||||
|
const ADateKind : TXsdDateKind
|
||||||
|
) : string;
|
||||||
var
|
var
|
||||||
tmpDate : TDateTimeRec;
|
tmpDate : TDateTimeRec;
|
||||||
begin
|
begin
|
||||||
FillChar(tmpDate,SizeOf(TDateTimeRec),#0);
|
FillChar(tmpDate,SizeOf(TDateTimeRec),#0);
|
||||||
tmpDate.Date := ADate;
|
tmpDate.Date := ADate;
|
||||||
Result := xsd_DateTimeToStr(tmpDate);
|
Result := xsd_DateTimeToStr(tmpDate,ADateKind);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function xsd_TimeToStr(const ATime : TTimeRec) : string;
|
function xsd_TimeToStr(const ATime : TTimeRec) : string;
|
||||||
|
@ -36,6 +36,8 @@ type
|
|||||||
{$ENDIF WST_DELPHI}
|
{$ENDIF WST_DELPHI}
|
||||||
published
|
published
|
||||||
procedure xsd_TryStrToDate_date_only();
|
procedure xsd_TryStrToDate_date_only();
|
||||||
|
procedure xsd_TryStrToDate_date_timezone_1();
|
||||||
|
procedure xsd_TryStrToDate_date_timezone_2();
|
||||||
procedure xsd_TryStrToDate_date_time();
|
procedure xsd_TryStrToDate_date_time();
|
||||||
procedure xsd_TryStrToDate_date_time_fractional_second();
|
procedure xsd_TryStrToDate_date_time_fractional_second();
|
||||||
procedure xsd_TryStrToDate_date_bad_separator();
|
procedure xsd_TryStrToDate_date_bad_separator();
|
||||||
@ -78,11 +80,11 @@ begin
|
|||||||
//'-'? yyyy '-' mm '-' dd 'T' hh ':' mm ':' ss ('.' s+)? (zzzzzz)?
|
//'-'? yyyy '-' mm '-' dd 'T' hh ':' mm ':' ss ('.' s+)? (zzzzzz)?
|
||||||
FillChar(d,SizeOf(d),#0);
|
FillChar(d,SizeOf(d),#0);
|
||||||
d.Date := EncodeDate(1976,10,12) + EncodeTime(23,34,56,0);
|
d.Date := EncodeDate(1976,10,12) + EncodeTime(23,34,56,0);
|
||||||
CheckEquals(sDATE_1, xsd_DateTimeToStr(d));
|
CheckEquals(sDATE_1, xsd_DateTimeToStr(d,xdkDateTime));
|
||||||
|
|
||||||
FillChar(d,SizeOf(d),#0);
|
FillChar(d,SizeOf(d),#0);
|
||||||
d.Date := EncodeDate(987,06,12) - EncodeTime(20,34,56,0);
|
d.Date := EncodeDate(987,06,12) - EncodeTime(20,34,56,0);
|
||||||
CheckEquals(sDATE_2, xsd_DateTimeToStr(d));
|
CheckEquals(sDATE_2, xsd_DateTimeToStr(d,xdkDateTime));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TTest_DateUtils.xsd_DateTimeToStr_2();
|
procedure TTest_DateUtils.xsd_DateTimeToStr_2();
|
||||||
@ -93,10 +95,10 @@ var
|
|||||||
d : TDateTime;
|
d : TDateTime;
|
||||||
begin
|
begin
|
||||||
d := EncodeDate(1976,10,12) + EncodeTime(23,34,56,0);
|
d := EncodeDate(1976,10,12) + EncodeTime(23,34,56,0);
|
||||||
CheckEquals(sDATE_1, xsd_DateTimeToStr(d));
|
CheckEquals(sDATE_1, xsd_DateTimeToStr(d,xdkDateTime));
|
||||||
|
|
||||||
d := EncodeDate(987,06,12) - EncodeTime(20,34,56,0);
|
d := EncodeDate(987,06,12) - EncodeTime(20,34,56,0);
|
||||||
CheckEquals(sDATE_2, xsd_DateTimeToStr(d));
|
CheckEquals(sDATE_2, xsd_DateTimeToStr(d,xdkDateTime));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TTest_DateUtils.xsd_DateTimeToStr_fractional_second_1();
|
procedure TTest_DateUtils.xsd_DateTimeToStr_fractional_second_1();
|
||||||
@ -109,15 +111,15 @@ var
|
|||||||
begin
|
begin
|
||||||
FillChar(d,SizeOf(d),#0);
|
FillChar(d,SizeOf(d),#0);
|
||||||
d.Date := EncodeDate(1976,10,12) + EncodeTime(23,34,56,7);
|
d.Date := EncodeDate(1976,10,12) + EncodeTime(23,34,56,7);
|
||||||
CheckEquals(sDATE_1, xsd_DateTimeToStr(d));
|
CheckEquals(sDATE_1, xsd_DateTimeToStr(d,xdkDateTime));
|
||||||
|
|
||||||
FillChar(d,SizeOf(d),#0);
|
FillChar(d,SizeOf(d),#0);
|
||||||
d.Date := EncodeDate(1976,10,12) + EncodeTime(23,34,56,78);
|
d.Date := EncodeDate(1976,10,12) + EncodeTime(23,34,56,78);
|
||||||
CheckEquals(sDATE_2, xsd_DateTimeToStr(d));
|
CheckEquals(sDATE_2, xsd_DateTimeToStr(d,xdkDateTime));
|
||||||
|
|
||||||
FillChar(d,SizeOf(d),#0);
|
FillChar(d,SizeOf(d),#0);
|
||||||
d.Date := EncodeDate(1976,10,12) + EncodeTime(23,34,56,789);
|
d.Date := EncodeDate(1976,10,12) + EncodeTime(23,34,56,789);
|
||||||
CheckEquals(sDATE_3, xsd_DateTimeToStr(d));
|
CheckEquals(sDATE_3, xsd_DateTimeToStr(d,xdkDateTime));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TTest_DateUtils.xsd_DateTimeToStr_fractional_second_2();
|
procedure TTest_DateUtils.xsd_DateTimeToStr_fractional_second_2();
|
||||||
@ -130,15 +132,15 @@ var
|
|||||||
begin
|
begin
|
||||||
FillChar(d,SizeOf(d),#0);
|
FillChar(d,SizeOf(d),#0);
|
||||||
d := EncodeDate(1976,10,12) + EncodeTime(23,34,56,7);
|
d := EncodeDate(1976,10,12) + EncodeTime(23,34,56,7);
|
||||||
CheckEquals(sDATE_1, xsd_DateTimeToStr(d));
|
CheckEquals(sDATE_1, xsd_DateTimeToStr(d,xdkDateTime));
|
||||||
|
|
||||||
FillChar(d,SizeOf(d),#0);
|
FillChar(d,SizeOf(d),#0);
|
||||||
d := EncodeDate(1976,10,12) + EncodeTime(23,34,56,78);
|
d := EncodeDate(1976,10,12) + EncodeTime(23,34,56,78);
|
||||||
CheckEquals(sDATE_2, xsd_DateTimeToStr(d));
|
CheckEquals(sDATE_2, xsd_DateTimeToStr(d,xdkDateTime));
|
||||||
|
|
||||||
FillChar(d,SizeOf(d),#0);
|
FillChar(d,SizeOf(d),#0);
|
||||||
d := EncodeDate(1976,10,12) + EncodeTime(23,34,56,789);
|
d := EncodeDate(1976,10,12) + EncodeTime(23,34,56,789);
|
||||||
CheckEquals(sDATE_3, xsd_DateTimeToStr(d));
|
CheckEquals(sDATE_3, xsd_DateTimeToStr(d,xdkDateTime));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TTest_DateUtils.xsd_DateTimeToStr_timezone_1();
|
procedure TTest_DateUtils.xsd_DateTimeToStr_timezone_1();
|
||||||
@ -150,7 +152,7 @@ begin
|
|||||||
FillChar(d,SizeOf(d),#0);
|
FillChar(d,SizeOf(d),#0);
|
||||||
d.Date := EncodeDate(2002,10,10) + EncodeTime(12,0,0,0);
|
d.Date := EncodeDate(2002,10,10) + EncodeTime(12,0,0,0);
|
||||||
d.HourOffset := 5;
|
d.HourOffset := 5;
|
||||||
CheckEquals('2002-10-10T07:00:00Z', xsd_DateTimeToStr(d));
|
CheckEquals('2002-10-10T07:00:00Z', xsd_DateTimeToStr(d,xdkDateTime));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TTest_DateUtils.xsd_TimeToStr_1();
|
procedure TTest_DateUtils.xsd_TimeToStr_1();
|
||||||
@ -335,10 +337,10 @@ var
|
|||||||
begin
|
begin
|
||||||
s := '23:34:56+12:34';
|
s := '23:34:56+12:34';
|
||||||
Check(xsd_TryStrToTime(s,d));
|
Check(xsd_TryStrToTime(s,d));
|
||||||
CheckEquals(d.Hour,23,'Hour');
|
CheckEquals(23,d.Hour,'Hour');
|
||||||
CheckEquals(d.Minute,34,'Minute');
|
CheckEquals(34,d.Minute,'Minute');
|
||||||
CheckEquals(d.Second,56,'Second');
|
CheckEquals(56,d.Second,'Second');
|
||||||
CheckEquals(d.MilliSecond,0,'MilliSecond');
|
CheckEquals(0,d.MilliSecond,'MilliSecond');
|
||||||
CheckEquals(12,d.HourOffset,'HourOffset');
|
CheckEquals(12,d.HourOffset,'HourOffset');
|
||||||
CheckEquals(34,d.MinuteOffset,'MinuteOffset');
|
CheckEquals(34,d.MinuteOffset,'MinuteOffset');
|
||||||
end;
|
end;
|
||||||
@ -350,10 +352,10 @@ var
|
|||||||
begin
|
begin
|
||||||
s := '23:34:56-01:23';
|
s := '23:34:56-01:23';
|
||||||
Check(xsd_TryStrToTime(s,d));
|
Check(xsd_TryStrToTime(s,d));
|
||||||
CheckEquals(d.Hour,23,'Hour');
|
CheckEquals(23,d.Hour,'Hour');
|
||||||
CheckEquals(d.Minute,34,'Minute');
|
CheckEquals(34,d.Minute,'Minute');
|
||||||
CheckEquals(d.Second,56,'Second');
|
CheckEquals(56,d.Second,'Second');
|
||||||
CheckEquals(d.MilliSecond,0,'MilliSecond');
|
CheckEquals(0,d.MilliSecond,'MilliSecond');
|
||||||
CheckEquals(-1,d.HourOffset,'HourOffset');
|
CheckEquals(-1,d.HourOffset,'HourOffset');
|
||||||
CheckEquals(-23,d.MinuteOffset,'MinuteOffset');
|
CheckEquals(-23,d.MinuteOffset,'MinuteOffset');
|
||||||
end;
|
end;
|
||||||
@ -365,10 +367,10 @@ var
|
|||||||
begin
|
begin
|
||||||
s := '23:34:56.78+12:34';
|
s := '23:34:56.78+12:34';
|
||||||
Check(xsd_TryStrToTime(s,d));
|
Check(xsd_TryStrToTime(s,d));
|
||||||
CheckEquals(d.Hour,23,'Hour');
|
CheckEquals(23,d.Hour,'Hour');
|
||||||
CheckEquals(d.Minute,34,'Minute');
|
CheckEquals(34,d.Minute,'Minute');
|
||||||
CheckEquals(d.Second,56,'Second');
|
CheckEquals(56,d.Second,'Second');
|
||||||
CheckEquals(d.MilliSecond,78,'MilliSecond');
|
CheckEquals(78,d.MilliSecond,'MilliSecond');
|
||||||
CheckEquals(12,d.HourOffset,'HourOffset');
|
CheckEquals(12,d.HourOffset,'HourOffset');
|
||||||
CheckEquals(34,d.MinuteOffset,'MinuteOffset');
|
CheckEquals(34,d.MinuteOffset,'MinuteOffset');
|
||||||
end;
|
end;
|
||||||
@ -380,10 +382,10 @@ var
|
|||||||
begin
|
begin
|
||||||
s := '23:34:56.789-01:23';
|
s := '23:34:56.789-01:23';
|
||||||
Check(xsd_TryStrToTime(s,d));
|
Check(xsd_TryStrToTime(s,d));
|
||||||
CheckEquals(d.Hour,23,'Hour');
|
CheckEquals(23,d.Hour,'Hour');
|
||||||
CheckEquals(d.Minute,34,'Minute');
|
CheckEquals(34,d.Minute,'Minute');
|
||||||
CheckEquals(d.Second,56,'Second');
|
CheckEquals(56,d.Second,'Second');
|
||||||
CheckEquals(d.MilliSecond,789,'MilliSecond');
|
CheckEquals(789,d.MilliSecond,'MilliSecond');
|
||||||
CheckEquals(-1,d.HourOffset,'HourOffset');
|
CheckEquals(-1,d.HourOffset,'HourOffset');
|
||||||
CheckEquals(-23,d.MinuteOffset,'MinuteOffset');
|
CheckEquals(-23,d.MinuteOffset,'MinuteOffset');
|
||||||
end;
|
end;
|
||||||
@ -394,7 +396,7 @@ const
|
|||||||
var
|
var
|
||||||
d : TDateTimeRec;
|
d : TDateTimeRec;
|
||||||
begin
|
begin
|
||||||
CheckEquals(False,xsd_TryStrToDate(DATE_STR,d),Format('"%s" is not a valid date.',[DATE_STR]));
|
CheckEquals(False,xsd_TryStrToDate(DATE_STR,d,xdkDateTime),Format('"%s" is not a valid date.',[DATE_STR]));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{$IFDEF FPC}
|
{$IFDEF FPC}
|
||||||
@ -430,17 +432,73 @@ var
|
|||||||
begin
|
begin
|
||||||
//'-'? yyyy '-' mm '-' dd 'T' hh ':' mm ':' ss ('.' s+)? (zzzzzz)?
|
//'-'? yyyy '-' mm '-' dd 'T' hh ':' mm ':' ss ('.' s+)? (zzzzzz)?
|
||||||
s := '1976-10-12';
|
s := '1976-10-12';
|
||||||
d := xsd_StrToDate(s);
|
d := xsd_StrToDate(s,xdkDateTime);
|
||||||
DecodeDate(d.Date,y,m,dy);
|
DecodeDate(d.Date,y,m,dy);
|
||||||
CheckEquals(y,1976,'Year');
|
CheckEquals(1976,y,'Year');
|
||||||
CheckEquals(m,10,'Month');
|
CheckEquals(10,m,'Month');
|
||||||
CheckEquals(dy,12,'Day');
|
CheckEquals(12,dy,'Day');
|
||||||
DecodeTime(d.Date,hh,mn,ss,ssss);
|
DecodeTime(d.Date,hh,mn,ss,ssss);
|
||||||
CheckEquals(hh,0,'Hour');
|
CheckEquals(0,hh,'Hour');
|
||||||
CheckEquals(mn,0,'Minute');
|
CheckEquals(0,mn,'Minute');
|
||||||
CheckEquals(ss,0,'Second');
|
CheckEquals(0,ss,'Second');
|
||||||
CheckEquals(0,d.HourOffset,'HourOffset');
|
CheckEquals(0,d.HourOffset,'HourOffset');
|
||||||
CheckEquals(0,d.MinuteOffset,'MinuteOffset');
|
CheckEquals(0,d.MinuteOffset,'MinuteOffset');
|
||||||
|
|
||||||
|
d := xsd_StrToDate(s,xdkDate);
|
||||||
|
DecodeDate(d.Date,y,m,dy);
|
||||||
|
CheckEquals(1976,y,'Year');
|
||||||
|
CheckEquals(10,m,'Month');
|
||||||
|
CheckEquals(12,dy,'Day');
|
||||||
|
DecodeTime(d.Date,hh,mn,ss,ssss);
|
||||||
|
CheckEquals(0,hh,'Hour');
|
||||||
|
CheckEquals(0,mn,'Minute');
|
||||||
|
CheckEquals(0,ss,'Second');
|
||||||
|
CheckEquals(0,d.HourOffset,'HourOffset');
|
||||||
|
CheckEquals(0,d.MinuteOffset,'MinuteOffset');
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TTest_DateUtils.xsd_TryStrToDate_date_timezone_1();
|
||||||
|
var
|
||||||
|
s : string;
|
||||||
|
d : TDateTimeRec;
|
||||||
|
y,m,dy : Word;
|
||||||
|
hh,mn,ss, ssss : Word;
|
||||||
|
begin
|
||||||
|
//'-'? yyyy '-' mm '-' dd 'T' hh ':' mm ':' ss ('.' s+)? (zzzzzz)?
|
||||||
|
s := '1976-10-12+11:34';
|
||||||
|
d := xsd_StrToDate(s,xdkDate);
|
||||||
|
DecodeDate(d.Date,y,m,dy);
|
||||||
|
CheckEquals(1976,y,'Year');
|
||||||
|
CheckEquals(10,m,'Month');
|
||||||
|
CheckEquals(12,dy,'Day');
|
||||||
|
DecodeTime(d.Date,hh,mn,ss,ssss);
|
||||||
|
CheckEquals(0,hh,'Hour');
|
||||||
|
CheckEquals(0,mn,'Minute');
|
||||||
|
CheckEquals(0,ss,'Second');
|
||||||
|
CheckEquals(11,d.HourOffset,'HourOffset');
|
||||||
|
CheckEquals(34,d.MinuteOffset,'MinuteOffset');
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TTest_DateUtils.xsd_TryStrToDate_date_timezone_2();
|
||||||
|
var
|
||||||
|
s : string;
|
||||||
|
d : TDateTimeRec;
|
||||||
|
y,m,dy : Word;
|
||||||
|
hh,mn,ss, ssss : Word;
|
||||||
|
begin
|
||||||
|
//'-'? yyyy '-' mm '-' dd 'T' hh ':' mm ':' ss ('.' s+)? (zzzzzz)?
|
||||||
|
s := '1976-10-12-11:34';
|
||||||
|
d := xsd_StrToDate(s,xdkDate);
|
||||||
|
DecodeDate(d.Date,y,m,dy);
|
||||||
|
CheckEquals(1976,y,'Year');
|
||||||
|
CheckEquals(10,m,'Month');
|
||||||
|
CheckEquals(12,dy,'Day');
|
||||||
|
DecodeTime(d.Date,hh,mn,ss,ssss);
|
||||||
|
CheckEquals(0,hh,'Hour');
|
||||||
|
CheckEquals(0,mn,'Minute');
|
||||||
|
CheckEquals(0,ss,'Second');
|
||||||
|
CheckEquals(-11,d.HourOffset,'HourOffset');
|
||||||
|
CheckEquals(-34,d.MinuteOffset,'MinuteOffset');
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TTest_DateUtils.xsd_TryStrToDate_date_time();
|
procedure TTest_DateUtils.xsd_TryStrToDate_date_time();
|
||||||
@ -452,15 +510,15 @@ var
|
|||||||
begin
|
begin
|
||||||
//'-'? yyyy '-' mm '-' dd 'T' hh ':' mm ':' ss ('.' s+)? (zzzzzz)?
|
//'-'? yyyy '-' mm '-' dd 'T' hh ':' mm ':' ss ('.' s+)? (zzzzzz)?
|
||||||
s := '1976-10-12T23:34:56';
|
s := '1976-10-12T23:34:56';
|
||||||
d := xsd_StrToDate(s);
|
d := xsd_StrToDate(s,xdkDateTime);
|
||||||
DecodeDate(d.Date,y,m,dy);
|
DecodeDate(d.Date,y,m,dy);
|
||||||
CheckEquals(y,1976,'Year');
|
CheckEquals(1976,y,'Year');
|
||||||
CheckEquals(m,10,'Month');
|
CheckEquals(10,m,'Month');
|
||||||
CheckEquals(dy,12,'Day');
|
CheckEquals(12,dy,'Day');
|
||||||
DecodeTime(d.Date,hh,mn,ss,ssss);
|
DecodeTime(d.Date,hh,mn,ss,ssss);
|
||||||
CheckEquals(hh,23,'Hour');
|
CheckEquals(23,hh,'Hour');
|
||||||
CheckEquals(mn,34,'Minute');
|
CheckEquals(34,mn,'Minute');
|
||||||
CheckEquals(ss,56,'Second');
|
CheckEquals(56,ss,'Second');
|
||||||
CheckEquals(0,d.HourOffset,'HourOffset');
|
CheckEquals(0,d.HourOffset,'HourOffset');
|
||||||
CheckEquals(0,d.MinuteOffset,'MinuteOffset');
|
CheckEquals(0,d.MinuteOffset,'MinuteOffset');
|
||||||
end;
|
end;
|
||||||
@ -471,7 +529,7 @@ const
|
|||||||
var
|
var
|
||||||
d : TDateTimeRec;
|
d : TDateTimeRec;
|
||||||
begin
|
begin
|
||||||
CheckEquals(False,xsd_TryStrToDate(DATE_STR,d),Format('"%s" is not a valid date.',[DATE_STR]));
|
CheckEquals(False,xsd_TryStrToDate(DATE_STR,d,xdkDateTime),Format('"%s" is not a valid date.',[DATE_STR]));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TTest_DateUtils.xsd_TryStrToDate_date_time_fractional_second();
|
procedure TTest_DateUtils.xsd_TryStrToDate_date_time_fractional_second();
|
||||||
@ -486,7 +544,7 @@ procedure TTest_DateUtils.xsd_TryStrToDate_date_time_fractional_second();
|
|||||||
y,m,dy : Word;
|
y,m,dy : Word;
|
||||||
hh,mn,ss, ssss : Word;
|
hh,mn,ss, ssss : Word;
|
||||||
begin
|
begin
|
||||||
d := xsd_StrToDate(AString);
|
d := xsd_StrToDate(AString,xdkDateTime);
|
||||||
DecodeDate(d.Date,y,m,dy);
|
DecodeDate(d.Date,y,m,dy);
|
||||||
CheckEquals(AY,y,'Year');
|
CheckEquals(AY,y,'Year');
|
||||||
CheckEquals(AM,m,'Month');
|
CheckEquals(AM,m,'Month');
|
||||||
@ -519,7 +577,7 @@ var
|
|||||||
begin
|
begin
|
||||||
//'-'? yyyy '-' mm '-' dd 'T' hh ':' mm ':' ss ('.' s+)? (zzzzzz)?
|
//'-'? yyyy '-' mm '-' dd 'T' hh ':' mm ':' ss ('.' s+)? (zzzzzz)?
|
||||||
s := '1976-10-12T23:34:56+12:34';
|
s := '1976-10-12T23:34:56+12:34';
|
||||||
d := xsd_StrToDate(s);
|
d := xsd_StrToDate(s,xdkDateTime);
|
||||||
DecodeDate(d.Date,y,m,dy);
|
DecodeDate(d.Date,y,m,dy);
|
||||||
CheckEquals(y,1976,'Year');
|
CheckEquals(y,1976,'Year');
|
||||||
CheckEquals(m,10,'Month');
|
CheckEquals(m,10,'Month');
|
||||||
@ -541,7 +599,7 @@ var
|
|||||||
begin
|
begin
|
||||||
//'-'? yyyy '-' mm '-' dd 'T' hh ':' mm ':' ss ('.' s+)? (zzzzzz)?
|
//'-'? yyyy '-' mm '-' dd 'T' hh ':' mm ':' ss ('.' s+)? (zzzzzz)?
|
||||||
s := '1976-10-12T23:34:56-01:23';
|
s := '1976-10-12T23:34:56-01:23';
|
||||||
d := xsd_StrToDate(s);
|
d := xsd_StrToDate(s,xdkDateTime);
|
||||||
DecodeDate(d.Date,y,m,dy);
|
DecodeDate(d.Date,y,m,dy);
|
||||||
CheckEquals(y,1976,'Year');
|
CheckEquals(y,1976,'Year');
|
||||||
CheckEquals(m,10,'Month');
|
CheckEquals(m,10,'Month');
|
||||||
@ -563,7 +621,7 @@ var
|
|||||||
begin
|
begin
|
||||||
//'-'? yyyy '-' mm '-' dd 'T' hh ':' mm ':' ss ('.' s+)? (zzzzzz)?
|
//'-'? yyyy '-' mm '-' dd 'T' hh ':' mm ':' ss ('.' s+)? (zzzzzz)?
|
||||||
s := '1976-10-12T23:34:56Z';
|
s := '1976-10-12T23:34:56Z';
|
||||||
d := xsd_StrToDate(s);
|
d := xsd_StrToDate(s,xdkDateTime);
|
||||||
DecodeDate(d.Date,y,m,dy);
|
DecodeDate(d.Date,y,m,dy);
|
||||||
CheckEquals(y,1976,'Year');
|
CheckEquals(y,1976,'Year');
|
||||||
CheckEquals(m,10,'Month');
|
CheckEquals(m,10,'Month');
|
||||||
@ -585,7 +643,7 @@ var
|
|||||||
begin
|
begin
|
||||||
//'-'? yyyy '-' mm '-' dd 'T' hh ':' mm ':' ss ('.' s+)? (zzzzzz)?
|
//'-'? yyyy '-' mm '-' dd 'T' hh ':' mm ':' ss ('.' s+)? (zzzzzz)?
|
||||||
s := '1976-10-12T23:34:56+00:00';
|
s := '1976-10-12T23:34:56+00:00';
|
||||||
d := xsd_StrToDate(s);
|
d := xsd_StrToDate(s,xdkDateTime);
|
||||||
DecodeDate(d.Date,y,m,dy);
|
DecodeDate(d.Date,y,m,dy);
|
||||||
CheckEquals(y,1976,'Year');
|
CheckEquals(y,1976,'Year');
|
||||||
CheckEquals(m,10,'Month');
|
CheckEquals(m,10,'Month');
|
||||||
@ -598,7 +656,7 @@ begin
|
|||||||
CheckEquals(0,d.MinuteOffset,'MinuteOffset');
|
CheckEquals(0,d.MinuteOffset,'MinuteOffset');
|
||||||
|
|
||||||
s := '1976-10-12T23:34:56-00:00';
|
s := '1976-10-12T23:34:56-00:00';
|
||||||
d := xsd_StrToDate(s);
|
d := xsd_StrToDate(s,xdkDateTime);
|
||||||
DecodeDate(d.Date,y,m,dy);
|
DecodeDate(d.Date,y,m,dy);
|
||||||
CheckEquals(y,1976,'Year');
|
CheckEquals(y,1976,'Year');
|
||||||
CheckEquals(m,10,'Month');
|
CheckEquals(m,10,'Month');
|
||||||
|
@ -24,7 +24,8 @@ uses
|
|||||||
|
|
||||||
const
|
const
|
||||||
TestFilesPath = {$IFDEF WST_DELPHI}'.' +{$ENDIF WST_DELPHI}'.' + PathDelim + 'files' + PathDelim;
|
TestFilesPath = {$IFDEF WST_DELPHI}'.' +{$ENDIF WST_DELPHI}'.' + PathDelim + 'files' + PathDelim;
|
||||||
|
EPSILON_DATE = 0.00004;
|
||||||
|
|
||||||
type
|
type
|
||||||
|
|
||||||
{ TWstBaseTest }
|
{ TWstBaseTest }
|
||||||
|
@ -296,9 +296,9 @@ type
|
|||||||
procedure Equal();
|
procedure Equal();
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ TTest_TDateRemotable }
|
{ TTest_TDateTimeRemotable }
|
||||||
|
|
||||||
TTest_TDateRemotable = class(TTestCase)
|
TTest_TDateTimeRemotable = class(TTestCase)
|
||||||
published
|
published
|
||||||
procedure FormatDate();
|
procedure FormatDate();
|
||||||
procedure FormatDate_ZERO();
|
procedure FormatDate_ZERO();
|
||||||
@ -314,6 +314,24 @@ type
|
|||||||
procedure Year();
|
procedure Year();
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
{ TTest_TDateTimeRemotable }
|
||||||
|
|
||||||
|
TTest_TDateRemotable = class(TTestCase)
|
||||||
|
published
|
||||||
|
procedure FormatDate();
|
||||||
|
procedure FormatDate_ZERO();
|
||||||
|
procedure ParseDate();
|
||||||
|
procedure Assign();
|
||||||
|
procedure Equal();
|
||||||
|
procedure AsDate();
|
||||||
|
procedure AsUTCDate();
|
||||||
|
procedure HourOffset();
|
||||||
|
procedure HourOffset_invalid_values();
|
||||||
|
procedure MinuteOffset();
|
||||||
|
procedure MinuteOffset_invalid_values();
|
||||||
|
procedure Year();
|
||||||
|
end;
|
||||||
|
|
||||||
{ TTest_TDurationRemotable }
|
{ TTest_TDurationRemotable }
|
||||||
|
|
||||||
TTest_TDurationRemotable = class(TTestCase)
|
TTest_TDurationRemotable = class(TTestCase)
|
||||||
@ -2240,9 +2258,9 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ TTest_TDateRemotable }
|
{ TTest_TDateTimeRemotable }
|
||||||
|
|
||||||
procedure TTest_TDateRemotable.FormatDate();
|
procedure TTest_TDateTimeRemotable.FormatDate();
|
||||||
const
|
const
|
||||||
sDATE_1 = '1976-10-12T23:34:56';
|
sDATE_1 = '1976-10-12T23:34:56';
|
||||||
sDATE_2 = '0987-06-12T20:34:56';
|
sDATE_2 = '0987-06-12T20:34:56';
|
||||||
@ -2251,9 +2269,288 @@ var
|
|||||||
begin
|
begin
|
||||||
//'-'? yyyy '-' mm '-' dd 'T' hh ':' mm ':' ss ('.' s+)? (zzzzzz)?
|
//'-'? yyyy '-' mm '-' dd 'T' hh ':' mm ':' ss ('.' s+)? (zzzzzz)?
|
||||||
d := EncodeDate(1976,10,12) + EncodeTime(23,34,56,0);
|
d := EncodeDate(1976,10,12) + EncodeTime(23,34,56,0);
|
||||||
CheckEquals(sDATE_1, Copy(TDateRemotable.ToStr(d),1,Length(sDATE_1)));
|
CheckEquals(sDATE_1, Copy(TDateTimeRemotable.ToStr(d),1,Length(sDATE_1)));
|
||||||
|
|
||||||
d := EncodeDate(987,06,12) - EncodeTime(20,34,56,0);
|
d := EncodeDate(987,06,12) - EncodeTime(20,34,56,0);
|
||||||
|
CheckEquals(sDATE_2, Copy(TDateTimeRemotable.ToStr(d),1,Length(sDATE_2)));
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TTest_TDateTimeRemotable.ParseDate();
|
||||||
|
var
|
||||||
|
s : string;
|
||||||
|
objd : TDateTimeRemotable;
|
||||||
|
d : TDateTimeRec;
|
||||||
|
y,m,dy : Word;
|
||||||
|
hh,mn,ss, ssss : Word;
|
||||||
|
begin
|
||||||
|
//'-'? yyyy '-' mm '-' dd 'T' hh ':' mm ':' ss ('.' s+)? (zzzzzz)?
|
||||||
|
s := '1976-10-12T23:34:56';
|
||||||
|
d := TDateTimeRemotable.Parse(s);
|
||||||
|
DecodeDateTime(d.Date,y,m,dy, hh,mn,ss,ssss);
|
||||||
|
CheckEquals(1976,y,'Year');
|
||||||
|
CheckEquals(10,m,'Month');
|
||||||
|
CheckEquals(12,dy,'Day');
|
||||||
|
CheckEquals(23,hh,'Hour');
|
||||||
|
CheckEquals(34,mn,'Minute');
|
||||||
|
CheckEquals(56,ss,'Second');
|
||||||
|
|
||||||
|
objd := TDateTimeRemotable.Create();
|
||||||
|
try
|
||||||
|
objd.AsDate := d.Date;
|
||||||
|
CheckEquals(1976,objd.Year,'Year');
|
||||||
|
CheckEquals(10,objd.Month,'Month');
|
||||||
|
CheckEquals(12,objd.Day,'Day');
|
||||||
|
CheckEquals(23,objd.Hour,'Hour');
|
||||||
|
CheckEquals(34,objd.Minute,'Minute');
|
||||||
|
CheckEquals(56,objd.Second,'Second');
|
||||||
|
finally
|
||||||
|
FreeAndNil(objd);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TTest_TDateTimeRemotable.Assign();
|
||||||
|
var
|
||||||
|
a, b : TDateTimeRemotable;
|
||||||
|
begin
|
||||||
|
b := nil;
|
||||||
|
a := TDateTimeRemotable.Create();
|
||||||
|
try
|
||||||
|
b := TDateTimeRemotable.Create();
|
||||||
|
Check(IsZero(a.AsDate - b.AsDate));
|
||||||
|
|
||||||
|
a.AsDate := Now();
|
||||||
|
b.Assign(a);
|
||||||
|
Check(IsZero(a.AsDate - b.AsDate));
|
||||||
|
|
||||||
|
a.AsDate := Now() + 1;
|
||||||
|
a.Assign(b);
|
||||||
|
Check(IsZero(a.AsDate - b.AsDate));
|
||||||
|
finally
|
||||||
|
b.Free();
|
||||||
|
a.Free();
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TTest_TDateTimeRemotable.Equal();
|
||||||
|
var
|
||||||
|
a, b : TDateTimeRemotable;
|
||||||
|
c : TClass_A;
|
||||||
|
begin
|
||||||
|
c := nil;
|
||||||
|
b := nil;
|
||||||
|
a := TDateTimeRemotable.Create();
|
||||||
|
try
|
||||||
|
b := TDateTimeRemotable.Create();
|
||||||
|
c := TClass_A.Create();
|
||||||
|
|
||||||
|
CheckEquals(False,a.Equal(nil));
|
||||||
|
CheckEquals(False,a.Equal(c));
|
||||||
|
|
||||||
|
a.AsDate := Now();
|
||||||
|
b.AsDate := a.AsDate;
|
||||||
|
CheckEquals(True,a.Equal(b));
|
||||||
|
CheckEquals(True,b.Equal(a));
|
||||||
|
|
||||||
|
a.AsDate := a.AsDate + 1;
|
||||||
|
CheckEquals(False,a.Equal(b));
|
||||||
|
CheckEquals(False,b.Equal(a));
|
||||||
|
finally
|
||||||
|
c.Free();
|
||||||
|
b.Free();
|
||||||
|
a.Free();
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TTest_TDateTimeRemotable.FormatDate_ZERO();
|
||||||
|
const sDATE = '1899-12-30T00:00:00';
|
||||||
|
var
|
||||||
|
d : TDateTime;
|
||||||
|
begin
|
||||||
|
//'-'? yyyy '-' mm '-' dd 'T' hh ':' mm ':' ss ('.' s+)? (zzzzzz)?
|
||||||
|
d := 0;
|
||||||
|
CheckEquals(sDATE, Copy(TDateTimeRemotable.ToStr(d),1,Length(sDATE)));
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TTest_TDateTimeRemotable.AsDate();
|
||||||
|
var
|
||||||
|
d : TDateTime;
|
||||||
|
locObj : TDateTimeRemotable;
|
||||||
|
begin
|
||||||
|
d := EncodeDateTime(1976,10,12,13,14,15,0);
|
||||||
|
locObj := TDateTimeRemotable.Create();
|
||||||
|
try
|
||||||
|
locObj.AsDate := d;
|
||||||
|
CheckEquals(d, locObj.AsDate);
|
||||||
|
locObj.HourOffset := 4;
|
||||||
|
locObj.MinuteOffset := 5;
|
||||||
|
CheckEquals(d, locObj.AsDate);
|
||||||
|
|
||||||
|
// test while (Hour|Minute)Offset is not null
|
||||||
|
locObj.HourOffset := 4;
|
||||||
|
locObj.MinuteOffset := 5;
|
||||||
|
locObj.AsDate := d;
|
||||||
|
CheckEquals(d, locObj.AsDate);
|
||||||
|
finally
|
||||||
|
locObj.Free();
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TTest_TDateTimeRemotable.AsUTCDate();
|
||||||
|
var
|
||||||
|
d, dd : TDateTime;
|
||||||
|
locObj : TDateTimeRemotable;
|
||||||
|
begin
|
||||||
|
d := EncodeDateTime(1976,10,12,13,14,15,0);
|
||||||
|
locObj := TDateTimeRemotable.Create();
|
||||||
|
try
|
||||||
|
locObj.AsUTCDate := d;
|
||||||
|
CheckEquals(d, locObj.AsUTCDate);
|
||||||
|
locObj.HourOffset := 4;
|
||||||
|
locObj.MinuteOffset := 5;
|
||||||
|
dd := date_utils.IncHour(d,-locObj.HourOffset);
|
||||||
|
dd := date_utils.IncMinute(dd,-locObj.MinuteOffset);
|
||||||
|
CheckEquals(dd, locObj.AsUTCDate);
|
||||||
|
|
||||||
|
// test while (Hour|Minute)Offset is not null
|
||||||
|
locObj.AsUTCDate := dd;
|
||||||
|
CheckEquals(dd, locObj.AsUTCDate);
|
||||||
|
finally
|
||||||
|
locObj.Free();
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TTest_TDateTimeRemotable.HourOffset();
|
||||||
|
var
|
||||||
|
locObj : TDateTimeRemotable;
|
||||||
|
begin
|
||||||
|
locObj := TDateTimeRemotable.Create();
|
||||||
|
try
|
||||||
|
locObj.HourOffset := -5;
|
||||||
|
CheckEquals(-5, locObj.HourOffset);
|
||||||
|
locObj.HourOffset := 0;
|
||||||
|
CheckEquals(0, locObj.HourOffset);
|
||||||
|
locObj.HourOffset := 1;
|
||||||
|
CheckEquals(1, locObj.HourOffset);
|
||||||
|
locObj.HourOffset := 2;
|
||||||
|
CheckEquals(2, locObj.HourOffset);
|
||||||
|
finally
|
||||||
|
locObj.Free();
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TTest_TDateTimeRemotable.MinuteOffset();
|
||||||
|
var
|
||||||
|
locObj : TDateTimeRemotable;
|
||||||
|
begin
|
||||||
|
locObj := TDateTimeRemotable.Create();
|
||||||
|
try
|
||||||
|
locObj.MinuteOffset := -54;
|
||||||
|
CheckEquals(-54, locObj.MinuteOffset);
|
||||||
|
locObj.MinuteOffset := 0;
|
||||||
|
CheckEquals(0, locObj.MinuteOffset);
|
||||||
|
locObj.MinuteOffset := 20;
|
||||||
|
CheckEquals(20, locObj.MinuteOffset);
|
||||||
|
locObj.MinuteOffset := 56;
|
||||||
|
CheckEquals(56, locObj.MinuteOffset);
|
||||||
|
finally
|
||||||
|
locObj.Free();
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TTest_TDateTimeRemotable.HourOffset_invalid_values();
|
||||||
|
var
|
||||||
|
locObj : TDateTimeRemotable;
|
||||||
|
|
||||||
|
procedure check_invalid_value(const AValue : ShortInt);
|
||||||
|
var
|
||||||
|
ok : Boolean;
|
||||||
|
begin
|
||||||
|
try
|
||||||
|
locObj.HourOffset := AValue;
|
||||||
|
ok := False;
|
||||||
|
except
|
||||||
|
ok := True;
|
||||||
|
end;
|
||||||
|
Check(ok, Format('"%d" is not a valid hour offset',[AValue]));
|
||||||
|
end;
|
||||||
|
|
||||||
|
begin
|
||||||
|
locObj := TDateTimeRemotable.Create();
|
||||||
|
try
|
||||||
|
check_invalid_value(-50);
|
||||||
|
check_invalid_value(-24);
|
||||||
|
check_invalid_value(-15);
|
||||||
|
check_invalid_value(15);
|
||||||
|
check_invalid_value(24);
|
||||||
|
check_invalid_value(50);
|
||||||
|
finally
|
||||||
|
locObj.Free();
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TTest_TDateTimeRemotable.MinuteOffset_invalid_values();
|
||||||
|
var
|
||||||
|
locObj : TDateTimeRemotable;
|
||||||
|
|
||||||
|
procedure check_invalid_value(const AValue : ShortInt);
|
||||||
|
var
|
||||||
|
ok : Boolean;
|
||||||
|
begin
|
||||||
|
try
|
||||||
|
locObj.MinuteOffset := AValue;
|
||||||
|
ok := False;
|
||||||
|
except
|
||||||
|
ok := True;
|
||||||
|
end;
|
||||||
|
Check(ok, Format('"%d" is not a valid minute offset',[AValue]));
|
||||||
|
end;
|
||||||
|
|
||||||
|
begin
|
||||||
|
locObj := TDateTimeRemotable.Create();
|
||||||
|
try
|
||||||
|
check_invalid_value(-60);
|
||||||
|
check_invalid_value(-74);
|
||||||
|
check_invalid_value(-85);
|
||||||
|
check_invalid_value(65);
|
||||||
|
check_invalid_value(74);
|
||||||
|
check_invalid_value(80);
|
||||||
|
finally
|
||||||
|
locObj.Free();
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TTest_TDateTimeRemotable.Year();
|
||||||
|
var
|
||||||
|
locObj : TDateTimeRemotable;
|
||||||
|
begin
|
||||||
|
locObj := TDateTimeRemotable.Create();
|
||||||
|
try
|
||||||
|
locObj.AsDate := EncodeDate(1976,10,12);
|
||||||
|
CheckEquals(1976, locObj.Year);
|
||||||
|
locObj.AsDate := EncodeDate(2000,10,12);
|
||||||
|
CheckEquals(2000, locObj.Year);
|
||||||
|
locObj.AsDate := EncodeDate(2,10,12);
|
||||||
|
CheckEquals(2, locObj.Year);
|
||||||
|
{locObj.AsDate := EncodeDate(-1976,10,12);
|
||||||
|
CheckEquals(-1976, locObj.Year);}
|
||||||
|
finally
|
||||||
|
locObj.Free();
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
{ TTest_TDateRemotable }
|
||||||
|
|
||||||
|
procedure TTest_TDateRemotable.FormatDate();
|
||||||
|
const
|
||||||
|
sDATE_1 = '1976-10-12';
|
||||||
|
sDATE_2 = '0987-06-12';
|
||||||
|
var
|
||||||
|
d : TDateTime;
|
||||||
|
begin
|
||||||
|
d := EncodeDate(1976,10,12);
|
||||||
|
CheckEquals(sDATE_1, Copy(TDateRemotable.ToStr(d),1,Length(sDATE_1)));
|
||||||
|
|
||||||
|
d := EncodeDate(987,06,12);
|
||||||
CheckEquals(sDATE_2, Copy(TDateRemotable.ToStr(d),1,Length(sDATE_2)));
|
CheckEquals(sDATE_2, Copy(TDateRemotable.ToStr(d),1,Length(sDATE_2)));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -2265,26 +2562,19 @@ var
|
|||||||
y,m,dy : Word;
|
y,m,dy : Word;
|
||||||
hh,mn,ss, ssss : Word;
|
hh,mn,ss, ssss : Word;
|
||||||
begin
|
begin
|
||||||
//'-'? yyyy '-' mm '-' dd 'T' hh ':' mm ':' ss ('.' s+)? (zzzzzz)?
|
s := '1976-10-12';
|
||||||
s := '1976-10-12T23:34:56';
|
|
||||||
d := TDateRemotable.Parse(s);
|
d := TDateRemotable.Parse(s);
|
||||||
DecodeDateTime(d.Date,y,m,dy, hh,mn,ss,ssss);
|
DecodeDateTime(d.Date,y,m,dy, hh,mn,ss,ssss);
|
||||||
CheckEquals(y,1976,'Year');
|
CheckEquals(1976,y,'Year');
|
||||||
CheckEquals(m,10,'Month');
|
CheckEquals(10,m,'Month');
|
||||||
CheckEquals(dy,12,'Day');
|
CheckEquals(12,dy,'Day');
|
||||||
CheckEquals(hh,23,'Hour');
|
|
||||||
CheckEquals(mn,34,'Minute');
|
|
||||||
CheckEquals(ss,56,'Second');
|
|
||||||
|
|
||||||
objd := TDateRemotable.Create();
|
objd := TDateRemotable.Create();
|
||||||
try
|
try
|
||||||
objd.AsDate := d.Date;
|
objd.AsDate := d.Date;
|
||||||
CheckEquals(objd.Year,1976,'Year');
|
CheckEquals(1976,objd.Year,'Year');
|
||||||
CheckEquals(objd.Month,10,'Month');
|
CheckEquals(10,objd.Month,'Month');
|
||||||
CheckEquals(objd.Day,12,'Day');
|
CheckEquals(12,objd.Day,'Day');
|
||||||
CheckEquals(objd.Hour,23,'Hour');
|
|
||||||
CheckEquals(objd.Minute,34,'Minute');
|
|
||||||
CheckEquals(objd.Second,56,'Second');
|
|
||||||
finally
|
finally
|
||||||
FreeAndNil(objd);
|
FreeAndNil(objd);
|
||||||
end;
|
end;
|
||||||
@ -2300,11 +2590,11 @@ begin
|
|||||||
b := TDateRemotable.Create();
|
b := TDateRemotable.Create();
|
||||||
Check(IsZero(a.AsDate - b.AsDate));
|
Check(IsZero(a.AsDate - b.AsDate));
|
||||||
|
|
||||||
a.AsDate := Now();
|
a.AsDate := Date();
|
||||||
b.Assign(a);
|
b.Assign(a);
|
||||||
Check(IsZero(a.AsDate - b.AsDate));
|
Check(IsZero(a.AsDate - b.AsDate));
|
||||||
|
|
||||||
a.AsDate := Now() + 1;
|
a.AsDate := Date() + 1;
|
||||||
a.Assign(b);
|
a.Assign(b);
|
||||||
Check(IsZero(a.AsDate - b.AsDate));
|
Check(IsZero(a.AsDate - b.AsDate));
|
||||||
finally
|
finally
|
||||||
@ -2328,7 +2618,7 @@ begin
|
|||||||
CheckEquals(False,a.Equal(nil));
|
CheckEquals(False,a.Equal(nil));
|
||||||
CheckEquals(False,a.Equal(c));
|
CheckEquals(False,a.Equal(c));
|
||||||
|
|
||||||
a.AsDate := Now();
|
a.AsDate := Date();
|
||||||
b.AsDate := a.AsDate;
|
b.AsDate := a.AsDate;
|
||||||
CheckEquals(True,a.Equal(b));
|
CheckEquals(True,a.Equal(b));
|
||||||
CheckEquals(True,b.Equal(a));
|
CheckEquals(True,b.Equal(a));
|
||||||
@ -2344,11 +2634,10 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TTest_TDateRemotable.FormatDate_ZERO();
|
procedure TTest_TDateRemotable.FormatDate_ZERO();
|
||||||
const sDATE = '1899-12-30T00:00:00';
|
const sDATE = '1899-12-30';
|
||||||
var
|
var
|
||||||
d : TDateTime;
|
d : TDateTime;
|
||||||
begin
|
begin
|
||||||
//'-'? yyyy '-' mm '-' dd 'T' hh ':' mm ':' ss ('.' s+)? (zzzzzz)?
|
|
||||||
d := 0;
|
d := 0;
|
||||||
CheckEquals(sDATE, Copy(TDateRemotable.ToStr(d),1,Length(sDATE)));
|
CheckEquals(sDATE, Copy(TDateRemotable.ToStr(d),1,Length(sDATE)));
|
||||||
end;
|
end;
|
||||||
@ -2358,7 +2647,7 @@ var
|
|||||||
d : TDateTime;
|
d : TDateTime;
|
||||||
locObj : TDateRemotable;
|
locObj : TDateRemotable;
|
||||||
begin
|
begin
|
||||||
d := EncodeDateTime(1976,10,12,13,14,15,0);
|
d := EncodeDate(1976,10,12);
|
||||||
locObj := TDateRemotable.Create();
|
locObj := TDateRemotable.Create();
|
||||||
try
|
try
|
||||||
locObj.AsDate := d;
|
locObj.AsDate := d;
|
||||||
@ -2382,7 +2671,7 @@ var
|
|||||||
d, dd : TDateTime;
|
d, dd : TDateTime;
|
||||||
locObj : TDateRemotable;
|
locObj : TDateRemotable;
|
||||||
begin
|
begin
|
||||||
d := EncodeDateTime(1976,10,12,13,14,15,0);
|
d := EncodeDate(1976,10,12);
|
||||||
locObj := TDateRemotable.Create();
|
locObj := TDateRemotable.Create();
|
||||||
try
|
try
|
||||||
locObj.AsUTCDate := d;
|
locObj.AsUTCDate := d;
|
||||||
@ -2395,7 +2684,7 @@ begin
|
|||||||
|
|
||||||
// test while (Hour|Minute)Offset is not null
|
// test while (Hour|Minute)Offset is not null
|
||||||
locObj.AsUTCDate := dd;
|
locObj.AsUTCDate := dd;
|
||||||
CheckEquals(dd, locObj.AsUTCDate);
|
CheckEquals(dd, locObj.AsUTCDate,EPSILON_DATE);
|
||||||
finally
|
finally
|
||||||
locObj.Free();
|
locObj.Free();
|
||||||
end;
|
end;
|
||||||
@ -4013,6 +4302,7 @@ initialization
|
|||||||
RegisterTest('Support',TTest_TObjectCollectionRemotable.Suite);
|
RegisterTest('Support',TTest_TObjectCollectionRemotable.Suite);
|
||||||
RegisterTest('Support',TTest_TBaseComplexRemotable.Suite);
|
RegisterTest('Support',TTest_TBaseComplexRemotable.Suite);
|
||||||
RegisterTest('Support',TTest_TStringBufferRemotable.Suite);
|
RegisterTest('Support',TTest_TStringBufferRemotable.Suite);
|
||||||
|
RegisterTest('Support-Date',TTest_TDateTimeRemotable.Suite);
|
||||||
RegisterTest('Support-Date',TTest_TDateRemotable.Suite);
|
RegisterTest('Support-Date',TTest_TDateRemotable.Suite);
|
||||||
RegisterTest('Support-Date',TTest_TDurationRemotable.Suite);
|
RegisterTest('Support-Date',TTest_TDurationRemotable.Suite);
|
||||||
RegisterTest('Support-Date',TTest_TTimeRemotable.Suite);
|
RegisterTest('Support-Date',TTest_TTimeRemotable.Suite);
|
||||||
|
@ -42,7 +42,8 @@ type
|
|||||||
private
|
private
|
||||||
FVal_32S: LongInt;
|
FVal_32S: LongInt;
|
||||||
FVal_Bool: Boolean;
|
FVal_Bool: Boolean;
|
||||||
FVal_Date: TDateRemotable;
|
FVal_Date : TDateRemotable;
|
||||||
|
FVal_DateTime: TDateTimeRemotable;
|
||||||
FVal_Enum: TTestEnum;
|
FVal_Enum: TTestEnum;
|
||||||
FVal_String: string;
|
FVal_String: string;
|
||||||
FVal_Time : TTimeRemotable;
|
FVal_Time : TTimeRemotable;
|
||||||
@ -62,6 +63,7 @@ type
|
|||||||
{$IFDEF WST_UNICODESTRING}
|
{$IFDEF WST_UNICODESTRING}
|
||||||
property Val_UnicodeString : UnicodeString Read FVal_UnicodeString Write FVal_UnicodeString;
|
property Val_UnicodeString : UnicodeString Read FVal_UnicodeString Write FVal_UnicodeString;
|
||||||
{$ENDIF WST_UNICODESTRING}
|
{$ENDIF WST_UNICODESTRING}
|
||||||
|
property Val_DateTime : TDateTimeRemotable read FVal_DateTime write FVal_DateTime;
|
||||||
property Val_Date : TDateRemotable read FVal_Date write FVal_Date;
|
property Val_Date : TDateRemotable read FVal_Date write FVal_Date;
|
||||||
property Val_Time : TTimeRemotable read FVal_Time write FVal_Time;
|
property Val_Time : TTimeRemotable read FVal_Time write FVal_Time;
|
||||||
End;
|
End;
|
||||||
@ -2945,6 +2947,7 @@ end;
|
|||||||
procedure TTestFormatter.Test_Object();
|
procedure TTestFormatter.Test_Object();
|
||||||
const
|
const
|
||||||
DATE_VALUE = 39000;
|
DATE_VALUE = 39000;
|
||||||
|
DATETIME_VALUE = 39000.1234;
|
||||||
TIME_VALUE = '01:23:45.789Z';
|
TIME_VALUE = '01:23:45.789Z';
|
||||||
Var
|
Var
|
||||||
f : IFormatterBase;
|
f : IFormatterBase;
|
||||||
@ -2964,6 +2967,7 @@ begin
|
|||||||
{$ENDIF WST_UNICODESTRING}
|
{$ENDIF WST_UNICODESTRING}
|
||||||
a.ObjProp.Val_String := '456';
|
a.ObjProp.Val_String := '456';
|
||||||
a.ObjProp.Val_WideString := 'wide456';
|
a.ObjProp.Val_WideString := 'wide456';
|
||||||
|
a.ObjProp.Val_DateTime.AsDate := DATETIME_VALUE;
|
||||||
a.ObjProp.Val_Date.AsDate := DATE_VALUE;
|
a.ObjProp.Val_Date.AsDate := DATE_VALUE;
|
||||||
a.ObjProp.Val_Time.AsString := TIME_VALUE;
|
a.ObjProp.Val_Time.AsString := TIME_VALUE;
|
||||||
{$IFDEF WST_UNICODESTRING}
|
{$IFDEF WST_UNICODESTRING}
|
||||||
@ -2981,7 +2985,7 @@ begin
|
|||||||
f.EndScope();
|
f.EndScope();
|
||||||
|
|
||||||
s := TMemoryStream.Create();
|
s := TMemoryStream.Create();
|
||||||
f.SaveToStream(s);
|
f.SaveToStream(s);
|
||||||
FreeAndNil(a);
|
FreeAndNil(a);
|
||||||
|
|
||||||
a := TClass_B.Create();
|
a := TClass_B.Create();
|
||||||
@ -3006,6 +3010,7 @@ begin
|
|||||||
CheckEquals(Ord(teFour),Ord(a.ObjProp.Val_Enum));
|
CheckEquals(Ord(teFour),Ord(a.ObjProp.Val_Enum));
|
||||||
CheckEquals('456',a.ObjProp.Val_String);
|
CheckEquals('456',a.ObjProp.Val_String);
|
||||||
CheckEquals(WideString('wide456'),a.ObjProp.Val_WideString);
|
CheckEquals(WideString('wide456'),a.ObjProp.Val_WideString);
|
||||||
|
CheckEquals(TDateTimeRemotable.ToStr(DATETIME_VALUE),TDateTimeRemotable.ToStr(a.ObjProp.Val_DateTime.AsDate));
|
||||||
CheckEquals(TDateRemotable.ToStr(DATE_VALUE),TDateRemotable.ToStr(a.ObjProp.Val_Date.AsDate));
|
CheckEquals(TDateRemotable.ToStr(DATE_VALUE),TDateRemotable.ToStr(a.ObjProp.Val_Date.AsDate));
|
||||||
CheckEquals(TIME_VALUE,a.ObjProp.Val_Time.AsString);
|
CheckEquals(TIME_VALUE,a.ObjProp.Val_Time.AsString);
|
||||||
{$IFDEF WST_UNICODESTRING}
|
{$IFDEF WST_UNICODESTRING}
|
||||||
@ -4657,7 +4662,7 @@ begin
|
|||||||
Check( ls.IndexOf('intv') >= 0 );
|
Check( ls.IndexOf('intv') >= 0 );
|
||||||
x := 'a';
|
x := 'a';
|
||||||
f.BeginObjectRead(x,TypeInfo(TClass_A));
|
f.BeginObjectRead(x,TypeInfo(TClass_A));
|
||||||
CheckEquals(7{$IFDEF WST_UNICODESTRING}+1{$ENDIF}, f.GetScopeItemNames(ls), 'GetScopeItemNames.Count(a)');
|
CheckEquals(8{$IFDEF WST_UNICODESTRING}+1{$ENDIF}, f.GetScopeItemNames(ls), 'GetScopeItemNames.Count(a)');
|
||||||
Check( ls.IndexOf('Val_Bool') >= 0 );
|
Check( ls.IndexOf('Val_Bool') >= 0 );
|
||||||
Check( ls.IndexOf('Val_Enum') >= 0 );
|
Check( ls.IndexOf('Val_Enum') >= 0 );
|
||||||
Check( ls.IndexOf('Val_String') >= 0 );
|
Check( ls.IndexOf('Val_String') >= 0 );
|
||||||
@ -4666,7 +4671,7 @@ begin
|
|||||||
|
|
||||||
x := 'b';
|
x := 'b';
|
||||||
f.BeginObjectRead(x,TypeInfo(TClass_A));
|
f.BeginObjectRead(x,TypeInfo(TClass_A));
|
||||||
CheckEquals(7{$IFDEF WST_UNICODESTRING}+1{$ENDIF}, f.GetScopeItemNames(ls), 'GetScopeItemNames.Count(b)');
|
CheckEquals(8{$IFDEF WST_UNICODESTRING}+1{$ENDIF}, f.GetScopeItemNames(ls), 'GetScopeItemNames.Count(b)');
|
||||||
Check( ls.IndexOf('Val_Bool') >= 0 );
|
Check( ls.IndexOf('Val_Bool') >= 0 );
|
||||||
Check( ls.IndexOf('Val_Enum') >= 0 );
|
Check( ls.IndexOf('Val_Enum') >= 0 );
|
||||||
Check( ls.IndexOf('Val_String') >= 0 );
|
Check( ls.IndexOf('Val_String') >= 0 );
|
||||||
@ -4755,6 +4760,7 @@ end;
|
|||||||
procedure TTestSOAPFormatter.do_test_Object(const AProps, AFilename: string);
|
procedure TTestSOAPFormatter.do_test_Object(const AProps, AFilename: string);
|
||||||
const
|
const
|
||||||
DATE_VALUE = 39000;
|
DATE_VALUE = 39000;
|
||||||
|
DATETIME_VALUE = 39000.1234;
|
||||||
TIME_VALUE = '01:23:45.789Z';
|
TIME_VALUE = '01:23:45.789Z';
|
||||||
Var
|
Var
|
||||||
f : IFormatterBase;
|
f : IFormatterBase;
|
||||||
@ -4774,6 +4780,7 @@ begin
|
|||||||
{$ENDIF WST_UNICODESTRING}
|
{$ENDIF WST_UNICODESTRING}
|
||||||
a.ObjProp.Val_String := '456';
|
a.ObjProp.Val_String := '456';
|
||||||
a.ObjProp.Val_WideString := 'wide456';
|
a.ObjProp.Val_WideString := 'wide456';
|
||||||
|
a.ObjProp.Val_DateTime.AsDate := DATETIME_VALUE;
|
||||||
a.ObjProp.Val_Date.AsDate := DATE_VALUE;
|
a.ObjProp.Val_Date.AsDate := DATE_VALUE;
|
||||||
a.ObjProp.Val_Time.AsString := TIME_VALUE;
|
a.ObjProp.Val_Time.AsString := TIME_VALUE;
|
||||||
{$IFDEF WST_UNICODESTRING}
|
{$IFDEF WST_UNICODESTRING}
|
||||||
@ -4794,8 +4801,8 @@ begin
|
|||||||
s := TMemoryStream.Create();
|
s := TMemoryStream.Create();
|
||||||
f.SaveToStream(s);
|
f.SaveToStream(s);
|
||||||
FreeAndNil(a);
|
FreeAndNil(a);
|
||||||
//if not IsStrEmpty(AFilename) then
|
if not IsStrEmpty(AFilename) then
|
||||||
//s.SaveToFile(wstExpandLocalFileName(AFilename));
|
s.SaveToFile(wstExpandLocalFileName(AFilename));
|
||||||
|
|
||||||
a := TClass_B.Create();
|
a := TClass_B.Create();
|
||||||
f := CreateFormatter(TypeInfo(TClass_B));
|
f := CreateFormatter(TypeInfo(TClass_B));
|
||||||
@ -4820,6 +4827,7 @@ begin
|
|||||||
CheckEquals(Ord(teFour),Ord(a.ObjProp.Val_Enum));
|
CheckEquals(Ord(teFour),Ord(a.ObjProp.Val_Enum));
|
||||||
CheckEquals('456',a.ObjProp.Val_String);
|
CheckEquals('456',a.ObjProp.Val_String);
|
||||||
CheckEquals(WideString('wide456'),a.ObjProp.Val_WideString);
|
CheckEquals(WideString('wide456'),a.ObjProp.Val_WideString);
|
||||||
|
CheckEquals(TDateTimeRemotable.ToStr(DATETIME_VALUE),TDateTimeRemotable.ToStr(a.ObjProp.Val_DateTime.AsDate));
|
||||||
CheckEquals(TDateRemotable.ToStr(DATE_VALUE),TDateRemotable.ToStr(a.ObjProp.Val_Date.AsDate));
|
CheckEquals(TDateRemotable.ToStr(DATE_VALUE),TDateRemotable.ToStr(a.ObjProp.Val_Date.AsDate));
|
||||||
{$IFDEF WST_UNICODESTRING}
|
{$IFDEF WST_UNICODESTRING}
|
||||||
CheckEquals('unicode456',a.ObjProp.Val_UnicodeString);
|
CheckEquals('unicode456',a.ObjProp.Val_UnicodeString);
|
||||||
@ -6297,6 +6305,7 @@ end;
|
|||||||
constructor TClass_A.Create();
|
constructor TClass_A.Create();
|
||||||
begin
|
begin
|
||||||
inherited Create();
|
inherited Create();
|
||||||
|
FVal_DateTime := TDateTimeRemotable.Create();
|
||||||
FVal_Date := TDateRemotable.Create();
|
FVal_Date := TDateRemotable.Create();
|
||||||
FVal_Time := TTimeRemotable.Create();
|
FVal_Time := TTimeRemotable.Create();
|
||||||
end;
|
end;
|
||||||
@ -6305,6 +6314,7 @@ destructor TClass_A.Destroy();
|
|||||||
begin
|
begin
|
||||||
FreeAndNil(FVal_Time);
|
FreeAndNil(FVal_Time);
|
||||||
FreeAndNil(FVal_Date);
|
FreeAndNil(FVal_Date);
|
||||||
|
FreeAndNil(FVal_DateTime);
|
||||||
inherited Destroy();
|
inherited Destroy();
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user