summaryrefslogtreecommitdiff
path: root/fpdfsdk/javascript/util.cpp
diff options
context:
space:
mode:
authorHenrique Nakashima <hnakashima@chromium.org>2017-07-14 14:24:42 -0400
committerChromium commit bot <commit-bot@chromium.org>2017-07-14 18:40:27 +0000
commit3a4ebcc7c490eba0c22892ab04d1730c350fd0c0 (patch)
tree4b95eae21c4430e3db867f27c7ec6da83df4d68f /fpdfsdk/javascript/util.cpp
parent21dd189fe50d297dd1224c06319e166c1ac6bae2 (diff)
downloadpdfium-3a4ebcc7c490eba0c22892ab04d1730c350fd0c0.tar.xz
Create ParseDataType unit tests based on specs.chromium/3159chromium/3158
Test cases that are commented out are failing with our current implementation. Change-Id: I9f80003af5a5d182f53cc655454aec44397d278b Reviewed-on: https://pdfium-review.googlesource.com/7890 Commit-Queue: Henrique Nakashima <hnakashima@chromium.org> Reviewed-by: Tom Sepez <tsepez@chromium.org>
Diffstat (limited to 'fpdfsdk/javascript/util.cpp')
-rw-r--r--fpdfsdk/javascript/util.cpp68
1 files changed, 34 insertions, 34 deletions
diff --git a/fpdfsdk/javascript/util.cpp b/fpdfsdk/javascript/util.cpp
index 3338a3a126..7f0fe1eadb 100644
--- a/fpdfsdk/javascript/util.cpp
+++ b/fpdfsdk/javascript/util.cpp
@@ -70,40 +70,6 @@ const TbConvert TbConvertTable[] = {
#endif
};
-int ParseDataType(std::wstring* sFormat) {
- bool bPercent = false;
- for (size_t i = 0; i < sFormat->length(); ++i) {
- wchar_t c = (*sFormat)[i];
- if (c == L'%') {
- bPercent = true;
- continue;
- }
-
- if (bPercent) {
- if (c == L'c' || c == L'C' || c == L'd' || c == L'i' || c == L'o' ||
- c == L'u' || c == L'x' || c == L'X') {
- return UTIL_INT;
- }
- if (c == L'e' || c == L'E' || c == L'f' || c == L'g' || c == L'G') {
- return UTIL_DOUBLE;
- }
- if (c == L's' || c == L'S') {
- // Map s to S since we always deal internally
- // with wchar_t strings.
- (*sFormat)[i] = L'S';
- return UTIL_STRING;
- }
- if (c == L'.' || c == L'+' || c == L'-' || c == L'#' || c == L' ' ||
- std::iswdigit(c)) {
- continue;
- }
- break;
- }
- }
-
- return -1;
-}
-
} // namespace
util::util(CJS_Object* pJSObject) : CJS_EmbedObj(pJSObject) {}
@@ -480,3 +446,37 @@ bool util::byteToChar(CJS_Runtime* pRuntime,
vRet = CJS_Value(pRuntime, wStr.c_str());
return true;
}
+
+int util::ParseDataType(std::wstring* sFormat) {
+ bool bPercent = false;
+ for (size_t i = 0; i < sFormat->length(); ++i) {
+ wchar_t c = (*sFormat)[i];
+ if (c == L'%') {
+ bPercent = true;
+ continue;
+ }
+
+ if (bPercent) {
+ if (c == L'c' || c == L'C' || c == L'd' || c == L'i' || c == L'o' ||
+ c == L'u' || c == L'x' || c == L'X') {
+ return UTIL_INT;
+ }
+ if (c == L'e' || c == L'E' || c == L'f' || c == L'g' || c == L'G') {
+ return UTIL_DOUBLE;
+ }
+ if (c == L's' || c == L'S') {
+ // Map s to S since we always deal internally
+ // with wchar_t strings.
+ (*sFormat)[i] = L'S';
+ return UTIL_STRING;
+ }
+ if (c == L'.' || c == L'+' || c == L'-' || c == L'#' || c == L' ' ||
+ std::iswdigit(c)) {
+ continue;
+ }
+ break;
+ }
+ }
+
+ return -1;
+}