Commit bae687ec authored by Nikolay Sivov's avatar Nikolay Sivov Committed by Alexandre Julliard

vbscript: Implement DateSerial().

parent 279a6b1e
......@@ -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()
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment