From 90d87793cf55f3c4e57e9db6c8de692ebef41e29 Mon Sep 17 00:00:00 2001 From: tsepez Date: Tue, 29 Mar 2016 09:21:54 -0700 Subject: Add test for util.byteToChar() and fix error msg. Review URL: https://codereview.chromium.org/1838543002 --- fpdfsdk/javascript/util.cpp | 18 +++-- testing/resources/javascript/util_bytetochar.in | 76 ++++++++++++++++++++++ .../javascript/util_bytetochar_expected.txt | 9 +++ 3 files changed, 96 insertions(+), 7 deletions(-) create mode 100644 testing/resources/javascript/util_bytetochar.in create mode 100644 testing/resources/javascript/util_bytetochar_expected.txt diff --git a/fpdfsdk/javascript/util.cpp b/fpdfsdk/javascript/util.cpp index f7b2d7fbfa..0f50daf38c 100644 --- a/fpdfsdk/javascript/util.cpp +++ b/fpdfsdk/javascript/util.cpp @@ -446,13 +446,17 @@ FX_BOOL util::byteToChar(IJS_Context* cc, const std::vector& params, CJS_Value& vRet, CFX_WideString& sError) { - int iSize = params.size(); - if (iSize == 0) + CJS_Context* pContext = static_cast(cc); + if (params.size() < 1) { + sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); + return FALSE; + } + int arg = params[0].ToInt(); + if (arg < 0 || arg > 255) { + sError = JSGetStringFromID(pContext, IDS_STRING_JSVALUEERROR); return FALSE; - int nByte = params[0].ToInt(); - unsigned char cByte = (unsigned char)nByte; - CFX_WideString csValue; - csValue.Format(L"%c", cByte); - vRet = csValue.c_str(); + } + CFX_WideString wStr(static_cast(arg)); + vRet = wStr.c_str(); return TRUE; } diff --git a/testing/resources/javascript/util_bytetochar.in b/testing/resources/javascript/util_bytetochar.in new file mode 100644 index 0000000000..a9adfbccaf --- /dev/null +++ b/testing/resources/javascript/util_bytetochar.in @@ -0,0 +1,76 @@ +{{header}} +{{object 1 0}} << + /Type /Catalog + /Pages 2 0 R + /OpenAction 10 0 R +>> +endobj +{{object 2 0}} << + /Type /Pages + /Count 1 + /Kids [ + 3 0 R + ] +>> +endobj +% Page number 0. +{{object 3 0}} << + /Type /Page + /Parent 2 0 R + /Resources << + /Font <> + >> + /Contents [21 0 R] + /MediaBox [0 0 612 792] +>> +% OpenAction action +{{object 10 0}} << + /Type /Action + /S /JavaScript + /JS 11 0 R +>> +endobj +% JS program to exexute +{{object 11 0}} << +>> +stream +function TestOneInput(x) { + try { + var s = util.byteToChar(x); + if (s.length) { + s = s.charCodeAt(0); + } + app.alert(x + " => " + s); + } + catch (e) { + app.alert(x + ": Caught error: " + e); + } +} +TestOneInput(0); +TestOneInput(65); +TestOneInput(127); +TestOneInput(128); +TestOneInput(255); +TestOneInput(256); +TestOneInput(40000000); +TestOneInput(-1); +try { + util.byteToChar(); +} +catch (e) { + app.alert("Caught expected error: " + e); +} +try { + util.byteToChar({x:39}); +} +catch (e) { + app.alert("Caught expected error: " + e); +} +endstream +endobj +{{xref}} +trailer << + /Root 1 0 R +>> +{{startxref}} +%%EOF diff --git a/testing/resources/javascript/util_bytetochar_expected.txt b/testing/resources/javascript/util_bytetochar_expected.txt new file mode 100644 index 0000000000..df15ee7226 --- /dev/null +++ b/testing/resources/javascript/util_bytetochar_expected.txt @@ -0,0 +1,9 @@ +Alert: 0 => +Alert: 65 => 65 +Alert: 127 => 127 +Alert: 128 => 128 +Alert: 255 => 255 +Alert: 256: Caught error: util.byteToChar: Incorrect parameter value. +Alert: 40000000: Caught error: util.byteToChar: Incorrect parameter value. +Alert: -1: Caught error: util.byteToChar: Incorrect parameter value. +Alert: Caught expected error: util.byteToChar: Incorrect number of parameters passed to function. -- cgit v1.2.3