vbscript: Implement DateSerial().
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com> Signed-off-by: Jacek Caban <jacek@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
279a6b1e48
commit
bae687ec6b
|
@ -2044,10 +2044,35 @@ static HRESULT Global_TimeValue(BuiltinDisp *This, VARIANT *arg, unsigned args_c
|
|||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT Global_DateSerial(BuiltinDisp *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
|
||||
static HRESULT Global_DateSerial(BuiltinDisp *This, VARIANT *args, unsigned args_cnt, VARIANT *res)
|
||||
{
|
||||
FIXME("\n");
|
||||
return E_NOTIMPL;
|
||||
int year, month, day;
|
||||
UDATE ud = {{ 0 }};
|
||||
HRESULT hres;
|
||||
double date;
|
||||
|
||||
TRACE("\n");
|
||||
|
||||
assert(args_cnt == 3);
|
||||
|
||||
hres = to_int(args, &year);
|
||||
if (SUCCEEDED(hres))
|
||||
hres = to_int(args + 1, &month);
|
||||
if (SUCCEEDED(hres))
|
||||
hres = to_int(args + 2, &day);
|
||||
|
||||
if (SUCCEEDED(hres))
|
||||
{
|
||||
ud.st.wYear = year;
|
||||
ud.st.wMonth = month;
|
||||
ud.st.wDay = day;
|
||||
hres = VarDateFromUdateEx(&ud, 0, 0, &date);
|
||||
}
|
||||
|
||||
if (SUCCEEDED(hres))
|
||||
hres = return_date(res, date);
|
||||
|
||||
return hres;
|
||||
}
|
||||
|
||||
static HRESULT Global_TimeSerial(BuiltinDisp *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
|
||||
|
|
|
@ -1958,4 +1958,34 @@ sub testErrRaise()
|
|||
end sub
|
||||
call testErrRaise()
|
||||
|
||||
sub testDateSerial(yy, mm, dd, yyexp, mmexp, ddexp)
|
||||
dim x
|
||||
x = DateSerial(yy, mm, dd)
|
||||
call ok(Year(x) = yyexp, "year = " & Year(x) & " expected " & yyexp)
|
||||
call ok(Month(x) = mmexp, "month = " & Month(x) & " expected " & mmexp)
|
||||
call ok(Day(x) = ddexp, "day = " & Day(x) & " expected " & ddexp)
|
||||
call ok(Hour(x) = 0, "hour = " & Hour(x))
|
||||
call ok(Minute(x) = 0, "minute = " & Minute(x))
|
||||
call ok(Second(x) = 0, "second = " & Second(x))
|
||||
call ok(getVT(x) = "VT_DATE*", "getVT = " & getVT(x))
|
||||
end sub
|
||||
|
||||
sub testDateSerialError()
|
||||
on error resume next
|
||||
call Err.clear()
|
||||
call DateSerial(10000, 1, 1)
|
||||
call ok(Err.number = 5, "Err.number = " & Err.number)
|
||||
call Err.clear()
|
||||
call DateSerial(-10000, 1, 1)
|
||||
call ok(Err.number = 5, "Err.number = " & Err.number)
|
||||
end sub
|
||||
|
||||
call testDateSerial(100, 2, 1, 100, 2, 1)
|
||||
call testDateSerial(0, 2, 1, 2000, 2, 1)
|
||||
call testDateSerial(50, 2, 1, 1950, 2, 1)
|
||||
call testDateSerial(99, 2, 1, 1999, 2, 1)
|
||||
call testDateSerial(2000, 14, 2, 2001, 2, 2)
|
||||
call testDateSerial(9999, 12, 1, 9999, 12, 1)
|
||||
call testDateSerialError()
|
||||
|
||||
Call reportSuccess()
|
||||
|
|
Loading…
Reference in New Issue