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

vbscript: Implement FormatCurrency().

parent ad7945eb
......@@ -2951,10 +2951,36 @@ static HRESULT Global_FormatNumber(BuiltinDisp *This, VARIANT *arg, unsigned arg
return E_NOTIMPL;
}
static HRESULT Global_FormatCurrency(BuiltinDisp *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
static HRESULT Global_FormatCurrency(BuiltinDisp *This, VARIANT *args, unsigned args_cnt, VARIANT *res)
{
FIXME("\n");
return E_NOTIMPL;
union
{
struct
{
int num_dig, inc_lead, use_parens, group;
} s;
int val[4];
} int_args = { .s.num_dig = -1, .s.inc_lead = -2, .s.use_parens = -2, .s.group = -2 };
HRESULT hres;
BSTR str;
int i;
TRACE("\n");
assert(1 <= args_cnt && args_cnt <= 5);
for (i = 1; i < args_cnt; ++i)
{
if (V_VT(args+i) == VT_ERROR) continue;
if (V_VT(args+i) == VT_NULL) return MAKE_VBSERROR(VBSE_ILLEGAL_NULL_USE);
if (FAILED(hres = to_int(args+i, &int_args.val[i-1]))) return hres;
}
hres = VarFormatCurrency(args, int_args.s.num_dig, int_args.s.inc_lead, int_args.s.use_parens,
int_args.s.group, 0, &str);
if (FAILED(hres)) return hres;
return return_bstr(res, str);
}
static HRESULT Global_FormatPercent(BuiltinDisp *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
......
......@@ -2339,4 +2339,40 @@ end sub
call testRandomize()
call testRandomizeError()
sub testFormatCurrencyError()
on error resume next
dim x
call Err.clear()
x = FormatCurrency(null)
call ok(Err.number = 13, "Err.number = " & Err.number)
call ok(getVT(x) = "VT_EMPTY*", "getVT = " & getVT(x))
call Err.clear()
x = FormatCurrency(1000,null)
call ok(Err.number = 94, "Err.number = " & Err.number)
call ok(getVT(x) = "VT_EMPTY*", "getVT = " & getVT(x))
call Err.clear()
x = FormatCurrency(1000,0,null)
call ok(Err.number = 94, "Err.number = " & Err.number)
call ok(getVT(x) = "VT_EMPTY*", "getVT = " & getVT(x))
call Err.clear()
x = FormatCurrency(1000,0,0,null)
call ok(Err.number = 94, "Err.number = " & Err.number)
call ok(getVT(x) = "VT_EMPTY*", "getVT = " & getVT(x))
call Err.clear()
x = FormatCurrency(1000,0,0,0,null)
call ok(Err.number = 94, "Err.number = " & Err.number)
call ok(getVT(x) = "VT_EMPTY*", "getVT = " & getVT(x))
end sub
sub testFormatCurrency()
dim x
x = FormatCurrency(0)
x = FormatCurrency(-1000,,,-1)
call ok(getVT(x) = "VT_BSTR*", "getVT = " & getVT(x))
end sub
call testFormatCurrency()
call testFormatCurrencyError()
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