Index: pkg/dart_messages/test/parser_test.html |
diff --git a/pkg/dart_messages/test/parser_test.html b/pkg/dart_messages/test/parser_test.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..c0da9d2b0e11152d37748186d09d959c6070a89b |
--- /dev/null |
+++ b/pkg/dart_messages/test/parser_test.html |
@@ -0,0 +1,82 @@ |
+<!DOCTYPE html> |
+<html> |
+<body> |
+ <div id="result_shared_messages"></div> |
+ <div id="smoke_messages"></div> |
+ |
+ <script type="text/javascript" src="../lib/parser.js"></script> |
+ <script type="text/javascript"> |
+ var testRunner = window.testRunner; |
+ if (testRunner) testRunner.waitUntilDone(); |
+ |
+ var runningTestCount = 0; |
+ |
+ function success(div_id) { |
+ document.getElementById(div_id).innerText = "SUCCESS"; |
+ console.log("Reading messages: SUCCESS"); |
+ if (--runningTestCount == 0 && testRunner) testRunner.notifyDone(); |
+ } |
+ |
+ function fail(div_id, msg) { |
+ document.getElementById(div_id).innerText = "FAILED " + msg; |
+ console.log("Reading messages: FAILED " + msg); |
+ if (--runningTestCount == 0 && testRunner) testRunner.notifyDone(); |
+ } |
+ |
+ function runTest(uri, div_id, fun) { |
+ runningTestCount++; |
+ loadMessages(function(db) { |
+ try { |
+ fun(db); |
+ success(div_id); |
+ } catch (e) { |
+ fail(div_id, e); |
+ } |
+ }, function(e) { |
+ fail(div_id, e); |
+ }, uri); |
+ |
+ } |
+ |
+ runTest('../lib/shared_messages.dart', |
+ 'result_shared_messages', |
+ function(db) { |
+ // No tests to run yet. |
+ return true; |
+ }); |
+ |
+ runTest('smoke_messages.dart', |
+ 'smoke_messages', |
+ function(db) { |
+ if (!db['GENERIC']) throw "no GENERIC entry"; |
+ var entries = Object.keys(db); |
+ if (entries.length < 50) throw "not enough entries"; |
+ var entry = db['CANNOT_RESOLVE_IN_INITIALIZER']; |
+ if (!entry) throw "couldn't find entry"; |
+ var template = entry.template; |
+ if (template != |
+ "Cannot resolve '#{name}'. It would be implicitly looked up on this " + |
+ "instance, but instances are not available in initializers.") { |
+ throw "bad template"; |
+ } |
+ var howToFix = entry['howToFix']; |
+ if (!howToFix) throw "no how to fix"; |
+ if (howToFix != |
+ "Try correcting the unresolved reference or move the" + |
+ " initialization to a constructor body.") { |
+ throw "bad howtofix"; |
+ } |
+ var examples = entry['examples']; |
+ if (!examples) throw "no examples"; |
+ if (examples.length != 1) throw "bad length"; |
+ if (examples[0] != |
+ "class A {\n" + |
+ "var test = unresolvedName;\n" + |
+ "}\n" + |
+ "main() => new A();\n") { |
+ throw "bad example"; |
+ } |
+ }); |
+ </script> |
+</body> |
+</html> |