Add JavaScript test for constants in Consts.cpp.

R=thestig@chromium.org

Review URL: https://codereview.chromium.org/908023003
diff --git a/testing/resources/javascript/consts.in b/testing/resources/javascript/consts.in
new file mode 100644
index 0000000..2ed239a
--- /dev/null
+++ b/testing/resources/javascript/consts.in
@@ -0,0 +1,71 @@
+{{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 <</F1 15 0 R>>
+  >>
+  /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 doTest(name, props) {
+  for (var i = 0; i < props.length; ++i) {
+    var expr = name + "." + props[i];
+    app.alert(expr + " is " + eval(expr));
+  }
+}
+
+try {
+  doTest("border", ["s", "b", "d", "i", "u", "nonesuch"]);
+  doTest("display", ["visible", "hidden", "noPrint", "noView", "nonesuch"]);
+  doTest("font", ["Times", "TimesB", "TimesI", "TimesBI", "Helv", "HelvB",
+                  "HelvI", "HelvBI", "Cour", "CourB", "CourI", "CourBI",
+                  "Symbol", "ZapfD", "Nonesuch"]);
+
+  doTest("highlight", ["n", "i", "p", "o", "nonesuch"]);
+  doTest("position", ["textOnly", "iconOnly", "iconTextV", "textIconV",
+                      "iconTextH", "textIconH", "overlay", "nonesuch"]);
+
+  doTest("scaleHow", ["proportional", "anamorphic", "nonesuch"]);
+  doTest("scaleWhen", ["always", "never", "tooBig", "tooSmall", "nonesuch"]);
+  doTest("style", ["ch", "cr", "di", "ci", "st", "sq", "nonesuch"]);
+  doTest("zoomtype", ["none", "fitP", "fitW", "fitH", "fitV", "pref", "refW",
+                      "nonesuch"]);
+} catch (e) {
+  app.alert("ERROR: " + e.toString());
+}
+endstream
+endobj
+{{xref}}
+trailer <<
+  /Root 1 0 R
+>>
+{{startxref}}
+%%EOF
diff --git a/testing/resources/javascript/consts.pdf b/testing/resources/javascript/consts.pdf
new file mode 100644
index 0000000..0e436e5
--- /dev/null
+++ b/testing/resources/javascript/consts.pdf
@@ -0,0 +1,86 @@
+%PDF-1.7
+% ò¤ô
+1 0 obj <<
+  /Type /Catalog
+  /Pages 2 0 R
+  /OpenAction 10 0 R
+>>
+endobj
+2 0 obj <<
+  /Type /Pages
+  /Count 1
+  /Kids [
+    3 0 R
+  ]
+>>
+endobj
+% Page number 0.
+3 0 obj <<
+  /Type /Page
+  /Parent 2 0 R
+  /Resources <<
+    /Font <</F1 15 0 R>>
+  >>
+  /Contents [21 0 R]
+  /MediaBox [0 0 612 792]
+>>
+% OpenAction action
+10 0 obj <<
+  /Type /Action
+  /S /JavaScript
+  /JS 11 0 R
+>>
+endobj
+% JS program to exexute
+11 0 obj <<
+>>
+stream
+
+function doTest(name, props) {
+  for (var i = 0; i < props.length; ++i) {
+    var expr = name + "." + props[i];
+    app.alert(expr + " is " + eval(expr));
+  }
+}
+
+try {
+  doTest("border", ["s", "b", "d", "i", "u", "nonesuch"]);
+  doTest("display", ["visible", "hidden", "noPrint", "noView", "nonesuch"]);
+  doTest("font", ["Times", "TimesB", "TimesI", "TimesBI", "Helv", "HelvB",
+                  "HelvI", "HelvBI", "Cour", "CourB", "CourI", "CourBI",
+                  "Symbol", "ZapfD", "Nonesuch"]);
+
+  doTest("highlight", ["n", "i", "p", "o", "nonesuch"]);
+  doTest("position", ["textOnly", "iconOnly", "iconTextV", "textIconV",
+                      "iconTextH", "textIconH", "overlay", "nonesuch"]);
+
+  doTest("scaleHow", ["proportional", "anamorphic", "nonesuch"]);
+  doTest("scaleWhen", ["always", "never", "tooBig", "tooSmall", "nonesuch"]);
+  doTest("style", ["ch", "cr", "di", "ci", "st", "sq", "nonesuch"]);
+  doTest("zoomtype", ["none", "fitP", "fitW", "fitH", "fitV", "pref", "refW",
+                      "nonesuch"]);
+} catch (e) {
+  app.alert("ERROR: " + e.toString());
+}
+endstream
+endobj
+xref
+0 12
+0000000000 65535 f 
+0000000015 00000 n 
+0000000089 00000 n 
+0000000177 00000 n 
+0000000000 65535 f 
+0000000000 65535 f 
+0000000000 65535 f 
+0000000000 65535 f 
+0000000000 65535 f 
+0000000000 65535 f 
+0000000334 00000 n 
+0000000426 00000 n 
+trailer <<
+  /Root 1 0 R
+>>
+startxref
+1555
+%%EOF
diff --git a/testing/resources/javascript/consts_expected.txt b/testing/resources/javascript/consts_expected.txt
new file mode 100644
index 0000000..c32d480
--- /dev/null
+++ b/testing/resources/javascript/consts_expected.txt
@@ -0,0 +1,62 @@
+Alert: border.s is solid
+Alert: border.b is beveled
+Alert: border.d is dashed
+Alert: border.i is inset
+Alert: border.u is underline
+Alert: border.nonesuch is undefined
+Alert: display.visible is 0
+Alert: display.hidden is 1
+Alert: display.noPrint is 2
+Alert: display.noView is 3
+Alert: display.nonesuch is undefined
+Alert: font.Times is Times-Roman
+Alert: font.TimesB is Times-Bold
+Alert: font.TimesI is Times-Italic
+Alert: font.TimesBI is Times-BoldItalic
+Alert: font.Helv is Helvetica
+Alert: font.HelvB is Helvetica-Bold
+Alert: font.HelvI is Helvetica-Oblique
+Alert: font.HelvBI is Helvetica-BoldOblique
+Alert: font.Cour is Courier
+Alert: font.CourB is Courier-Bold
+Alert: font.CourI is Courier-Oblique
+Alert: font.CourBI is Courier-BoldOblique
+Alert: font.Symbol is Symbol
+Alert: font.ZapfD is ZapfDingbats
+Alert: font.Nonesuch is undefined
+Alert: highlight.n is none
+Alert: highlight.i is invert
+Alert: highlight.p is push
+Alert: highlight.o is outline
+Alert: highlight.nonesuch is undefined
+Alert: position.textOnly is 0
+Alert: position.iconOnly is 1
+Alert: position.iconTextV is 2
+Alert: position.textIconV is 3
+Alert: position.iconTextH is 4
+Alert: position.textIconH is 5
+Alert: position.overlay is 6
+Alert: position.nonesuch is undefined
+Alert: scaleHow.proportional is 0
+Alert: scaleHow.anamorphic is 1
+Alert: scaleHow.nonesuch is undefined
+Alert: scaleWhen.always is 0
+Alert: scaleWhen.never is 1
+Alert: scaleWhen.tooBig is 2
+Alert: scaleWhen.tooSmall is 3
+Alert: scaleWhen.nonesuch is undefined
+Alert: style.ch is check
+Alert: style.cr is cross
+Alert: style.di is diamond
+Alert: style.ci is circle
+Alert: style.st is star
+Alert: style.sq is square
+Alert: style.nonesuch is undefined
+Alert: zoomtype.none is NoVary
+Alert: zoomtype.fitP is FitPage
+Alert: zoomtype.fitW is FitWidth
+Alert: zoomtype.fitH is FitHeight
+Alert: zoomtype.fitV is FitVisibleWidth
+Alert: zoomtype.pref is Preferred
+Alert: zoomtype.refW is ReflowWidth
+Alert: zoomtype.nonesuch is undefined