Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(60)

Unified Diff: pkg/analyzer/test/generated/all_the_rest.dart

Issue 459703002: New analyzer snapshot. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « pkg/analyzer/pubspec.yaml ('k') | pkg/analyzer/test/generated/engine_test.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/analyzer/test/generated/all_the_rest.dart
diff --git a/pkg/analyzer/test/generated/all_the_rest.dart b/pkg/analyzer/test/generated/all_the_rest.dart
new file mode 100644
index 0000000000000000000000000000000000000000..1ee9a481f3384e02c67ffc7ad69613da042fd0f8
--- /dev/null
+++ b/pkg/analyzer/test/generated/all_the_rest.dart
@@ -0,0 +1,13944 @@
+// // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
+// // for details. All rights reserved. Use of this source code is governed by a
+// // BSD-style license that can be found in the LICENSE file.
+// // This code was auto-generated, is not intended to be edited, and is subject to
+// // significant change. Please see the README file for more information.
+// abstract class AbstractScannerTest extends JUnitTestCase {
+// void test_tokenize_attribute() {
+// _tokenize("<html bob=\"one two\">", <Object> [LT, "html", "bob", EQ, "\"one two\"", GT]);
+// }
+// void test_tokenize_comment() {
+// _tokenize("<!-- foo -->", <Object> ["<!-- foo -->"]);
+// }
+// void test_tokenize_comment_incomplete() {
+// _tokenize("<!-- foo", <Object> ["<!-- foo"]);
+// }
+// void test_tokenize_comment_with_gt() {
+// _tokenize("<!-- foo > -> -->", <Object> ["<!-- foo > -> -->"]);
+// }
+// void test_tokenize_declaration() {
+// _tokenize("<! foo ><html>", <Object> ["<! foo >", LT, "html", GT]);
+// }
+// void test_tokenize_declaration_malformed() {
+// _tokenize("<! foo /><html>", <Object> ["<! foo />", LT, "html", GT]);
+// }
+// void test_tokenize_directive_incomplete() {
+// _tokenize2("<? \nfoo", <Object> ["<? \nfoo"], <int> [0, 4]);
+// }
+// void test_tokenize_directive_xml() {
+// _tokenize("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>", <Object> ["<?xml version=\"1.0\" encoding=\"UTF-8\" ?>"]);
+// }
+// void test_tokenize_directives_incomplete_with_newline() {
+// _tokenize2("<! \nfoo", <Object> ["<! \nfoo"], <int> [0, 4]);
+// }
+// void test_tokenize_empty() {
+// _tokenize("", <Object> []);
+// }
+// void test_tokenize_lt() {
+// _tokenize("<", <Object> [LT]);
+// }
+// void test_tokenize_script_embedded_tags() {
+// _tokenize("<script> <p></p></script>", <Object> [LT, "script", GT, " <p></p>", LT_SLASH, "script", GT]);
+// }
+// void test_tokenize_script_embedded_tags2() {
+// _tokenize("<script> <p></p><</script>", <Object> [LT, "script", GT, " <p></p><", LT_SLASH, "script", GT]);
+// }
+// void test_tokenize_script_embedded_tags3() {
+// _tokenize("<script> <p></p></</script>", <Object> [LT, "script", GT, " <p></p></", LT_SLASH, "script", GT]);
+// }
+// void test_tokenize_script_partial() {
+// _tokenize("<script> <p> ", <Object> [LT, "script", GT, " <p> "]);
+// }
+// void test_tokenize_script_partial2() {
+// _tokenize("<script> <p> <", <Object> [LT, "script", GT, " <p> <"]);
+// }
+// void test_tokenize_script_partial3() {
+// _tokenize("<script> <p> </", <Object> [LT, "script", GT, " <p> </"]);
+// }
+// void test_tokenize_script_ref() {
+// _tokenize("<script source='some.dart'/> <p>", <Object> [
+// LT,
+// "script",
+// "source",
+// EQ,
+// "'some.dart'",
+// SLASH_GT,
+// " ",
+// LT,
+// "p",
+// GT]);
+// }
+// void test_tokenize_script_with_newline() {
+// _tokenize2("<script> <p>\n </script>", <Object> [LT, "script", GT, " <p>\n ", LT_SLASH, "script", GT], <int> [0, 13]);
+// }
+// void test_tokenize_spaces_and_newlines() {
+// Token token = _tokenize2(" < html \n bob = 'joe\n' >\n <\np > one \r\n two <!-- \rfoo --> </ p > </ html > ", <Object> [
+// " ",
+// LT,
+// "html",
+// "bob",
+// EQ,
+// "'joe\n'",
+// GT,
+// "\n ",
+// LT,
+// "p",
+// GT,
+// " one \r\n two ",
+// "<!-- \rfoo -->",
+// " ",
+// LT_SLASH,
+// "p",
+// GT,
+// " ",
+// LT_SLASH,
+// "html",
+// GT,
+// " "], <int> [0, 9, 21, 25, 28, 38, 49]);
+// token = token.next;
+// JUnitTestCase.assertEquals(1, token.offset);
+// token = token.next;
+// JUnitTestCase.assertEquals(3, token.offset);
+// token = token.next;
+// JUnitTestCase.assertEquals(10, token.offset);
+// }
+// void test_tokenize_string() {
+// _tokenize("<p bob=\"foo\">", <Object> [LT, "p", "bob", EQ, "\"foo\"", GT]);
+// }
+// void test_tokenize_string_partial() {
+// _tokenize("<p bob=\"foo", <Object> [LT, "p", "bob", EQ, "\"foo"]);
+// }
+// void test_tokenize_string_single_quote() {
+// _tokenize("<p bob='foo'>", <Object> [LT, "p", "bob", EQ, "'foo'", GT]);
+// }
+// void test_tokenize_string_single_quote_partial() {
+// _tokenize("<p bob='foo", <Object> [LT, "p", "bob", EQ, "'foo"]);
+// }
+// void test_tokenize_tag_begin_end() {
+// _tokenize("<html></html>", <Object> [LT, "html", GT, LT_SLASH, "html", GT]);
+// }
+// void test_tokenize_tag_begin_only() {
+// Token token = _tokenize("<html>", <Object> [LT, "html", GT]);
+// token = token.next;
+// JUnitTestCase.assertEquals(1, token.offset);
+// }
+// void test_tokenize_tag_incomplete_with_special_characters() {
+// _tokenize("<br-a_b", <Object> [LT, "br-a_b"]);
+// }
+// void test_tokenize_tag_self_contained() {
+// _tokenize("<br/>", <Object> [LT, "br", SLASH_GT]);
+// }
+// void test_tokenize_tags_wellformed() {
+// _tokenize("<html><p>one two</p></html>", <Object> [
+// LT,
+// "html",
+// GT,
+// LT,
+// "p",
+// GT,
+// "one two",
+// LT_SLASH,
+// "p",
+// GT,
+// LT_SLASH,
+// "html",
+// GT]);
+// }
+// AbstractScanner newScanner(String input);
+// /**
+// * Given an object representing an expected token, answer the expected token type.
+// *
+// * @param count the token count for error reporting
+// * @param expected the object representing an expected token
+// * @return the expected token type
+// */
+// TokenType _getExpectedTokenType(int count, Object expected) {
+// if (expected is TokenType) {
+// return expected as TokenType;
+// }
+// if (expected is String) {
+// String lexeme = expected as String;
+// if (lexeme.startsWith("\"") || lexeme.startsWith("'")) {
+// return TokenType.STRING;
+// }
+// if (lexeme.startsWith("<!--")) {
+// return TokenType.COMMENT;
+// }
+// if (lexeme.startsWith("<!")) {
+// return TokenType.DECLARATION;
+// }
+// if (lexeme.startsWith("<?")) {
+// return TokenType.DIRECTIVE;
+// }
+// if (_isTag(lexeme)) {
+// return TokenType.TAG;
+// }
+// return TokenType.TEXT;
+// }
+// JUnitTestCase.fail("Unknown expected token ${count}: ${(expected != null ? expected.runtimeType : "null")}");
+// return null;
+// }
+// bool _isTag(String lexeme) {
+// if (lexeme.length == 0 || !Character.isLetter(lexeme.codeUnitAt(0))) {
+// return false;
+// }
+// for (int index = 1; index < lexeme.length; index++) {
+// int ch = lexeme.codeUnitAt(index);
+// if (!Character.isLetterOrDigit(ch) && ch != 0x2D && ch != 0x5F) {
+// return false;
+// }
+// }
+// return true;
+// }
+// Token _tokenize(String input, List<Object> expectedTokens) => _tokenize2(input, expectedTokens, <int> [0]);
+// Token _tokenize2(String input, List<Object> expectedTokens, List<int> expectedLineStarts) {
+// AbstractScanner scanner = newScanner(input);
+// scanner.passThroughElements = <String> ["script"];
+// int count = 0;
+// Token firstToken = scanner.tokenize();
+// Token token = firstToken;
+// Token previousToken = token.previous;
+// JUnitTestCase.assertTrue(previousToken.type == TokenType.EOF);
+// JUnitTestCase.assertSame(previousToken, previousToken.previous);
+// JUnitTestCase.assertEquals(-1, previousToken.offset);
+// JUnitTestCase.assertSame(token, previousToken.next);
+// JUnitTestCase.assertEquals(0, token.offset);
+// while (token.type != TokenType.EOF) {
+// if (count == expectedTokens.length) {
+// JUnitTestCase.fail("too many parsed tokens");
+// }
+// Object expected = expectedTokens[count];
+// TokenType expectedTokenType = _getExpectedTokenType(count, expected);
+// JUnitTestCase.assertSameMsg("token ${count}", expectedTokenType, token.type);
+// if (expectedTokenType.lexeme != null) {
+// JUnitTestCase.assertEqualsMsg("token ${count}", expectedTokenType.lexeme, token.lexeme);
+// } else {
+// JUnitTestCase.assertEqualsMsg("token ${count}", expected, token.lexeme);
+// }
+// count++;
+// previousToken = token;
+// token = token.next;
+// JUnitTestCase.assertSame(previousToken, token.previous);
+// }
+// JUnitTestCase.assertSame(token, token.next);
+// JUnitTestCase.assertEquals(input.length, token.offset);
+// if (count != expectedTokens.length) {
+// JUnitTestCase.assertTrueMsg("not enough parsed tokens", false);
+// }
+// List<int> lineStarts = scanner.lineStarts;
+// bool success = expectedLineStarts.length == lineStarts.length;
+// if (success) {
+// for (int i = 0; i < lineStarts.length; i++) {
+// if (expectedLineStarts[i] != lineStarts[i]) {
+// success = false;
+// break;
+// }
+// }
+// }
+// if (!success) {
+// JavaStringBuilder msg = new JavaStringBuilder();
+// msg.append("Expected line starts ");
+// for (int start in expectedLineStarts) {
+// msg.append(start);
+// msg.append(", ");
+// }
+// msg.append(" but found ");
+// for (int start in lineStarts) {
+// msg.append(start);
+// msg.append(", ");
+// }
+// JUnitTestCase.fail(msg.toString());
+// }
+// return firstToken;
+// }
+// }
+// class AngularCompilationUnitBuilderTest extends AngularTest {
+// static AngularElement getAngularElement(Element element, Type angularElementType) {
+// List<ToolkitObjectElement> toolkitObjects = null;
+// if (element is ClassElement) {
+// ClassElement classElement = element as ClassElement;
+// toolkitObjects = classElement.toolkitObjects;
+// }
+// if (element is LocalVariableElement) {
+// LocalVariableElement variableElement = element as LocalVariableElement;
+// toolkitObjects = variableElement.toolkitObjects;
+// }
+// if (toolkitObjects != null) {
+// for (ToolkitObjectElement toolkitObject in toolkitObjects) {
+// if (isInstanceOf(toolkitObject, angularElementType)) {
+// return toolkitObject as AngularElement;
+// }
+// }
+// }
+// return null;
+// }
+// static void _assertHasAttributeSelector(AngularSelectorElement selector, String name) {
+// EngineTestCase.assertInstanceOf((obj) => obj is HasAttributeSelectorElementImpl, HasAttributeSelectorElementImpl, selector);
+// JUnitTestCase.assertEquals(name, (selector as HasAttributeSelectorElementImpl).name);
+// }
+// static void _assertIsTagSelector(AngularSelectorElement selector, String name) {
+// EngineTestCase.assertInstanceOf((obj) => obj is AngularTagSelectorElementImpl, AngularTagSelectorElementImpl, selector);
+// JUnitTestCase.assertEquals(name, (selector as AngularTagSelectorElementImpl).name);
+// }
+// static String _createAngularSource(List<String> lines) {
+// String source = "import 'angular.dart';\n";
+// source += EngineTestCase.createSource(lines);
+// return source;
+// }
+// void test_bad_notConstructorAnnotation() {
+// String mainContent = EngineTestCase.createSource([
+// "const MY_ANNOTATION = null;",
+// "@MY_ANNOTATION()",
+// "class MyFilter {",
+// "}"]);
+// resolveMainSource(mainContent);
+// // prepare AngularFilterElement
+// ClassElement classElement = mainUnitElement.getType("MyFilter");
+// AngularFormatterElement filter = getAngularElement(classElement, AngularFormatterElement);
+// JUnitTestCase.assertNull(filter);
+// }
+// void test_Decorator() {
+// String mainContent = _createAngularSource([
+// "@Decorator(selector: '[my-dir]',",
+// " map: const {",
+// " 'my-dir' : '=>myPropA',",
+// " '.' : '&myPropB',",
+// " })",
+// "class MyDirective {",
+// " set myPropA(value) {}",
+// " set myPropB(value) {}",
+// " @NgTwoWay('my-prop-c')",
+// " String myPropC;",
+// "}"]);
+// resolveMainSourceNoErrors(mainContent);
+// // prepare AngularDirectiveElement
+// ClassElement classElement = mainUnitElement.getType("MyDirective");
+// AngularDecoratorElement directive = getAngularElement(classElement, AngularDecoratorElement);
+// JUnitTestCase.assertNotNull(directive);
+// // verify
+// JUnitTestCase.assertEquals(null, directive.name);
+// JUnitTestCase.assertEquals(-1, directive.nameOffset);
+// _assertHasAttributeSelector(directive.selector, "my-dir");
+// // verify properties
+// List<AngularPropertyElement> properties = directive.properties;
+// EngineTestCase.assertLength(3, properties);
+// _assertProperty(properties[0], "my-dir", findMainOffset("my-dir' :"), AngularPropertyKind.ONE_WAY, "myPropA", findMainOffset("myPropA'"));
+// _assertProperty(properties[1], ".", findMainOffset(".' :"), AngularPropertyKind.CALLBACK, "myPropB", findMainOffset("myPropB'"));
+// _assertProperty(properties[2], "my-prop-c", findMainOffset("my-prop-c'"), AngularPropertyKind.TWO_WAY, "myPropC", -1);
+// }
+// void test_Decorator_bad_cannotParseSelector() {
+// String mainContent = _createAngularSource([
+// "@Decorator(selector: '~bad-selector',",
+// " map: const {",
+// " 'my-dir' : '=>myPropA',",
+// " '.' : '&myPropB',",
+// " })",
+// "class MyDirective {",
+// " set myPropA(value) {}",
+// " set myPropB(value) {}",
+// "}"]);
+// resolveMainSource(mainContent);
+// // has error
+// assertMainErrors([AngularCode.CANNOT_PARSE_SELECTOR]);
+// }
+// void test_Decorator_bad_missingSelector() {
+// String mainContent = _createAngularSource([
+// "@Decorator(/*selector: '[my-dir]',*/",
+// " map: const {",
+// " 'my-dir' : '=>myPropA',",
+// " '.' : '&myPropB',",
+// " })",
+// "class MyDirective {",
+// " set myPropA(value) {}",
+// " set myPropB(value) {}",
+// "}"]);
+// resolveMainSource(mainContent);
+// // has error
+// assertMainErrors([AngularCode.MISSING_SELECTOR]);
+// }
+// void test_Formatter() {
+// String mainContent = _createAngularSource([
+// "@Formatter(name: 'myFilter')",
+// "class MyFilter {",
+// " call(p1, p2) {}",
+// "}"]);
+// resolveMainSourceNoErrors(mainContent);
+// // prepare AngularFilterElement
+// ClassElement classElement = mainUnitElement.getType("MyFilter");
+// AngularFormatterElement filter = getAngularElement(classElement, AngularFormatterElement);
+// JUnitTestCase.assertNotNull(filter);
+// // verify
+// JUnitTestCase.assertEquals("myFilter", filter.name);
+// JUnitTestCase.assertEquals(AngularTest.findOffset(mainContent, "myFilter'"), filter.nameOffset);
+// }
+// void test_Formatter_missingName() {
+// String mainContent = _createAngularSource([
+// "@Formatter()",
+// "class MyFilter {",
+// " call(p1, p2) {}",
+// "}"]);
+// resolveMainSource(mainContent);
+// // has error
+// assertMainErrors([AngularCode.MISSING_NAME]);
+// // no filter
+// ClassElement classElement = mainUnitElement.getType("MyFilter");
+// AngularFormatterElement filter = getAngularElement(classElement, AngularFormatterElement);
+// JUnitTestCase.assertNull(filter);
+// }
+// void test_getElement_component_name() {
+// resolveMainSource(_createAngularSource([
+// "@Component(publishAs: 'ctrl', selector: 'myComp',",
+// " templateUrl: 'my_template.html', cssUrl: 'my_styles.css')",
+// "class MyComponent {}"]));
+// SimpleStringLiteral node = _findMainNode("ctrl'", SimpleStringLiteral);
+// int offset = node.offset;
+// // find AngularComponentElement
+// Element element = AngularCompilationUnitBuilder.getElement(node, offset);
+// EngineTestCase.assertInstanceOf((obj) => obj is AngularComponentElement, AngularComponentElement, element);
+// }
+// void test_getElement_component_property_fromFieldAnnotation() {
+// resolveMainSource(_createAngularSource([
+// "@Component(publishAs: 'ctrl', selector: 'myComp',",
+// " templateUrl: 'my_template.html', cssUrl: 'my_styles.css')",
+// "class MyComponent {",
+// " @NgOneWay('prop')",
+// " var field;",
+// "}"]));
+// // prepare node
+// SimpleStringLiteral node = _findMainNode("prop'", SimpleStringLiteral);
+// int offset = node.offset;
+// // prepare Element
+// Element element = AngularCompilationUnitBuilder.getElement(node, offset);
+// JUnitTestCase.assertNotNull(element);
+// // check AngularPropertyElement
+// AngularPropertyElement property = element as AngularPropertyElement;
+// JUnitTestCase.assertEquals("prop", property.name);
+// }
+// void test_getElement_component_property_fromMap() {
+// resolveMainSource(_createAngularSource([
+// "@Component(publishAs: 'ctrl', selector: 'myComp',",
+// " templateUrl: 'my_template.html', cssUrl: 'my_styles.css',",
+// " map: const {",
+// " 'prop' : '@field',",
+// " })",
+// "class MyComponent {",
+// " var field;",
+// "}"]));
+// // AngularPropertyElement
+// {
+// SimpleStringLiteral node = _findMainNode("prop'", SimpleStringLiteral);
+// int offset = node.offset;
+// // prepare Element
+// Element element = AngularCompilationUnitBuilder.getElement(node, offset);
+// JUnitTestCase.assertNotNull(element);
+// // check AngularPropertyElement
+// AngularPropertyElement property = element as AngularPropertyElement;
+// JUnitTestCase.assertEquals("prop", property.name);
+// }
+// // FieldElement
+// {
+// SimpleStringLiteral node = _findMainNode("@field'", SimpleStringLiteral);
+// int offset = node.offset;
+// // prepare Element
+// Element element = AngularCompilationUnitBuilder.getElement(node, offset);
+// JUnitTestCase.assertNotNull(element);
+// // check FieldElement
+// FieldElement field = element as FieldElement;
+// JUnitTestCase.assertEquals("field", field.name);
+// }
+// }
+// void test_getElement_component_selector() {
+// resolveMainSource(_createAngularSource([
+// "@Component(publishAs: 'ctrl', selector: 'myComp',",
+// " templateUrl: 'my_template.html', cssUrl: 'my_styles.css')",
+// "class MyComponent {}"]));
+// SimpleStringLiteral node = _findMainNode("myComp'", SimpleStringLiteral);
+// int offset = node.offset;
+// // find AngularSelectorElement
+// Element element = AngularCompilationUnitBuilder.getElement(node, offset);
+// EngineTestCase.assertInstanceOf((obj) => obj is AngularSelectorElement, AngularSelectorElement, element);
+// }
+// void test_getElement_controller_name() {
+// resolveMainSource(_createAngularSource([
+// "@Controller(publishAs: 'ctrl', selector: '[myApp]')",
+// "class MyController {",
+// "}"]));
+// SimpleStringLiteral node = _findMainNode("ctrl'", SimpleStringLiteral);
+// int offset = node.offset;
+// // find AngularControllerElement
+// Element element = AngularCompilationUnitBuilder.getElement(node, offset);
+// EngineTestCase.assertInstanceOf((obj) => obj is AngularControllerElement, AngularControllerElement, element);
+// }
+// void test_getElement_directive_property() {
+// resolveMainSource(_createAngularSource([
+// "@Decorator(selector: '[my-dir]',",
+// " map: const {",
+// " 'my-dir' : '=>field'",
+// " })",
+// "class MyDirective {",
+// " set field(value) {}",
+// "}"]));
+// // prepare node
+// SimpleStringLiteral node = _findMainNode("my-dir'", SimpleStringLiteral);
+// int offset = node.offset;
+// // prepare Element
+// Element element = AngularCompilationUnitBuilder.getElement(node, offset);
+// JUnitTestCase.assertNotNull(element);
+// // check AngularPropertyElement
+// AngularPropertyElement property = element as AngularPropertyElement;
+// JUnitTestCase.assertEquals("my-dir", property.name);
+// }
+// void test_getElement_directive_selector() {
+// resolveMainSource(_createAngularSource([
+// "@Decorator(selector: '[my-dir]')",
+// "class MyDirective {}"]));
+// SimpleStringLiteral node = _findMainNode("my-dir]'", SimpleStringLiteral);
+// int offset = node.offset;
+// // find AngularSelectorElement
+// Element element = AngularCompilationUnitBuilder.getElement(node, offset);
+// EngineTestCase.assertInstanceOf((obj) => obj is AngularSelectorElement, AngularSelectorElement, element);
+// }
+// void test_getElement_filter_name() {
+// resolveMainSource(_createAngularSource([
+// "@Formatter(name: 'myFilter')",
+// "class MyFilter {",
+// " call(p1, p2) {}",
+// "}"]));
+// SimpleStringLiteral node = _findMainNode("myFilter'", SimpleStringLiteral);
+// int offset = node.offset;
+// // find FilterElement
+// Element element = AngularCompilationUnitBuilder.getElement(node, offset);
+// EngineTestCase.assertInstanceOf((obj) => obj is AngularFormatterElement, AngularFormatterElement, element);
+// }
+// void test_getElement_noClassDeclaration() {
+// resolveMainSource("var foo = 'bar';");
+// SimpleStringLiteral node = _findMainNode("bar'", SimpleStringLiteral);
+// Element element = AngularCompilationUnitBuilder.getElement(node, 0);
+// JUnitTestCase.assertNull(element);
+// }
+// void test_getElement_noClassElement() {
+// resolveMainSource(EngineTestCase.createSource([
+// "class A {",
+// " const A(p);",
+// "}",
+// "",
+// "@A('bar')",
+// "class B {}"]));
+// SimpleStringLiteral node = _findMainNode("bar'", SimpleStringLiteral);
+// // reset B element
+// node.getAncestor((node) => node is ClassDeclaration).name.staticElement = null;
+// // class is not resolved - no element
+// Element element = AngularCompilationUnitBuilder.getElement(node, 0);
+// JUnitTestCase.assertNull(element);
+// }
+// void test_getElement_noNode() {
+// Element element = AngularCompilationUnitBuilder.getElement(null, 0);
+// JUnitTestCase.assertNull(element);
+// }
+// void test_getElement_notFound() {
+// resolveMainSource(EngineTestCase.createSource(["class MyComponent {", " var str = 'some string';", "}"]));
+// // prepare node
+// SimpleStringLiteral node = _findMainNode("some string'", SimpleStringLiteral);
+// int offset = node.offset;
+// // no Element
+// Element element = AngularCompilationUnitBuilder.getElement(node, offset);
+// JUnitTestCase.assertNull(element);
+// }
+// void test_getElement_SimpleStringLiteral_withToolkitElement() {
+// SimpleStringLiteral literal = AstFactory.string2("foo");
+// Element element = new AngularScopePropertyElementImpl("foo", 0, null);
+// literal.toolkitElement = element;
+// JUnitTestCase.assertSame(element, AngularCompilationUnitBuilder.getElement(literal, -1));
+// }
+// void test_NgComponent_bad_cannotParseSelector() {
+// contextHelper.addSource("/my_template.html", "");
+// contextHelper.addSource("/my_styles.css", "");
+// String mainContent = _createAngularSource([
+// "@Component(publishAs: 'ctrl', selector: '~myComp',",
+// " templateUrl: 'my_template.html', cssUrl: 'my_styles.css')",
+// "class MyComponent {",
+// "}"]);
+// resolveMainSource(mainContent);
+// // has error
+// assertMainErrors([AngularCode.CANNOT_PARSE_SELECTOR]);
+// }
+// void test_NgComponent_bad_missingSelector() {
+// contextHelper.addSource("/my_template.html", "");
+// contextHelper.addSource("/my_styles.css", "");
+// String mainContent = _createAngularSource([
+// "@Component(publishAs: 'ctrl', /*selector: 'myComp',*/",
+// " templateUrl: 'my_template.html', cssUrl: 'my_styles.css')",
+// "class MyComponent {",
+// "}"]);
+// resolveMainSource(mainContent);
+// // has error
+// assertMainErrors([AngularCode.MISSING_SELECTOR]);
+// }
+// /**
+// *
+// * https://code.google.com/p/dart/issues/detail?id=16346
+// */
+// void test_NgComponent_bad_notHtmlTemplate() {
+// contextHelper.addSource("/my_template", "");
+// contextHelper.addSource("/my_styles.css", "");
+// addMainSource(_createAngularSource([
+// "@NgComponent(publishAs: 'ctrl', selector: 'myComp',",
+// " templateUrl: 'my_template', cssUrl: 'my_styles.css')",
+// "class MyComponent {",
+// "}"]));
+// contextHelper.runTasks();
+// }
+// void test_NgComponent_bad_properties_invalidBinding() {
+// contextHelper.addSource("/my_template.html", "");
+// contextHelper.addSource("/my_styles.css", "");
+// String mainContent = _createAngularSource([
+// "@Component(publishAs: 'ctrl', selector: 'myComp',",
+// " templateUrl: 'my_template.html', cssUrl: 'my_styles.css',",
+// " map: const {'name' : '?field'})",
+// "class MyComponent {",
+// "}"]);
+// resolveMainSource(mainContent);
+// // has error
+// assertMainErrors([AngularCode.INVALID_PROPERTY_KIND]);
+// }
+// void test_NgComponent_bad_properties_nameNotStringLiteral() {
+// contextHelper.addSource("/my_template.html", "");
+// contextHelper.addSource("/my_styles.css", "");
+// String mainContent = _createAngularSource([
+// "@Component(publishAs: 'ctrl', selector: 'myComp',",
+// " templateUrl: 'my_template.html', cssUrl: 'my_styles.css',",
+// " map: const {null : 'field'})",
+// "class MyComponent {",
+// "}"]);
+// resolveMainSource(mainContent);
+// // has error
+// assertMainErrors([AngularCode.INVALID_PROPERTY_NAME]);
+// }
+// void test_NgComponent_bad_properties_noSuchField() {
+// contextHelper.addSource("/my_template.html", "");
+// contextHelper.addSource("/my_styles.css", "");
+// String mainContent = _createAngularSource([
+// "@Component(publishAs: 'ctrl', selector: 'myComp',",
+// " templateUrl: 'my_template.html', cssUrl: 'my_styles.css',",
+// " map: const {'name' : '=>field'})",
+// "class MyComponent {",
+// "}"]);
+// resolveMainSource(mainContent);
+// // has error
+// assertMainErrors([AngularCode.INVALID_PROPERTY_FIELD]);
+// }
+// void test_NgComponent_bad_properties_notMapLiteral() {
+// contextHelper.addSource("/my_template.html", "");
+// contextHelper.addSource("/my_styles.css", "");
+// String mainContent = _createAngularSource([
+// "@Component(publishAs: 'ctrl', selector: 'myComp',",
+// " templateUrl: 'my_template.html', cssUrl: 'my_styles.css',",
+// " map: null)",
+// "class MyComponent {",
+// "}"]);
+// resolveMainSource(mainContent);
+// // has error
+// assertMainErrors([AngularCode.INVALID_PROPERTY_MAP]);
+// }
+// void test_NgComponent_bad_properties_specNotStringLiteral() {
+// contextHelper.addSource("/my_template.html", "");
+// contextHelper.addSource("/my_styles.css", "");
+// String mainContent = _createAngularSource([
+// "@Component(publishAs: 'ctrl', selector: 'myComp',",
+// " templateUrl: 'my_template.html', cssUrl: 'my_styles.css',",
+// " map: const {'name' : null})",
+// "class MyComponent {",
+// "}"]);
+// resolveMainSource(mainContent);
+// // has error
+// assertMainErrors([AngularCode.INVALID_PROPERTY_SPEC]);
+// }
+// void test_NgComponent_no_cssUrl() {
+// contextHelper.addSource("/my_template.html", "");
+// contextHelper.addSource("/my_styles.css", "");
+// String mainContent = _createAngularSource([
+// "@Component(publishAs: 'ctrl', selector: 'myComp',",
+// " templateUrl: 'my_template.html'/*, cssUrl: 'my_styles.css'*/)",
+// "class MyComponent {",
+// "}"]);
+// resolveMainSource(mainContent);
+// // prepare AngularComponentElement
+// ClassElement classElement = mainUnitElement.getType("MyComponent");
+// AngularComponentElement component = getAngularElement(classElement, AngularComponentElement);
+// JUnitTestCase.assertNotNull(component);
+// // no CSS
+// JUnitTestCase.assertEquals(null, component.styleUri);
+// JUnitTestCase.assertEquals(-1, component.styleUriOffset);
+// }
+// void test_NgComponent_no_publishAs() {
+// contextHelper.addSource("/my_template.html", "");
+// contextHelper.addSource("/my_styles.css", "");
+// String mainContent = _createAngularSource([
+// "@Component(/*publishAs: 'ctrl',*/ selector: 'myComp',",
+// " templateUrl: 'my_template.html', cssUrl: 'my_styles.css')",
+// "class MyComponent {",
+// "}"]);
+// resolveMainSource(mainContent);
+// // prepare AngularComponentElement
+// ClassElement classElement = mainUnitElement.getType("MyComponent");
+// AngularComponentElement component = getAngularElement(classElement, AngularComponentElement);
+// JUnitTestCase.assertNotNull(component);
+// // no name
+// JUnitTestCase.assertEquals(null, component.name);
+// JUnitTestCase.assertEquals(-1, component.nameOffset);
+// }
+// void test_NgComponent_no_templateUrl() {
+// contextHelper.addSource("/my_template.html", "");
+// contextHelper.addSource("/my_styles.css", "");
+// String mainContent = _createAngularSource([
+// "@Component(publishAs: 'ctrl', selector: 'myComp',",
+// " /*templateUrl: 'my_template.html',*/ cssUrl: 'my_styles.css')",
+// "class MyComponent {",
+// "}"]);
+// resolveMainSource(mainContent);
+// // prepare AngularComponentElement
+// ClassElement classElement = mainUnitElement.getType("MyComponent");
+// AngularComponentElement component = getAngularElement(classElement, AngularComponentElement);
+// JUnitTestCase.assertNotNull(component);
+// // no template
+// JUnitTestCase.assertEquals(null, component.templateUri);
+// JUnitTestCase.assertEquals(null, component.templateSource);
+// JUnitTestCase.assertEquals(-1, component.templateUriOffset);
+// }
+// /**
+// *
+// * https://code.google.com/p/dart/issues/detail?id=19023
+// */
+// void test_NgComponent_notAngular() {
+// contextHelper.addSource("/my_template.html", "");
+// contextHelper.addSource("/my_styles.css", "");
+// String mainContent = EngineTestCase.createSource([
+// "class Component {",
+// " const Component(a, b);",
+// "}",
+// "",
+// "@Component('foo', 42)",
+// "class MyComponent {",
+// "}"]);
+// resolveMainSource(mainContent);
+// assertNoMainErrors();
+// }
+// void test_NgComponent_properties_fieldFromSuper() {
+// contextHelper.addSource("/my_template.html", "");
+// contextHelper.addSource("/my_styles.css", "");
+// resolveMainSourceNoErrors(_createAngularSource([
+// "class MySuper {",
+// " var myPropA;",
+// "}",
+// "",
+// "",
+// "",
+// "@Component(publishAs: 'ctrl', selector: 'myComp',",
+// " templateUrl: 'my_template.html', cssUrl: 'my_styles.css',",
+// " map: const {",
+// " 'prop-a' : '@myPropA'",
+// " })",
+// "class MyComponent extends MySuper {",
+// "}"]));
+// // prepare AngularComponentElement
+// ClassElement classElement = mainUnitElement.getType("MyComponent");
+// AngularComponentElement component = getAngularElement(classElement, AngularComponentElement);
+// JUnitTestCase.assertNotNull(component);
+// // verify
+// List<AngularPropertyElement> properties = component.properties;
+// EngineTestCase.assertLength(1, properties);
+// _assertProperty(properties[0], "prop-a", findMainOffset("prop-a' :"), AngularPropertyKind.ATTR, "myPropA", findMainOffset("myPropA'"));
+// }
+// void test_NgComponent_properties_fromFields() {
+// contextHelper.addSource("/my_template.html", "");
+// contextHelper.addSource("/my_styles.css", "");
+// resolveMainSourceNoErrors(_createAngularSource([
+// "@Component(publishAs: 'ctrl', selector: 'myComp',",
+// " templateUrl: 'my_template.html', cssUrl: 'my_styles.css')",
+// "class MyComponent {",
+// " @NgAttr('prop-a')",
+// " var myPropA;",
+// " @NgCallback('prop-b')",
+// " var myPropB;",
+// " @NgOneWay('prop-c')",
+// " var myPropC;",
+// " @NgOneWayOneTime('prop-d')",
+// " var myPropD;",
+// " @NgTwoWay('prop-e')",
+// " var myPropE;",
+// "}"]));
+// // prepare AngularComponentElement
+// ClassElement classElement = mainUnitElement.getType("MyComponent");
+// AngularComponentElement component = getAngularElement(classElement, AngularComponentElement);
+// JUnitTestCase.assertNotNull(component);
+// // verify
+// List<AngularPropertyElement> properties = component.properties;
+// EngineTestCase.assertLength(5, properties);
+// _assertProperty(properties[0], "prop-a", findMainOffset("prop-a')"), AngularPropertyKind.ATTR, "myPropA", -1);
+// _assertProperty(properties[1], "prop-b", findMainOffset("prop-b')"), AngularPropertyKind.CALLBACK, "myPropB", -1);
+// _assertProperty(properties[2], "prop-c", findMainOffset("prop-c')"), AngularPropertyKind.ONE_WAY, "myPropC", -1);
+// _assertProperty(properties[3], "prop-d", findMainOffset("prop-d')"), AngularPropertyKind.ONE_WAY_ONE_TIME, "myPropD", -1);
+// _assertProperty(properties[4], "prop-e", findMainOffset("prop-e')"), AngularPropertyKind.TWO_WAY, "myPropE", -1);
+// }
+// void test_NgComponent_properties_fromMap() {
+// contextHelper.addSource("/my_template.html", "");
+// contextHelper.addSource("/my_styles.css", "");
+// resolveMainSourceNoErrors(_createAngularSource([
+// "@Component(publishAs: 'ctrl', selector: 'myComp',",
+// " templateUrl: 'my_template.html', cssUrl: 'my_styles.css',",
+// " map: const {",
+// " 'prop-a' : '@myPropA',",
+// " 'prop-b' : '&myPropB',",
+// " 'prop-c' : '=>myPropC',",
+// " 'prop-d' : '=>!myPropD',",
+// " 'prop-e' : '<=>myPropE'",
+// " })",
+// "class MyComponent {",
+// " var myPropA;",
+// " var myPropB;",
+// " var myPropC;",
+// " var myPropD;",
+// " var myPropE;",
+// "}"]));
+// // prepare AngularComponentElement
+// ClassElement classElement = mainUnitElement.getType("MyComponent");
+// AngularComponentElement component = getAngularElement(classElement, AngularComponentElement);
+// JUnitTestCase.assertNotNull(component);
+// // verify
+// List<AngularPropertyElement> properties = component.properties;
+// EngineTestCase.assertLength(5, properties);
+// _assertProperty(properties[0], "prop-a", findMainOffset("prop-a' :"), AngularPropertyKind.ATTR, "myPropA", findMainOffset("myPropA'"));
+// _assertProperty(properties[1], "prop-b", findMainOffset("prop-b' :"), AngularPropertyKind.CALLBACK, "myPropB", findMainOffset("myPropB'"));
+// _assertProperty(properties[2], "prop-c", findMainOffset("prop-c' :"), AngularPropertyKind.ONE_WAY, "myPropC", findMainOffset("myPropC'"));
+// _assertProperty(properties[3], "prop-d", findMainOffset("prop-d' :"), AngularPropertyKind.ONE_WAY_ONE_TIME, "myPropD", findMainOffset("myPropD'"));
+// _assertProperty(properties[4], "prop-e", findMainOffset("prop-e' :"), AngularPropertyKind.TWO_WAY, "myPropE", findMainOffset("myPropE'"));
+// }
+// void test_NgComponent_properties_no() {
+// contextHelper.addSource("/my_template.html", "");
+// contextHelper.addSource("/my_styles.css", "");
+// String mainContent = _createAngularSource([
+// "@Component(publishAs: 'ctrl', selector: 'myComp',",
+// " templateUrl: 'my_template.html', cssUrl: 'my_styles.css')",
+// "class MyComponent {",
+// "}"]);
+// resolveMainSourceNoErrors(mainContent);
+// // prepare AngularComponentElement
+// ClassElement classElement = mainUnitElement.getType("MyComponent");
+// AngularComponentElement component = getAngularElement(classElement, AngularComponentElement);
+// JUnitTestCase.assertNotNull(component);
+// // verify
+// JUnitTestCase.assertEquals("ctrl", component.name);
+// JUnitTestCase.assertEquals(AngularTest.findOffset(mainContent, "ctrl'"), component.nameOffset);
+// _assertIsTagSelector(component.selector, "myComp");
+// JUnitTestCase.assertEquals("my_template.html", component.templateUri);
+// JUnitTestCase.assertEquals(AngularTest.findOffset(mainContent, "my_template.html'"), component.templateUriOffset);
+// JUnitTestCase.assertEquals("my_styles.css", component.styleUri);
+// JUnitTestCase.assertEquals(AngularTest.findOffset(mainContent, "my_styles.css'"), component.styleUriOffset);
+// EngineTestCase.assertLength(0, component.properties);
+// }
+// void test_NgComponent_scopeProperties() {
+// contextHelper.addSource("/my_template.html", "");
+// contextHelper.addSource("/my_styles.css", "");
+// String mainContent = _createAngularSource([
+// "@Component(publishAs: 'ctrl', selector: 'myComp',",
+// " templateUrl: 'my_template.html', cssUrl: 'my_styles.css')",
+// "class MyComponent {",
+// " MyComponent(Scope scope) {",
+// " scope.context['boolProp'] = true;",
+// " scope.context['intProp'] = 42;",
+// " scope.context['stringProp'] = 'foo';",
+// " // duplicate is ignored",
+// " scope.context['boolProp'] = true;",
+// " // LHS is not an IndexExpression",
+// " var v1;",
+// " v1 = 1;",
+// " // LHS is not a Scope access",
+// " var v2;",
+// " v2['name'] = 2;",
+// " }",
+// "}"]);
+// resolveMainSourceNoErrors(mainContent);
+// // prepare AngularComponentElement
+// ClassElement classElement = mainUnitElement.getType("MyComponent");
+// AngularComponentElement component = getAngularElement(classElement, AngularComponentElement);
+// JUnitTestCase.assertNotNull(component);
+// // verify
+// List<AngularScopePropertyElement> scopeProperties = component.scopeProperties;
+// EngineTestCase.assertLength(3, scopeProperties);
+// {
+// AngularScopePropertyElement property = scopeProperties[0];
+// JUnitTestCase.assertSame(property, findMainElement2("boolProp"));
+// JUnitTestCase.assertEquals("boolProp", property.name);
+// JUnitTestCase.assertEquals(AngularTest.findOffset(mainContent, "boolProp'"), property.nameOffset);
+// JUnitTestCase.assertEquals("bool", property.type.name);
+// }
+// {
+// AngularScopePropertyElement property = scopeProperties[1];
+// JUnitTestCase.assertSame(property, findMainElement2("intProp"));
+// JUnitTestCase.assertEquals("intProp", property.name);
+// JUnitTestCase.assertEquals(AngularTest.findOffset(mainContent, "intProp'"), property.nameOffset);
+// JUnitTestCase.assertEquals("int", property.type.name);
+// }
+// {
+// AngularScopePropertyElement property = scopeProperties[2];
+// JUnitTestCase.assertSame(property, findMainElement2("stringProp"));
+// JUnitTestCase.assertEquals("stringProp", property.name);
+// JUnitTestCase.assertEquals(AngularTest.findOffset(mainContent, "stringProp'"), property.nameOffset);
+// JUnitTestCase.assertEquals("String", property.type.name);
+// }
+// }
+// void test_NgController() {
+// String mainContent = _createAngularSource([
+// "@Controller(publishAs: 'ctrl', selector: '[myApp]')",
+// "class MyController {",
+// "}"]);
+// resolveMainSourceNoErrors(mainContent);
+// // prepare AngularControllerElement
+// ClassElement classElement = mainUnitElement.getType("MyController");
+// AngularControllerElement controller = getAngularElement(classElement, AngularControllerElement);
+// JUnitTestCase.assertNotNull(controller);
+// // verify
+// JUnitTestCase.assertEquals("ctrl", controller.name);
+// JUnitTestCase.assertEquals(AngularTest.findOffset(mainContent, "ctrl'"), controller.nameOffset);
+// _assertHasAttributeSelector(controller.selector, "myApp");
+// }
+// void test_NgController_cannotParseSelector() {
+// String mainContent = _createAngularSource([
+// "@Controller(publishAs: 'ctrl', selector: '~unknown')",
+// "class MyController {",
+// "}"]);
+// resolveMainSource(mainContent);
+// // has error
+// assertMainErrors([AngularCode.CANNOT_PARSE_SELECTOR]);
+// }
+// void test_NgController_missingPublishAs() {
+// String mainContent = _createAngularSource([
+// "@Controller(selector: '[myApp]')",
+// "class MyController {",
+// "}"]);
+// resolveMainSource(mainContent);
+// // has error
+// assertMainErrors([AngularCode.MISSING_PUBLISH_AS]);
+// }
+// void test_NgController_missingSelector() {
+// String mainContent = _createAngularSource([
+// "@Controller(publishAs: 'ctrl')",
+// "class MyController {",
+// "}"]);
+// resolveMainSource(mainContent);
+// // has error
+// assertMainErrors([AngularCode.MISSING_SELECTOR]);
+// }
+// void test_NgController_noAnnotationArguments() {
+// String mainContent = _createAngularSource(["@NgController", "class MyController {", "}"]);
+// resolveMainSource(mainContent);
+// }
+// void test_parseSelector_hasAttribute() {
+// AngularSelectorElement selector = AngularCompilationUnitBuilder.parseSelector(42, "[name]");
+// _assertHasAttributeSelector(selector, "name");
+// JUnitTestCase.assertEquals(42 + 1, selector.nameOffset);
+// }
+// void test_parseSelector_hasClass() {
+// AngularSelectorElement selector = AngularCompilationUnitBuilder.parseSelector(42, ".my-class");
+// AngularHasClassSelectorElementImpl classSelector = selector as AngularHasClassSelectorElementImpl;
+// JUnitTestCase.assertEquals("my-class", classSelector.name);
+// JUnitTestCase.assertEquals(".my-class", classSelector.toString());
+// JUnitTestCase.assertEquals(42 + 1, selector.nameOffset);
+// // test apply()
+// {
+// XmlTagNode node = HtmlFactory.tagNode("div", [HtmlFactory.attribute("class", "one two")]);
+// JUnitTestCase.assertFalse(classSelector.apply(node));
+// }
+// {
+// XmlTagNode node = HtmlFactory.tagNode("div", [HtmlFactory.attribute("class", "one my-class two")]);
+// JUnitTestCase.assertTrue(classSelector.apply(node));
+// }
+// }
+// void test_parseSelector_isTag() {
+// AngularSelectorElement selector = AngularCompilationUnitBuilder.parseSelector(42, "name");
+// _assertIsTagSelector(selector, "name");
+// JUnitTestCase.assertEquals(42, selector.nameOffset);
+// }
+// void test_parseSelector_isTag_hasAttribute() {
+// AngularSelectorElement selector = AngularCompilationUnitBuilder.parseSelector(42, "tag[attr]");
+// EngineTestCase.assertInstanceOf((obj) => obj is IsTagHasAttributeSelectorElementImpl, IsTagHasAttributeSelectorElementImpl, selector);
+// JUnitTestCase.assertEquals("tag[attr]", selector.name);
+// JUnitTestCase.assertEquals(-1, selector.nameOffset);
+// JUnitTestCase.assertEquals("tag", (selector as IsTagHasAttributeSelectorElementImpl).tagName);
+// JUnitTestCase.assertEquals("attr", (selector as IsTagHasAttributeSelectorElementImpl).attributeName);
+// }
+// void test_parseSelector_unknown() {
+// AngularSelectorElement selector = AngularCompilationUnitBuilder.parseSelector(0, "~unknown");
+// JUnitTestCase.assertNull(selector);
+// }
+// void test_view() {
+// contextHelper.addSource("/wrong.html", "");
+// contextHelper.addSource("/my_templateA.html", "");
+// contextHelper.addSource("/my_templateB.html", "");
+// String mainContent = _createAngularSource([
+// "class MyRouteInitializer {",
+// " init(ViewFactory view, foo) {",
+// " foo.view('wrong.html'); // has target",
+// " foo(); // less than one argument",
+// " foo('wrong.html', 'bar'); // more than one argument",
+// " foo('wrong' + '.html'); // not literal",
+// " foo('wrong.html'); // not ViewFactory",
+// " view('my_templateA.html');",
+// " view('my_templateB.html');",
+// " }",
+// "}"]);
+// resolveMainSourceNoErrors(mainContent);
+// // prepare AngularViewElement(s)
+// List<AngularViewElement> views = mainUnitElement.angularViews;
+// EngineTestCase.assertLength(2, views);
+// {
+// AngularViewElement view = views[0];
+// JUnitTestCase.assertEquals("my_templateA.html", view.templateUri);
+// JUnitTestCase.assertEquals(null, view.name);
+// JUnitTestCase.assertEquals(-1, view.nameOffset);
+// JUnitTestCase.assertEquals(AngularTest.findOffset(mainContent, "my_templateA.html'"), view.templateUriOffset);
+// }
+// {
+// AngularViewElement view = views[1];
+// JUnitTestCase.assertEquals("my_templateB.html", view.templateUri);
+// JUnitTestCase.assertEquals(null, view.name);
+// JUnitTestCase.assertEquals(-1, view.nameOffset);
+// JUnitTestCase.assertEquals(AngularTest.findOffset(mainContent, "my_templateB.html'"), view.templateUriOffset);
+// }
+// }
+// void _assertProperty(AngularPropertyElement property, String expectedName, int expectedNameOffset, AngularPropertyKind expectedKind, String expectedFieldName, int expectedFieldOffset) {
+// JUnitTestCase.assertEquals(expectedName, property.name);
+// JUnitTestCase.assertEquals(expectedNameOffset, property.nameOffset);
+// JUnitTestCase.assertSame(expectedKind, property.propertyKind);
+// JUnitTestCase.assertEquals(expectedFieldName, property.field.name);
+// JUnitTestCase.assertEquals(expectedFieldOffset, property.fieldNameOffset);
+// }
+// /**
+// * Find [AstNode] of the given type in [mainUnit].
+// */
+// AstNode _findMainNode(String search, Type clazz) => EngineTestCase.findNode(mainUnit, mainContent, search, predicate);
+// static dartSuite() {
+// _ut.group('AngularCompilationUnitBuilderTest', () {
+// _ut.test('test_Decorator', () {
+// final __test = new AngularCompilationUnitBuilderTest();
+// runJUnitTest(__test, __test.test_Decorator);
+// });
+// _ut.test('test_Decorator_bad_cannotParseSelector', () {
+// final __test = new AngularCompilationUnitBuilderTest();
+// runJUnitTest(__test, __test.test_Decorator_bad_cannotParseSelector);
+// });
+// _ut.test('test_Decorator_bad_missingSelector', () {
+// final __test = new AngularCompilationUnitBuilderTest();
+// runJUnitTest(__test, __test.test_Decorator_bad_missingSelector);
+// });
+// _ut.test('test_Formatter', () {
+// final __test = new AngularCompilationUnitBuilderTest();
+// runJUnitTest(__test, __test.test_Formatter);
+// });
+// _ut.test('test_Formatter_missingName', () {
+// final __test = new AngularCompilationUnitBuilderTest();
+// runJUnitTest(__test, __test.test_Formatter_missingName);
+// });
+// _ut.test('test_NgComponent_bad_cannotParseSelector', () {
+// final __test = new AngularCompilationUnitBuilderTest();
+// runJUnitTest(__test, __test.test_NgComponent_bad_cannotParseSelector);
+// });
+// _ut.test('test_NgComponent_bad_missingSelector', () {
+// final __test = new AngularCompilationUnitBuilderTest();
+// runJUnitTest(__test, __test.test_NgComponent_bad_missingSelector);
+// });
+// _ut.test('test_NgComponent_bad_notHtmlTemplate', () {
+// final __test = new AngularCompilationUnitBuilderTest();
+// runJUnitTest(__test, __test.test_NgComponent_bad_notHtmlTemplate);
+// });
+// _ut.test('test_NgComponent_bad_properties_invalidBinding', () {
+// final __test = new AngularCompilationUnitBuilderTest();
+// runJUnitTest(__test, __test.test_NgComponent_bad_properties_invalidBinding);
+// });
+// _ut.test('test_NgComponent_bad_properties_nameNotStringLiteral', () {
+// final __test = new AngularCompilationUnitBuilderTest();
+// runJUnitTest(__test, __test.test_NgComponent_bad_properties_nameNotStringLiteral);
+// });
+// _ut.test('test_NgComponent_bad_properties_noSuchField', () {
+// final __test = new AngularCompilationUnitBuilderTest();
+// runJUnitTest(__test, __test.test_NgComponent_bad_properties_noSuchField);
+// });
+// _ut.test('test_NgComponent_bad_properties_notMapLiteral', () {
+// final __test = new AngularCompilationUnitBuilderTest();
+// runJUnitTest(__test, __test.test_NgComponent_bad_properties_notMapLiteral);
+// });
+// _ut.test('test_NgComponent_bad_properties_specNotStringLiteral', () {
+// final __test = new AngularCompilationUnitBuilderTest();
+// runJUnitTest(__test, __test.test_NgComponent_bad_properties_specNotStringLiteral);
+// });
+// _ut.test('test_NgComponent_no_cssUrl', () {
+// final __test = new AngularCompilationUnitBuilderTest();
+// runJUnitTest(__test, __test.test_NgComponent_no_cssUrl);
+// });
+// _ut.test('test_NgComponent_no_publishAs', () {
+// final __test = new AngularCompilationUnitBuilderTest();
+// runJUnitTest(__test, __test.test_NgComponent_no_publishAs);
+// });
+// _ut.test('test_NgComponent_no_templateUrl', () {
+// final __test = new AngularCompilationUnitBuilderTest();
+// runJUnitTest(__test, __test.test_NgComponent_no_templateUrl);
+// });
+// _ut.test('test_NgComponent_notAngular', () {
+// final __test = new AngularCompilationUnitBuilderTest();
+// runJUnitTest(__test, __test.test_NgComponent_notAngular);
+// });
+// _ut.test('test_NgComponent_properties_fieldFromSuper', () {
+// final __test = new AngularCompilationUnitBuilderTest();
+// runJUnitTest(__test, __test.test_NgComponent_properties_fieldFromSuper);
+// });
+// _ut.test('test_NgComponent_properties_fromFields', () {
+// final __test = new AngularCompilationUnitBuilderTest();
+// runJUnitTest(__test, __test.test_NgComponent_properties_fromFields);
+// });
+// _ut.test('test_NgComponent_properties_fromMap', () {
+// final __test = new AngularCompilationUnitBuilderTest();
+// runJUnitTest(__test, __test.test_NgComponent_properties_fromMap);
+// });
+// _ut.test('test_NgComponent_properties_no', () {
+// final __test = new AngularCompilationUnitBuilderTest();
+// runJUnitTest(__test, __test.test_NgComponent_properties_no);
+// });
+// _ut.test('test_NgComponent_scopeProperties', () {
+// final __test = new AngularCompilationUnitBuilderTest();
+// runJUnitTest(__test, __test.test_NgComponent_scopeProperties);
+// });
+// _ut.test('test_NgController', () {
+// final __test = new AngularCompilationUnitBuilderTest();
+// runJUnitTest(__test, __test.test_NgController);
+// });
+// _ut.test('test_NgController_cannotParseSelector', () {
+// final __test = new AngularCompilationUnitBuilderTest();
+// runJUnitTest(__test, __test.test_NgController_cannotParseSelector);
+// });
+// _ut.test('test_NgController_missingPublishAs', () {
+// final __test = new AngularCompilationUnitBuilderTest();
+// runJUnitTest(__test, __test.test_NgController_missingPublishAs);
+// });
+// _ut.test('test_NgController_missingSelector', () {
+// final __test = new AngularCompilationUnitBuilderTest();
+// runJUnitTest(__test, __test.test_NgController_missingSelector);
+// });
+// _ut.test('test_NgController_noAnnotationArguments', () {
+// final __test = new AngularCompilationUnitBuilderTest();
+// runJUnitTest(__test, __test.test_NgController_noAnnotationArguments);
+// });
+// _ut.test('test_bad_notConstructorAnnotation', () {
+// final __test = new AngularCompilationUnitBuilderTest();
+// runJUnitTest(__test, __test.test_bad_notConstructorAnnotation);
+// });
+// _ut.test('test_getElement_SimpleStringLiteral_withToolkitElement', () {
+// final __test = new AngularCompilationUnitBuilderTest();
+// runJUnitTest(__test, __test.test_getElement_SimpleStringLiteral_withToolkitElement);
+// });
+// _ut.test('test_getElement_component_name', () {
+// final __test = new AngularCompilationUnitBuilderTest();
+// runJUnitTest(__test, __test.test_getElement_component_name);
+// });
+// _ut.test('test_getElement_component_property_fromFieldAnnotation', () {
+// final __test = new AngularCompilationUnitBuilderTest();
+// runJUnitTest(__test, __test.test_getElement_component_property_fromFieldAnnotation);
+// });
+// _ut.test('test_getElement_component_property_fromMap', () {
+// final __test = new AngularCompilationUnitBuilderTest();
+// runJUnitTest(__test, __test.test_getElement_component_property_fromMap);
+// });
+// _ut.test('test_getElement_component_selector', () {
+// final __test = new AngularCompilationUnitBuilderTest();
+// runJUnitTest(__test, __test.test_getElement_component_selector);
+// });
+// _ut.test('test_getElement_controller_name', () {
+// final __test = new AngularCompilationUnitBuilderTest();
+// runJUnitTest(__test, __test.test_getElement_controller_name);
+// });
+// _ut.test('test_getElement_directive_property', () {
+// final __test = new AngularCompilationUnitBuilderTest();
+// runJUnitTest(__test, __test.test_getElement_directive_property);
+// });
+// _ut.test('test_getElement_directive_selector', () {
+// final __test = new AngularCompilationUnitBuilderTest();
+// runJUnitTest(__test, __test.test_getElement_directive_selector);
+// });
+// _ut.test('test_getElement_filter_name', () {
+// final __test = new AngularCompilationUnitBuilderTest();
+// runJUnitTest(__test, __test.test_getElement_filter_name);
+// });
+// _ut.test('test_getElement_noClassDeclaration', () {
+// final __test = new AngularCompilationUnitBuilderTest();
+// runJUnitTest(__test, __test.test_getElement_noClassDeclaration);
+// });
+// _ut.test('test_getElement_noClassElement', () {
+// final __test = new AngularCompilationUnitBuilderTest();
+// runJUnitTest(__test, __test.test_getElement_noClassElement);
+// });
+// _ut.test('test_getElement_noNode', () {
+// final __test = new AngularCompilationUnitBuilderTest();
+// runJUnitTest(__test, __test.test_getElement_noNode);
+// });
+// _ut.test('test_getElement_notFound', () {
+// final __test = new AngularCompilationUnitBuilderTest();
+// runJUnitTest(__test, __test.test_getElement_notFound);
+// });
+// _ut.test('test_parseSelector_hasAttribute', () {
+// final __test = new AngularCompilationUnitBuilderTest();
+// runJUnitTest(__test, __test.test_parseSelector_hasAttribute);
+// });
+// _ut.test('test_parseSelector_hasClass', () {
+// final __test = new AngularCompilationUnitBuilderTest();
+// runJUnitTest(__test, __test.test_parseSelector_hasClass);
+// });
+// _ut.test('test_parseSelector_isTag', () {
+// final __test = new AngularCompilationUnitBuilderTest();
+// runJUnitTest(__test, __test.test_parseSelector_isTag);
+// });
+// _ut.test('test_parseSelector_isTag_hasAttribute', () {
+// final __test = new AngularCompilationUnitBuilderTest();
+// runJUnitTest(__test, __test.test_parseSelector_isTag_hasAttribute);
+// });
+// _ut.test('test_parseSelector_unknown', () {
+// final __test = new AngularCompilationUnitBuilderTest();
+// runJUnitTest(__test, __test.test_parseSelector_unknown);
+// });
+// _ut.test('test_view', () {
+// final __test = new AngularCompilationUnitBuilderTest();
+// runJUnitTest(__test, __test.test_view);
+// });
+// });
+// }
+// }
+// class AngularDartIndexContributorTest extends AngularTest {
+// IndexStore _store = mock(IndexStore);
+// AngularDartIndexContributor _index = new AngularDartIndexContributor(_store);
+// void test_component_propertyField() {
+// contextHelper.addSource("/my_template.html", "");
+// contextHelper.addSource("/my_styles.css", "");
+// resolveMainSourceNoErrors(EngineTestCase.createSource([
+// "",
+// "import 'angular.dart';",
+// "",
+// "@Component(",
+// " templateUrl: 'my_template.html', cssUrl: 'my_styles.css',",
+// " publishAs: 'ctrl',",
+// " selector: 'myComponent', // selector",
+// " map: const {",
+// " 'propAttr' : '@field', // attr",
+// " 'propOneWay' : '=>field', // one-way",
+// " 'propTwoWay' : '<=>field', // two-way",
+// " })",
+// "class MyComponent {",
+// " @NgOneWay('annProp')",
+// " var field;",
+// "}",
+// "",
+// "main() {",
+// " var module = new Module();",
+// " module.type(MyComponent);",
+// " ngBootstrap(module: module);",
+// "}"]));
+// FieldElement field = findMainElement2("field");
+// PropertyAccessorElement getter = field.getter;
+// PropertyAccessorElement setter = field.setter;
+// // index
+// mainUnit.accept(_index);
+// List<RecordedRelation> relations = captureRecordedRelations();
+// // @field
+// {
+// ExpectedLocation location = new ExpectedLocation(findMainElement2("propAttr"), findMainOffset("field', // attr"), "field");
+// assertNoRecordedRelation(relations, getter, IndexConstants.IS_REFERENCED_BY_QUALIFIED, location);
+// assertRecordedRelation(relations, setter, IndexConstants.IS_REFERENCED_BY_QUALIFIED, location);
+// }
+// // =>field
+// {
+// ExpectedLocation location = new ExpectedLocation(findMainElement2("propOneWay"), findMainOffset("field', // one-way"), "field");
+// assertNoRecordedRelation(relations, getter, IndexConstants.IS_REFERENCED_BY_QUALIFIED, location);
+// assertRecordedRelation(relations, setter, IndexConstants.IS_REFERENCED_BY_QUALIFIED, location);
+// }
+// // <=>field
+// {
+// ExpectedLocation location = new ExpectedLocation(findMainElement2("propTwoWay"), findMainOffset("field', // two-way"), "field");
+// assertRecordedRelation(relations, getter, IndexConstants.IS_REFERENCED_BY_QUALIFIED, location);
+// assertRecordedRelation(relations, setter, IndexConstants.IS_REFERENCED_BY_QUALIFIED, location);
+// }
+// // @NgOneWay('annProp') is ignore - no explicit field reference
+// {
+// ExpectedLocation location = new ExpectedLocation(findMainElement2("annProp"), -1, "field");
+// assertNoRecordedRelation(relations, setter, IndexConstants.IS_REFERENCED_BY_QUALIFIED, location);
+// }
+// }
+// void test_directive_propertyField() {
+// resolveMainSourceNoErrors(EngineTestCase.createSource([
+// "",
+// "import 'angular.dart';",
+// "",
+// "@Decorator(",
+// " selector: '[my-directive]',",
+// " map: const {",
+// " 'propAttr' : '@field', // attr",
+// " 'propOneWay' : '=>field', // one-way",
+// " 'propTwoWay' : '<=>field', // two-way",
+// " })",
+// "class MyDirective {",
+// " var field;",
+// "}",
+// "",
+// "main() {",
+// " var module = new Module();",
+// " module.type(MyDirective);",
+// " ngBootstrap(module: module);",
+// "}"]));
+// FieldElement field = findMainElement2("field");
+// PropertyAccessorElement getter = field.getter;
+// PropertyAccessorElement setter = field.setter;
+// // index
+// mainUnit.accept(_index);
+// List<RecordedRelation> relations = captureRecordedRelations();
+// // @field
+// {
+// ExpectedLocation location = new ExpectedLocation(findMainElement2("propAttr"), findMainOffset("field', // attr"), "field");
+// assertNoRecordedRelation(relations, getter, IndexConstants.IS_REFERENCED_BY_QUALIFIED, location);
+// assertRecordedRelation(relations, setter, IndexConstants.IS_REFERENCED_BY_QUALIFIED, location);
+// }
+// // =>field
+// {
+// ExpectedLocation location = new ExpectedLocation(findMainElement2("propOneWay"), findMainOffset("field', // one-way"), "field");
+// assertNoRecordedRelation(relations, getter, IndexConstants.IS_REFERENCED_BY_QUALIFIED, location);
+// assertRecordedRelation(relations, setter, IndexConstants.IS_REFERENCED_BY_QUALIFIED, location);
+// }
+// // <=>field
+// {
+// ExpectedLocation location = new ExpectedLocation(findMainElement2("propTwoWay"), findMainOffset("field', // two-way"), "field");
+// assertRecordedRelation(relations, getter, IndexConstants.IS_REFERENCED_BY_QUALIFIED, location);
+// assertRecordedRelation(relations, setter, IndexConstants.IS_REFERENCED_BY_QUALIFIED, location);
+// }
+// }
+// List<RecordedRelation> captureRecordedRelations() => captureRelations(_store);
+// static dartSuite() {
+// _ut.group('AngularDartIndexContributorTest', () {
+// _ut.test('test_component_propertyField', () {
+// final __test = new AngularDartIndexContributorTest();
+// runJUnitTest(__test, __test.test_component_propertyField);
+// });
+// _ut.test('test_directive_propertyField', () {
+// final __test = new AngularDartIndexContributorTest();
+// runJUnitTest(__test, __test.test_directive_propertyField);
+// });
+// });
+// }
+// }
+// class AngularHtmlIndexContributorTest extends AngularTest {
+// IndexStore _store = mock(IndexStore);
+// AngularHtmlIndexContributor _index = new AngularHtmlIndexContributor(_store);
+// void test_expression_inAttribute() {
+// addMyController();
+// resolveIndex2(AngularTest.createHtmlWithMyController([" <button title='{{ctrl.field}}'>Remove</button>", ""]));
+// // prepare elements
+// Element fieldGetter = (findMainElement2("field") as FieldElement).getter;
+// // index
+// indexUnit.accept(_index);
+// // verify
+// List<RecordedRelation> relations = captureRecordedRelations();
+// assertRecordedRelation(relations, fieldGetter, IndexConstants.IS_REFERENCED_BY_QUALIFIED, new ExpectedLocation(indexHtmlUnit, findOffset2("field}}"), "field"));
+// }
+// void test_expression_inContent() {
+// addMyController();
+// resolveIndex2(AngularTest.createHtmlWithMyController([" {{ctrl.field}}", ""]));
+// // prepare elements
+// Element fieldGetter = (findMainElement2("field") as FieldElement).getter;
+// // index
+// indexUnit.accept(_index);
+// // verify
+// List<RecordedRelation> relations = captureRecordedRelations();
+// assertRecordedRelation(relations, fieldGetter, IndexConstants.IS_REFERENCED_BY_QUALIFIED, new ExpectedLocation(indexHtmlUnit, findOffset2("field}}"), "field"));
+// }
+// void test_expression_ngRepeat() {
+// addMyController();
+// resolveIndex2(AngularTest.createHtmlWithMyController([
+// " <li ng-repeat='name in ctrl.names'>",
+// " {{name}}",
+// " </li>",
+// ""]));
+// // prepare elements
+// Element namesElement = (findMainElement2("names") as FieldElement).getter;
+// Element nameElement = findIndexElement("name");
+// // index
+// indexUnit.accept(_index);
+// // verify
+// List<RecordedRelation> relations = captureRecordedRelations();
+// assertRecordedRelation(relations, namesElement, IndexConstants.IS_REFERENCED_BY_QUALIFIED, new ExpectedLocation(indexHtmlUnit, findOffset2("names'>"), "names"));
+// assertRecordedRelation(relations, nameElement, IndexConstants.IS_READ_BY, new ExpectedLocation(indexHtmlUnit, findOffset2("name}}"), "name"));
+// }
+// void test_Formatter_use() {
+// resolveMainSource(EngineTestCase.createSource([
+// "",
+// "import 'angular.dart';",
+// "",
+// "@Formatter(name: 'myFormatter')",
+// "class MyFormatter {",
+// "}",
+// "",
+// "class Item {",
+// " String name;",
+// " bool done;",
+// "}",
+// "",
+// "@Controller(",
+// " selector: '[my-controller]',",
+// " publishAs: 'ctrl')",
+// "class MyController {",
+// " List<Item> items;",
+// "}"]));
+// resolveIndex2(AngularTest.createHtmlWithMyController([
+// " <li ng-repeat=\"item in ctrl.items | myFormatter:true\">",
+// " </li>",
+// ""]));
+// // prepare elements
+// AngularFormatterElement filterElement = findMainElement2("myFormatter");
+// // index
+// indexUnit.accept(_index);
+// // verify
+// List<RecordedRelation> relations = captureRecordedRelations();
+// assertRecordedRelation(relations, filterElement, IndexConstants.ANGULAR_REFERENCE, new ExpectedLocation(indexHtmlUnit, findOffset2("myFormatter:true"), "myFormatter"));
+// }
+// void test_NgComponent_templateFile() {
+// addMainSource(EngineTestCase.createSource([
+// "",
+// "import 'angular.dart';",
+// "",
+// "@Component(",
+// " templateUrl: 'my_template.html', cssUrl: 'my_styles.css',",
+// " publishAs: 'ctrl',",
+// " selector: 'myComponent')",
+// "class MyComponent {",
+// " String field;",
+// "}"]));
+// contextHelper.addSource("/entry-point.html", AngularTest.createHtmlWithAngular([]));
+// addIndexSource2("/my_template.html", EngineTestCase.createSource([" <div>", " {{ctrl.field}}", " </div>"]));
+// contextHelper.addSource("/my_styles.css", "");
+// contextHelper.runTasks();
+// resolveMain();
+// resolveIndex();
+// // prepare elements
+// AngularComponentElement componentElement = findMainElement2("ctrl");
+// FieldElement field = findMainElement2("field");
+// PropertyAccessorElement fieldGetter = field.getter;
+// // index
+// indexUnit.accept(_index);
+// // verify
+// List<RecordedRelation> relations = captureRecordedRelations();
+// assertRecordedRelation(relations, componentElement, IndexConstants.ANGULAR_REFERENCE, new ExpectedLocation(indexHtmlUnit, findOffset2("ctrl.field"), "ctrl"));
+// assertRecordedRelation(relations, fieldGetter, IndexConstants.IS_REFERENCED_BY_QUALIFIED, new ExpectedLocation(indexHtmlUnit, findOffset2("field}}"), "field"));
+// }
+// void test_NgComponent_use() {
+// resolveMainSource(EngineTestCase.createSource([
+// "",
+// "import 'angular.dart';",
+// "",
+// "@Component(",
+// " templateUrl: 'my_template.html', cssUrl: 'my_styles.css',",
+// " publishAs: 'ctrl',",
+// " selector: 'myComponent', // selector",
+// " map: const {'attrA' : '=>setA', 'attrB' : '@setB'})",
+// "class MyComponent {",
+// " set setA(value) {}",
+// " set setB(value) {}",
+// "}"]));
+// resolveIndex2(AngularTest.createHtmlWithMyController([
+// "<myComponent attrA='null' attrB='str'/>",
+// "<myComponent>abcd</myComponent> with closing tag"]));
+// // prepare elements
+// AngularSelectorElement selectorElement = findMainElement2("myComponent");
+// AngularPropertyElement attrA = findMainElement2("attrA");
+// AngularPropertyElement attrB = findMainElement2("attrB");
+// // index
+// indexUnit.accept(_index);
+// // verify
+// List<RecordedRelation> relations = captureRecordedRelations();
+// assertRecordedRelation(relations, selectorElement, IndexConstants.ANGULAR_REFERENCE, new ExpectedLocation(indexHtmlUnit, findOffset2("myComponent attrA='null"), "myComponent"));
+// assertRecordedRelation(relations, attrA, IndexConstants.ANGULAR_REFERENCE, new ExpectedLocation(indexHtmlUnit, findOffset2("attrA='null"), "attrA"));
+// assertRecordedRelation(relations, attrB, IndexConstants.ANGULAR_REFERENCE, new ExpectedLocation(indexHtmlUnit, findOffset2("attrB='str"), "attrB"));
+// // with closing tag
+// assertRecordedRelation(relations, selectorElement, IndexConstants.ANGULAR_REFERENCE, new ExpectedLocation(indexHtmlUnit, findOffset2("myComponent>abcd"), "myComponent"));
+// assertRecordedRelation(relations, selectorElement, IndexConstants.ANGULAR_CLOSING_TAG_REFERENCE, new ExpectedLocation(indexHtmlUnit, findOffset2("myComponent> with closing tag"), "myComponent"));
+// }
+// void test_NgComponent_use_tagHasAttribute() {
+// resolveMainSource(EngineTestCase.createSource([
+// "",
+// "import 'angular.dart';",
+// "",
+// "@Component(",
+// " templateUrl: 'my_template.html', cssUrl: 'my_styles.css',",
+// " publishAs: 'ctrl',",
+// " selector: 'myComponent[attr]', // selector",
+// " map: const {'attr' : '=>setAttr'})",
+// "class MyComponent {",
+// " set setAttr(value) {}",
+// "}"]));
+// resolveIndex2(AngularTest.createHtmlWithMyController(["<myComponent attr='null'/>"]));
+// // prepare elements
+// AngularSelectorElement selectorElement = findMainElement2("myComponent[attr]");
+// AngularPropertyElement attr = findMainElement2("attr");
+// JUnitTestCase.assertNotNull(selectorElement);
+// JUnitTestCase.assertNotNull(attr);
+// // index
+// indexUnit.accept(_index);
+// // verify
+// List<RecordedRelation> relations = captureRecordedRelations();
+// assertRecordedRelation(relations, selectorElement, IndexConstants.ANGULAR_REFERENCE, new ExpectedLocation(indexHtmlUnit, findOffset2("myComponent attr='null"), "myComponent"));
+// assertRecordedRelation(relations, attr, IndexConstants.ANGULAR_REFERENCE, new ExpectedLocation(indexHtmlUnit, findOffset2("attr='null"), "attr"));
+// }
+// List<RecordedRelation> captureRecordedRelations() => captureRelations(_store);
+// static dartSuite() {
+// _ut.group('AngularHtmlIndexContributorTest', () {
+// _ut.test('test_Formatter_use', () {
+// final __test = new AngularHtmlIndexContributorTest();
+// runJUnitTest(__test, __test.test_Formatter_use);
+// });
+// _ut.test('test_NgComponent_templateFile', () {
+// final __test = new AngularHtmlIndexContributorTest();
+// runJUnitTest(__test, __test.test_NgComponent_templateFile);
+// });
+// _ut.test('test_NgComponent_use', () {
+// final __test = new AngularHtmlIndexContributorTest();
+// runJUnitTest(__test, __test.test_NgComponent_use);
+// });
+// _ut.test('test_NgComponent_use_tagHasAttribute', () {
+// final __test = new AngularHtmlIndexContributorTest();
+// runJUnitTest(__test, __test.test_NgComponent_use_tagHasAttribute);
+// });
+// _ut.test('test_expression_inAttribute', () {
+// final __test = new AngularHtmlIndexContributorTest();
+// runJUnitTest(__test, __test.test_expression_inAttribute);
+// });
+// _ut.test('test_expression_inContent', () {
+// final __test = new AngularHtmlIndexContributorTest();
+// runJUnitTest(__test, __test.test_expression_inContent);
+// });
+// _ut.test('test_expression_ngRepeat', () {
+// final __test = new AngularHtmlIndexContributorTest();
+// runJUnitTest(__test, __test.test_expression_ngRepeat);
+// });
+// });
+// }
+// }
+// class AngularHtmlUnitResolverTest extends AngularTest {
+// void test_analysisContext_changeDart_invalidateApplication() {
+// addMainSource(EngineTestCase.createSource([
+// "",
+// "import 'angular.dart';",
+// "",
+// "@Component(",
+// " templateUrl: 'my_template.html', cssUrl: 'my_styles.css',",
+// " publishAs: 'ctrl',",
+// " selector: 'myComponent')",
+// "class MyComponent {",
+// "}"]));
+// contextHelper.addSource("/entry-point.html", AngularTest.createHtmlWithAngular([]));
+// addIndexSource2("/my_template.html", EngineTestCase.createSource([" <div>", " {{ctrl.noMethod()}}", " </div>"]));
+// contextHelper.addSource("/my_styles.css", "");
+// contextHelper.runTasks();
+// // there are some errors in my_template.html
+// {
+// List<AnalysisError> errors = context.getErrors(indexSource).errors;
+// JUnitTestCase.assertTrue(errors.length != 0);
+// }
+// // change main.dart, there are no MyComponent anymore
+// context.setContents(mainSource, "");
+// // ...errors in my_template.html should be removed
+// {
+// List<AnalysisError> errors = context.getErrors(indexSource).errors;
+// JUnitTestCase.assertTrue(errors.length == 0);
+// }
+// }
+// void test_analysisContext_changeEntryPoint_clearAngularErrors_inDart() {
+// addMainSource(EngineTestCase.createSource([
+// "",
+// "import 'angular.dart';",
+// "",
+// "@Component(",
+// " templateUrl: 'no-such-template.html', cssUrl: 'my_styles.css',",
+// " publishAs: 'ctrl',",
+// " selector: 'myComponent')",
+// "class MyComponent {",
+// "}"]));
+// Source entrySource = contextHelper.addSource("/entry-point.html", AngularTest.createHtmlWithAngular([]));
+// contextHelper.addSource("/my_styles.css", "");
+// contextHelper.runTasks();
+// // there are some errors in MyComponent
+// {
+// List<AnalysisError> errors = context.getErrors(mainSource).errors;
+// JUnitTestCase.assertTrue(errors.length != 0);
+// }
+// // make entry-point.html non-Angular
+// context.setContents(entrySource, "<html/>");
+// // ...errors in MyComponent should be removed
+// {
+// List<AnalysisError> errors = context.getErrors(mainSource).errors;
+// JUnitTestCase.assertTrue(errors.length == 0);
+// }
+// }
+// void test_analysisContext_changeEntryPoint_clearAngularErrors_inTemplate() {
+// addMainSource(EngineTestCase.createSource([
+// "",
+// "import 'angular.dart';",
+// "",
+// "@Component(",
+// " templateUrl: 'my_template.html', cssUrl: 'my_styles.css',",
+// " publishAs: 'ctrl',",
+// " selector: 'myComponent')",
+// "class MyComponent {",
+// "}"]));
+// Source entrySource = contextHelper.addSource("/entry-point.html", AngularTest.createHtmlWithAngular([]));
+// addIndexSource2("/my_template.html", EngineTestCase.createSource([" <div>", " {{ctrl.noMethod()}}", " </div>"]));
+// contextHelper.addSource("/my_styles.css", "");
+// contextHelper.runTasks();
+// // there are some errors in my_template.html
+// {
+// List<AnalysisError> errors = context.getErrors(indexSource).errors;
+// JUnitTestCase.assertTrue(errors.length != 0);
+// }
+// // make entry-point.html non-Angular
+// context.setContents(entrySource, "<html/>");
+// // ...errors in my_template.html should be removed
+// {
+// List<AnalysisError> errors = context.getErrors(indexSource).errors;
+// JUnitTestCase.assertTrue(errors.length == 0);
+// }
+// }
+// void test_analysisContext_removeEntryPoint_clearAngularErrors_inDart() {
+// addMainSource(EngineTestCase.createSource([
+// "",
+// "import 'angular.dart';",
+// "",
+// "@Component(",
+// " templateUrl: 'no-such-template.html', cssUrl: 'my_styles.css',",
+// " publishAs: 'ctrl',",
+// " selector: 'myComponent')",
+// "class MyComponent {",
+// "}"]));
+// Source entrySource = contextHelper.addSource("/entry-point.html", AngularTest.createHtmlWithAngular([]));
+// contextHelper.addSource("/my_styles.css", "");
+// contextHelper.runTasks();
+// // there are some errors in MyComponent
+// {
+// List<AnalysisError> errors = context.getErrors(mainSource).errors;
+// JUnitTestCase.assertTrue(errors.length != 0);
+// }
+// // remove entry-point.html
+// {
+// ChangeSet changeSet = new ChangeSet();
+// changeSet.removedSource(entrySource);
+// context.applyChanges(changeSet);
+// }
+// // ...errors in MyComponent should be removed
+// {
+// List<AnalysisError> errors = context.getErrors(mainSource).errors;
+// JUnitTestCase.assertTrue(errors.length == 0);
+// }
+// }
+// void test_contextProperties() {
+// addMyController();
+// _resolveIndexNoErrors(AngularTest.createHtmlWithAngular([
+// "<div>",
+// " {{\$id}}",
+// " {{\$parent}}",
+// " {{\$root}}",
+// "</div>"]));
+// assertResolvedIdentifier("\$id");
+// assertResolvedIdentifier("\$parent");
+// assertResolvedIdentifier("\$root");
+// }
+// void test_getAngularElement_isAngular() {
+// // prepare local variable "name" in compilation unit
+// CompilationUnitElementImpl unit = ElementFactory.compilationUnit("test.dart");
+// FunctionElementImpl function = ElementFactory.functionElement("main");
+// unit.functions = <FunctionElement> [function];
+// LocalVariableElementImpl local = ElementFactory.localVariableElement2("name");
+// function.localVariables = <LocalVariableElement> [local];
+// // set AngularElement
+// AngularElement angularElement = new AngularControllerElementImpl("ctrl", 0);
+// local.toolkitObjects = <AngularElement> [angularElement];
+// JUnitTestCase.assertSame(angularElement, AngularHtmlUnitResolver.getAngularElement(local));
+// }
+// void test_getAngularElement_notAngular() {
+// Element element = ElementFactory.localVariableElement2("name");
+// JUnitTestCase.assertNull(AngularHtmlUnitResolver.getAngularElement(element));
+// }
+// void test_getAngularElement_notLocal() {
+// Element element = ElementFactory.classElement2("Test", []);
+// JUnitTestCase.assertNull(AngularHtmlUnitResolver.getAngularElement(element));
+// }
+// /**
+// * Test that we resolve "ng-click" expression.
+// */
+// void test_ngClick() {
+// addMyController();
+// _resolveIndexNoErrors(AngularTest.createHtmlWithMyController(["<button ng-click='ctrl.doSomething(\$event)'/>"]));
+// assertResolvedIdentifier("doSomething");
+// }
+// void test_NgComponent_resolveTemplateFile() {
+// addMainSource(EngineTestCase.createSource([
+// "",
+// "import 'angular.dart';",
+// "",
+// "@Component(",
+// " templateUrl: 'my_template.html', cssUrl: 'my_styles.css',",
+// " publishAs: 'ctrl',",
+// " selector: 'myComponent')",
+// "class MyComponent {",
+// " String field;",
+// "}"]));
+// contextHelper.addSource("/entry-point.html", AngularTest.createHtmlWithAngular([]));
+// addIndexSource2("/my_template.html", EngineTestCase.createSource([" <div>", " {{ctrl.field}}", " </div>"]));
+// contextHelper.addSource("/my_styles.css", "");
+// contextHelper.runTasks();
+// resolveIndex();
+// assertNoErrors();
+// assertResolvedIdentifier2("ctrl.", "MyComponent");
+// assertResolvedIdentifier2("field}}", "String");
+// }
+// void test_NgComponent_updateDartFile() {
+// Source componentSource = contextHelper.addSource("/my_component.dart", EngineTestCase.createSource([
+// "library my.component;",
+// "import 'angular.dart';",
+// "@Component(selector: 'myComponent')",
+// "class MyComponent {",
+// "}"]));
+// contextHelper.addSource("/my_module.dart", EngineTestCase.createSource(["library my.module;", "import 'my_component.dart';"]));
+// addMainSource(EngineTestCase.createSource(["library main;", "import 'my_module.dart';"]));
+// _resolveIndexNoErrors(AngularTest.createHtmlWithMyController(["<myComponent/>"]));
+// // "myComponent" tag was resolved
+// {
+// XmlTagNode tagNode = HtmlUnitUtils.getTagNode(indexUnit, findOffset2("myComponent"));
+// AngularSelectorElement tagElement = tagNode.element as AngularSelectorElement;
+// JUnitTestCase.assertNotNull(tagElement);
+// JUnitTestCase.assertEquals("myComponent", tagElement.name);
+// }
+// // replace "myComponent" with "myComponent2" in my_component.dart and index.html
+// {
+// context.setContents(componentSource, _getSourceContent(componentSource).replaceAll("myComponent", "myComponent2"));
+// indexContent = _getSourceContent(indexSource).replaceAll("myComponent", "myComponent2");
+// context.setContents(indexSource, indexContent);
+// }
+// contextHelper.runTasks();
+// resolveIndex();
+// // "myComponent2" tag should be resolved
+// {
+// XmlTagNode tagNode = HtmlUnitUtils.getTagNode(indexUnit, findOffset2("myComponent2"));
+// AngularSelectorElement tagElement = tagNode.element as AngularSelectorElement;
+// JUnitTestCase.assertNotNull(tagElement);
+// JUnitTestCase.assertEquals("myComponent2", tagElement.name);
+// }
+// }
+// void test_NgComponent_use_resolveAttributes() {
+// contextHelper.addSource("/my_template.html", EngineTestCase.createSource([" <div>", " {{ctrl.field}}", " </div>"]));
+// addMainSource(EngineTestCase.createSource([
+// "",
+// "import 'angular.dart';",
+// "",
+// "@Component(",
+// " templateUrl: 'my_template.html', cssUrl: 'my_styles.css',",
+// " publishAs: 'ctrl',",
+// " selector: 'myComponent', // selector",
+// " map: const {'attrA' : '=>setA', 'attrB' : '@setB'})",
+// "class MyComponent {",
+// " set setA(value) {}",
+// " set setB(value) {}",
+// "}"]));
+// _resolveIndexNoErrors(AngularTest.createHtmlWithMyController([
+// "<input type='text' ng-model='someModel'/>",
+// "<myComponent attrA='someModel' attrB='bbb'/>"]));
+// // "attrA" attribute expression was resolved
+// JUnitTestCase.assertNotNull(findIdentifier("someModel"));
+// // "myComponent" tag was resolved
+// XmlTagNode tagNode = HtmlUnitUtils.getTagNode(indexUnit, findOffset2("myComponent"));
+// AngularSelectorElement tagElement = tagNode.element as AngularSelectorElement;
+// JUnitTestCase.assertNotNull(tagElement);
+// JUnitTestCase.assertEquals("myComponent", tagElement.name);
+// JUnitTestCase.assertEquals(findMainOffset("myComponent', // selector"), tagElement.nameOffset);
+// // "attrA" attribute was resolved
+// {
+// XmlAttributeNode node = HtmlUnitUtils.getAttributeNode(indexUnit, findOffset2("attrA='"));
+// AngularPropertyElement element = node.element as AngularPropertyElement;
+// JUnitTestCase.assertNotNull(element);
+// JUnitTestCase.assertEquals("attrA", element.name);
+// JUnitTestCase.assertEquals("setA", element.field.name);
+// }
+// // "attrB" attribute was resolved, even if it @binding
+// {
+// XmlAttributeNode node = HtmlUnitUtils.getAttributeNode(indexUnit, findOffset2("attrB='"));
+// AngularPropertyElement element = node.element as AngularPropertyElement;
+// JUnitTestCase.assertNotNull(element);
+// JUnitTestCase.assertEquals("attrB", element.name);
+// JUnitTestCase.assertEquals("setB", element.field.name);
+// }
+// }
+// void test_NgDirective_noAttribute() {
+// addMainSource(EngineTestCase.createSource([
+// "",
+// "import 'angular.dart';",
+// "",
+// "@NgDirective(selector: '[my-directive]', map: const {'foo': '=>input'})",
+// "class MyDirective {",
+// " set input(value) {}",
+// "}"]));
+// _resolveIndexNoErrors(AngularTest.createHtmlWithMyController(["<div my-directive>", "</div>"]));
+// }
+// void test_NgDirective_noExpression() {
+// addMainSource(EngineTestCase.createSource([
+// "",
+// "import 'angular.dart';",
+// "",
+// "@NgDirective(selector: '[my-directive]', map: const {'.': '=>input'})",
+// "class MyDirective {",
+// " set input(value) {}",
+// "}"]));
+// _resolveIndexNoErrors(AngularTest.createHtmlWithMyController(["<div my-directive>", "</div>"]));
+// }
+// void test_NgDirective_resolvedExpression() {
+// addMainSource(EngineTestCase.createSource([
+// "",
+// "import 'angular.dart';",
+// "",
+// "@Decorator(selector: '[my-directive]')",
+// "class MyDirective {",
+// " @NgOneWay('my-property')",
+// " String condition;",
+// "}"]));
+// _resolveIndexNoErrors(AngularTest.createHtmlWithMyController([
+// "<input type='text' ng-model='name'>",
+// "<div my-directive my-property='name != null'>",
+// "</div>"]));
+// resolveMainNoErrors();
+// // "my-directive" attribute was resolved
+// {
+// AngularSelectorElement selector = findMainElement(ElementKind.ANGULAR_SELECTOR, "my-directive");
+// XmlAttributeNode attrNodeSelector = HtmlUnitUtils.getAttributeNode(indexUnit, findOffset2("my-directive"));
+// JUnitTestCase.assertNotNull(attrNodeSelector);
+// JUnitTestCase.assertSame(selector, attrNodeSelector.element);
+// }
+// // "my-property" attribute was resolved
+// {
+// XmlAttributeNode attrNodeProperty = HtmlUnitUtils.getAttributeNode(indexUnit, findOffset2("my-property='"));
+// AngularPropertyElement propertyElement = attrNodeProperty.element as AngularPropertyElement;
+// JUnitTestCase.assertNotNull(propertyElement);
+// JUnitTestCase.assertSame(AngularPropertyKind.ONE_WAY, propertyElement.propertyKind);
+// JUnitTestCase.assertEquals("condition", propertyElement.field.name);
+// }
+// // "name" expression was resolved
+// JUnitTestCase.assertNotNull(findIdentifier("name != null"));
+// }
+// void test_NgDirective_resolvedExpression_attrString() {
+// addMainSource(EngineTestCase.createSource([
+// "",
+// "import 'angular.dart';",
+// "",
+// "@NgDirective(selector: '[my-directive])",
+// "class MyDirective {",
+// " @NgAttr('my-property')",
+// " String property;",
+// "}"]));
+// _resolveIndexNoErrors(AngularTest.createHtmlWithMyController([
+// "<input type='text' ng-model='name'>",
+// "<div my-directive my-property='name != null'>",
+// "</div>"]));
+// resolveMain();
+// // @NgAttr means "string attribute", which we don't parse
+// JUnitTestCase.assertNull(findIdentifierMaybe("name != null"));
+// }
+// void test_NgDirective_resolvedExpression_dotAsName() {
+// addMainSource(EngineTestCase.createSource([
+// "",
+// "import 'angular.dart';",
+// "",
+// "@Decorator(",
+// " selector: '[my-directive]',",
+// " map: const {'.' : '=>condition'})",
+// "class MyDirective {",
+// " set condition(value) {}",
+// "}"]));
+// _resolveIndexNoErrors(AngularTest.createHtmlWithMyController([
+// "<input type='text' ng-model='name'>",
+// "<div my-directive='name != null'>",
+// "</div>"]));
+// // "name" attribute was resolved
+// JUnitTestCase.assertNotNull(findIdentifier("name != null"));
+// }
+// /**
+// * Test that we resolve "ng-if" expression.
+// */
+// void test_ngIf() {
+// addMyController();
+// _resolveIndexNoErrors(AngularTest.createHtmlWithMyController(["<div ng-if='ctrl.field != null'/>"]));
+// assertResolvedIdentifier("field");
+// }
+// void test_ngModel_modelAfterUsage() {
+// addMyController();
+// _resolveIndexNoErrors(AngularTest.createHtmlWithMyController([
+// "<h3>Hello {{name}}!</h3>",
+// "<input type='text' ng-model='name'>"]));
+// assertResolvedIdentifier2("name}}!", "String");
+// assertResolvedIdentifier2("name'>", "String");
+// }
+// void test_ngModel_modelBeforeUsage() {
+// addMyController();
+// _resolveIndexNoErrors(AngularTest.createHtmlWithMyController([
+// "<input type='text' ng-model='name'>",
+// "<h3>Hello {{name}}!</h3>"]));
+// assertResolvedIdentifier2("name}}!", "String");
+// Element element = assertResolvedIdentifier2("name'>", "String");
+// JUnitTestCase.assertEquals("name", element.name);
+// JUnitTestCase.assertEquals(findOffset2("name'>"), element.nameOffset);
+// }
+// void test_ngModel_notIdentifier() {
+// addMyController();
+// _resolveIndexNoErrors(AngularTest.createHtmlWithMyController(["<input type='text' ng-model='ctrl.field'>"]));
+// assertResolvedIdentifier2("field'>", "String");
+// }
+// /**
+// * Test that we resolve "ng-mouseout" expression.
+// */
+// void test_ngMouseOut() {
+// addMyController();
+// _resolveIndexNoErrors(AngularTest.createHtmlWithMyController(["<button ng-mouseout='ctrl.doSomething(\$event)'/>"]));
+// assertResolvedIdentifier("doSomething");
+// }
+// void test_ngRepeat_additionalVariables() {
+// addMyController();
+// _resolveIndexNoErrors(AngularTest.createHtmlWithMyController([
+// "<li ng-repeat='name in ctrl.names'>",
+// " {{\$index}} {{\$first}} {{\$middle}} {{\$last}} {{\$even}} {{\$odd}}",
+// "</li>"]));
+// assertResolvedIdentifier2("\$index", "int");
+// assertResolvedIdentifier2("\$first", "bool");
+// assertResolvedIdentifier2("\$middle", "bool");
+// assertResolvedIdentifier2("\$last", "bool");
+// assertResolvedIdentifier2("\$even", "bool");
+// assertResolvedIdentifier2("\$odd", "bool");
+// }
+// void test_ngRepeat_bad_expectedIdentifier() {
+// addMyController();
+// resolveIndex2(AngularTest.createHtmlWithMyController(["<li ng-repeat='name + 42 in ctrl.names'>", "</li>"]));
+// assertErrors(indexSource, [AngularCode.INVALID_REPEAT_ITEM_SYNTAX]);
+// }
+// void test_ngRepeat_bad_expectedIn() {
+// addMyController();
+// resolveIndex2(AngularTest.createHtmlWithMyController(["<li ng-repeat='name : ctrl.names'>", "</li>"]));
+// assertErrors(indexSource, [AngularCode.INVALID_REPEAT_SYNTAX]);
+// }
+// void test_ngRepeat_filters_filter_literal() {
+// addMyController();
+// _resolveIndexNoErrors(AngularTest.createHtmlWithMyController([
+// "<li ng-repeat='item in ctrl.items | filter:42:null'/>",
+// "</li>"]));
+// // filter "filter" is resolved
+// Element filterElement = assertResolvedIdentifier("filter");
+// EngineTestCase.assertInstanceOf((obj) => obj is AngularFormatterElement, AngularFormatterElement, filterElement);
+// }
+// void test_ngRepeat_filters_filter_propertyMap() {
+// addMyController();
+// _resolveIndexNoErrors(AngularTest.createHtmlWithMyController([
+// "<li ng-repeat='item in ctrl.items | filter:{name:null, done:false}'/>",
+// "</li>"]));
+// assertResolvedIdentifier2("name:", "String");
+// assertResolvedIdentifier2("done:", "bool");
+// }
+// void test_ngRepeat_filters_missingColon() {
+// addMyController();
+// resolveIndex2(AngularTest.createHtmlWithMyController([
+// "<li ng-repeat=\"item in ctrl.items | orderBy:'' true\"/>",
+// "</li>"]));
+// assertErrors(indexSource, [AngularCode.MISSING_FORMATTER_COLON]);
+// }
+// void test_ngRepeat_filters_noArgs() {
+// addMyController();
+// _resolveIndexNoErrors(AngularTest.createHtmlWithMyController([
+// "<li ng-repeat=\"item in ctrl.items | orderBy\"/>",
+// "</li>"]));
+// // filter "orderBy" is resolved
+// Element filterElement = assertResolvedIdentifier("orderBy");
+// EngineTestCase.assertInstanceOf((obj) => obj is AngularFormatterElement, AngularFormatterElement, filterElement);
+// }
+// void test_ngRepeat_filters_orderBy_emptyString() {
+// addMyController();
+// _resolveIndexNoErrors(AngularTest.createHtmlWithMyController([
+// "<li ng-repeat=\"item in ctrl.items | orderBy:'':true\"/>",
+// "</li>"]));
+// // filter "orderBy" is resolved
+// Element filterElement = assertResolvedIdentifier("orderBy");
+// EngineTestCase.assertInstanceOf((obj) => obj is AngularFormatterElement, AngularFormatterElement, filterElement);
+// }
+// void test_ngRepeat_filters_orderBy_propertyList() {
+// addMyController();
+// _resolveIndexNoErrors(AngularTest.createHtmlWithMyController([
+// "<li ng-repeat=\"item in ctrl.items | orderBy:['name', 'done']\"/>",
+// "</li>"]));
+// assertResolvedIdentifier2("name'", "String");
+// assertResolvedIdentifier2("done'", "bool");
+// }
+// void test_ngRepeat_filters_orderBy_propertyName() {
+// addMyController();
+// _resolveIndexNoErrors(AngularTest.createHtmlWithMyController([
+// "<li ng-repeat=\"item in ctrl.items | orderBy:'name'\"/>",
+// "</li>"]));
+// assertResolvedIdentifier2("name'", "String");
+// }
+// void test_ngRepeat_filters_orderBy_propertyName_minus() {
+// addMyController();
+// _resolveIndexNoErrors(AngularTest.createHtmlWithMyController([
+// "<li ng-repeat=\"item in ctrl.items | orderBy:'-name'\"/>",
+// "</li>"]));
+// assertResolvedIdentifier2("name'", "String");
+// }
+// void test_ngRepeat_filters_orderBy_propertyName_plus() {
+// addMyController();
+// _resolveIndexNoErrors(AngularTest.createHtmlWithMyController([
+// "<li ng-repeat=\"item in ctrl.items | orderBy:'+name'\"/>",
+// "</li>"]));
+// assertResolvedIdentifier2("name'", "String");
+// }
+// void test_ngRepeat_filters_orderBy_propertyName_untypedItems() {
+// addMyController();
+// _resolveIndexNoErrors(AngularTest.createHtmlWithMyController([
+// "<li ng-repeat=\"item in ctrl.untypedItems | orderBy:'name'\"/>",
+// "</li>"]));
+// assertResolvedIdentifier2("name'", "dynamic");
+// }
+// void test_ngRepeat_filters_two() {
+// addMyController();
+// _resolveIndexNoErrors(AngularTest.createHtmlWithMyController([
+// "<li ng-repeat=\"item in ctrl.items | orderBy:'+' | orderBy:'-'\"/>",
+// "</li>"]));
+// EngineTestCase.assertInstanceOf((obj) => obj is AngularFormatterElement, AngularFormatterElement, assertResolvedIdentifier("orderBy:'+'"));
+// EngineTestCase.assertInstanceOf((obj) => obj is AngularFormatterElement, AngularFormatterElement, assertResolvedIdentifier("orderBy:'-'"));
+// }
+// void test_ngRepeat_resolvedExpressions() {
+// addMyController();
+// _resolveIndexNoErrors(AngularTest.createHtmlWithMyController([
+// "<li ng-repeat='name in ctrl.names'>",
+// " {{name}}",
+// "</li>"]));
+// assertResolvedIdentifier2("name in", "String");
+// assertResolvedIdentifier2("ctrl.", "MyController");
+// assertResolvedIdentifier2("names'", "List<String>");
+// assertResolvedIdentifier2("name}}", "String");
+// }
+// void test_ngRepeat_trackBy() {
+// addMyController();
+// _resolveIndexNoErrors(AngularTest.createHtmlWithMyController([
+// "<li ng-repeat='name in ctrl.names track by name.length'/>",
+// "</li>"]));
+// assertResolvedIdentifier2("length'", "int");
+// }
+// /**
+// * Test that we resolve "ng-show" expression.
+// */
+// void test_ngShow() {
+// addMyController();
+// _resolveIndexNoErrors(AngularTest.createHtmlWithMyController(["<div ng-show='ctrl.field != null'/>"]));
+// assertResolvedIdentifier("field");
+// }
+// void test_notResolved_noDartScript() {
+// resolveIndex2(EngineTestCase.createSource([
+// "<html ng-app>",
+// " <body>",
+// " <div my-marker>",
+// " {{ctrl.field}}",
+// " </div>",
+// " </body>",
+// "</html>"]));
+// assertNoErrors();
+// // Angular is not initialized, so "ctrl" is not parsed
+// Expression expression = HtmlUnitUtils.getExpression(indexUnit, findOffset2("ctrl"));
+// JUnitTestCase.assertNull(expression);
+// }
+// void test_notResolved_notAngular() {
+// resolveIndex2(EngineTestCase.createSource([
+// "<html no-ng-app>",
+// " <body>",
+// " <div my-marker>",
+// " {{ctrl.field}}",
+// " </div>",
+// " </body>",
+// "</html>"]));
+// assertNoErrors();
+// // Angular is not initialized, so "ctrl" is not parsed
+// Expression expression = HtmlUnitUtils.getExpression(indexUnit, findOffset2("ctrl"));
+// JUnitTestCase.assertNull(expression);
+// }
+// void test_notResolved_wrongControllerMarker() {
+// addMyController();
+// addIndexSource(EngineTestCase.createSource([
+// "<html ng-app>",
+// " <body>",
+// " <div not-my-marker>",
+// " {{ctrl.field}}",
+// " </div>",
+// " <script type='application/dart' src='main.dart'></script>",
+// " </body>",
+// "</html>"]));
+// contextHelper.runTasks();
+// resolveIndex();
+// // no errors, because we decided to ignore them at the moment
+// assertNoErrors();
+// // "ctrl" is not resolved
+// SimpleIdentifier identifier = findIdentifier("ctrl");
+// JUnitTestCase.assertNull(identifier.bestElement);
+// }
+// void test_resolveExpression_evenWithout_ngBootstrap() {
+// resolveMainSource(EngineTestCase.createSource([
+// "",
+// "import 'angular.dart';",
+// "",
+// "@Controller(",
+// " selector: '[my-controller]',",
+// " publishAs: 'ctrl')",
+// "class MyController {",
+// " String field;",
+// "}"]));
+// _resolveIndexNoErrors(EngineTestCase.createSource([
+// "<html ng-app>",
+// " <body>",
+// " <div my-controller>",
+// " {{ctrl.field}}",
+// " </div>",
+// " <script type='application/dart' src='main.dart'></script>",
+// " </body>",
+// "</html>"]));
+// assertResolvedIdentifier2("ctrl.", "MyController");
+// }
+// void test_resolveExpression_ignoreUnresolved() {
+// resolveMainSource(EngineTestCase.createSource([
+// "",
+// "import 'angular.dart';",
+// "",
+// "@Controller(",
+// " selector: '[my-controller]',",
+// " publishAs: 'ctrl')",
+// "class MyController {",
+// " Map map;",
+// " Object obj;",
+// "}"]));
+// resolveIndex2(EngineTestCase.createSource([
+// "<html ng-app>",
+// " <body>",
+// " <div my-controller>",
+// " {{ctrl.map.property}}",
+// " {{ctrl.obj.property}}",
+// " {{invisibleScopeProperty}}",
+// " </div>",
+// " <script type='application/dart' src='main.dart'></script>",
+// " </body>",
+// "</html>"]));
+// assertNoErrors();
+// // "ctrl.map" and "ctrl.obj" are resolved
+// assertResolvedIdentifier2("map", "Map<dynamic, dynamic>");
+// assertResolvedIdentifier2("obj", "Object");
+// // ...but not "invisibleScopeProperty"
+// {
+// SimpleIdentifier identifier = findIdentifier("invisibleScopeProperty");
+// JUnitTestCase.assertNull(identifier.bestElement);
+// }
+// }
+// void test_resolveExpression_inAttribute() {
+// addMyController();
+// _resolveIndexNoErrors(AngularTest.createHtmlWithMyController(["<button title='{{ctrl.field}}'></button>"]));
+// assertResolvedIdentifier2("ctrl", "MyController");
+// }
+// void test_resolveExpression_ngApp_onBody() {
+// addMyController();
+// _resolveIndexNoErrors(EngineTestCase.createSource([
+// "<html>",
+// " <body ng-app>",
+// " <div my-controller>",
+// " {{ctrl.field}}",
+// " </div>",
+// " <script type='application/dart' src='main.dart'></script>",
+// " </body>",
+// "</html>"]));
+// assertResolvedIdentifier2("ctrl", "MyController");
+// }
+// void test_resolveExpression_withFilter() {
+// addMyController();
+// _resolveIndexNoErrors(AngularTest.createHtmlWithMyController(["{{ctrl.field | uppercase}}"]));
+// assertResolvedIdentifier2("ctrl", "MyController");
+// assertResolvedIdentifier("uppercase");
+// }
+// void test_resolveExpression_withFilter_notSimpleIdentifier() {
+// addMyController();
+// resolveIndex2(AngularTest.createHtmlWithMyController(["{{ctrl.field | not.supported}}"]));
+// assertErrors(indexSource, [AngularCode.INVALID_FORMATTER_NAME]);
+// }
+// void test_scopeProperties() {
+// addMainSource(EngineTestCase.createSource([
+// "",
+// "import 'angular.dart';",
+// "",
+// "@Component(",
+// " templateUrl: 'my_template.html', cssUrl: 'my_styles.css',",
+// " publishAs: 'ctrl',",
+// " selector: 'myComponent')",
+// "class MyComponent {",
+// " String field;",
+// " MyComponent(Scope scope) {",
+// " scope.context['scopeProperty'] = 'abc';",
+// " }",
+// "}",
+// ""]));
+// contextHelper.addSource("/entry-point.html", AngularTest.createHtmlWithAngular([]));
+// addIndexSource2("/my_template.html", EngineTestCase.createSource([" <div>", " {{scopeProperty}}", " </div>"]));
+// contextHelper.addSource("/my_styles.css", "");
+// contextHelper.runTasks();
+// resolveIndex();
+// assertNoErrors();
+// // "scopeProperty" is resolved
+// Element element = assertResolvedIdentifier2("scopeProperty}}", "String");
+// EngineTestCase.assertInstanceOf((obj) => obj is AngularScopePropertyElement, AngularScopePropertyElement, AngularHtmlUnitResolver.getAngularElement(element));
+// }
+// void test_scopeProperties_hideWithComponent() {
+// addMainSource(EngineTestCase.createSource([
+// "",
+// "import 'angular.dart';",
+// "",
+// "@Component(",
+// " templateUrl: 'my_template.html', cssUrl: 'my_styles.css',",
+// " publishAs: 'ctrl',",
+// " selector: 'myComponent')",
+// "class MyComponent {",
+// "}",
+// "",
+// "void setScopeProperties(Scope scope) {",
+// " scope.context['ctrl'] = 1;",
+// "}",
+// ""]));
+// contextHelper.addSource("/entry-point.html", AngularTest.createHtmlWithAngular([]));
+// addIndexSource2("/my_template.html", EngineTestCase.createSource([" <div>", " {{ctrl}}", " </div>"]));
+// contextHelper.addSource("/my_styles.css", "");
+// contextHelper.runTasks();
+// resolveIndex();
+// assertNoErrors();
+// // "ctrl" is resolved
+// LocalVariableElement element = assertResolvedIdentifier("ctrl}}") as LocalVariableElement;
+// List<ToolkitObjectElement> toolkitObjects = element.toolkitObjects;
+// EngineTestCase.assertInstanceOf((obj) => obj is AngularComponentElement, AngularComponentElement, toolkitObjects[0]);
+// }
+// void test_view_resolveTemplateFile() {
+// addMainSource(EngineTestCase.createSource([
+// "",
+// "import 'angular.dart';",
+// "",
+// "@Controller(",
+// " selector: '[my-controller]',",
+// " publishAs: 'ctrl')",
+// "class MyController {",
+// " String field;",
+// "}",
+// "",
+// "class MyRouteInitializer {",
+// " init(ViewFactory view) {",
+// " view('my_template.html');",
+// " }",
+// "}"]));
+// contextHelper.addSource("/entry-point.html", AngularTest.createHtmlWithAngular([]));
+// addIndexSource2("/my_template.html", EngineTestCase.createSource([
+// " <div my-controller>",
+// " {{ctrl.field}}",
+// " </div>"]));
+// contextHelper.addSource("/my_styles.css", "");
+// contextHelper.runTasks();
+// resolveIndex();
+// assertNoErrors();
+// assertResolvedIdentifier2("ctrl.", "MyController");
+// assertResolvedIdentifier2("field}}", "String");
+// }
+// String _getSourceContent(Source source) => context.getContents(source).data.toString();
+// void _resolveIndexNoErrors(String content) {
+// resolveIndex2(content);
+// assertNoErrors();
+// verify([indexSource]);
+// }
+// static dartSuite() {
+// _ut.group('AngularHtmlUnitResolverTest', () {
+// _ut.test('test_NgComponent_resolveTemplateFile', () {
+// final __test = new AngularHtmlUnitResolverTest();
+// runJUnitTest(__test, __test.test_NgComponent_resolveTemplateFile);
+// });
+// _ut.test('test_NgComponent_updateDartFile', () {
+// final __test = new AngularHtmlUnitResolverTest();
+// runJUnitTest(__test, __test.test_NgComponent_updateDartFile);
+// });
+// _ut.test('test_NgComponent_use_resolveAttributes', () {
+// final __test = new AngularHtmlUnitResolverTest();
+// runJUnitTest(__test, __test.test_NgComponent_use_resolveAttributes);
+// });
+// _ut.test('test_NgDirective_noAttribute', () {
+// final __test = new AngularHtmlUnitResolverTest();
+// runJUnitTest(__test, __test.test_NgDirective_noAttribute);
+// });
+// _ut.test('test_NgDirective_noExpression', () {
+// final __test = new AngularHtmlUnitResolverTest();
+// runJUnitTest(__test, __test.test_NgDirective_noExpression);
+// });
+// _ut.test('test_NgDirective_resolvedExpression', () {
+// final __test = new AngularHtmlUnitResolverTest();
+// runJUnitTest(__test, __test.test_NgDirective_resolvedExpression);
+// });
+// _ut.test('test_NgDirective_resolvedExpression_attrString', () {
+// final __test = new AngularHtmlUnitResolverTest();
+// runJUnitTest(__test, __test.test_NgDirective_resolvedExpression_attrString);
+// });
+// _ut.test('test_NgDirective_resolvedExpression_dotAsName', () {
+// final __test = new AngularHtmlUnitResolverTest();
+// runJUnitTest(__test, __test.test_NgDirective_resolvedExpression_dotAsName);
+// });
+// _ut.test('test_analysisContext_changeDart_invalidateApplication', () {
+// final __test = new AngularHtmlUnitResolverTest();
+// runJUnitTest(__test, __test.test_analysisContext_changeDart_invalidateApplication);
+// });
+// _ut.test('test_analysisContext_changeEntryPoint_clearAngularErrors_inDart', () {
+// final __test = new AngularHtmlUnitResolverTest();
+// runJUnitTest(__test, __test.test_analysisContext_changeEntryPoint_clearAngularErrors_inDart);
+// });
+// _ut.test('test_analysisContext_changeEntryPoint_clearAngularErrors_inTemplate', () {
+// final __test = new AngularHtmlUnitResolverTest();
+// runJUnitTest(__test, __test.test_analysisContext_changeEntryPoint_clearAngularErrors_inTemplate);
+// });
+// _ut.test('test_analysisContext_removeEntryPoint_clearAngularErrors_inDart', () {
+// final __test = new AngularHtmlUnitResolverTest();
+// runJUnitTest(__test, __test.test_analysisContext_removeEntryPoint_clearAngularErrors_inDart);
+// });
+// _ut.test('test_contextProperties', () {
+// final __test = new AngularHtmlUnitResolverTest();
+// runJUnitTest(__test, __test.test_contextProperties);
+// });
+// _ut.test('test_getAngularElement_isAngular', () {
+// final __test = new AngularHtmlUnitResolverTest();
+// runJUnitTest(__test, __test.test_getAngularElement_isAngular);
+// });
+// _ut.test('test_getAngularElement_notAngular', () {
+// final __test = new AngularHtmlUnitResolverTest();
+// runJUnitTest(__test, __test.test_getAngularElement_notAngular);
+// });
+// _ut.test('test_getAngularElement_notLocal', () {
+// final __test = new AngularHtmlUnitResolverTest();
+// runJUnitTest(__test, __test.test_getAngularElement_notLocal);
+// });
+// _ut.test('test_ngClick', () {
+// final __test = new AngularHtmlUnitResolverTest();
+// runJUnitTest(__test, __test.test_ngClick);
+// });
+// _ut.test('test_ngIf', () {
+// final __test = new AngularHtmlUnitResolverTest();
+// runJUnitTest(__test, __test.test_ngIf);
+// });
+// _ut.test('test_ngModel_modelAfterUsage', () {
+// final __test = new AngularHtmlUnitResolverTest();
+// runJUnitTest(__test, __test.test_ngModel_modelAfterUsage);
+// });
+// _ut.test('test_ngModel_modelBeforeUsage', () {
+// final __test = new AngularHtmlUnitResolverTest();
+// runJUnitTest(__test, __test.test_ngModel_modelBeforeUsage);
+// });
+// _ut.test('test_ngModel_notIdentifier', () {
+// final __test = new AngularHtmlUnitResolverTest();
+// runJUnitTest(__test, __test.test_ngModel_notIdentifier);
+// });
+// _ut.test('test_ngMouseOut', () {
+// final __test = new AngularHtmlUnitResolverTest();
+// runJUnitTest(__test, __test.test_ngMouseOut);
+// });
+// _ut.test('test_ngRepeat_additionalVariables', () {
+// final __test = new AngularHtmlUnitResolverTest();
+// runJUnitTest(__test, __test.test_ngRepeat_additionalVariables);
+// });
+// _ut.test('test_ngRepeat_bad_expectedIdentifier', () {
+// final __test = new AngularHtmlUnitResolverTest();
+// runJUnitTest(__test, __test.test_ngRepeat_bad_expectedIdentifier);
+// });
+// _ut.test('test_ngRepeat_bad_expectedIn', () {
+// final __test = new AngularHtmlUnitResolverTest();
+// runJUnitTest(__test, __test.test_ngRepeat_bad_expectedIn);
+// });
+// _ut.test('test_ngRepeat_filters_filter_literal', () {
+// final __test = new AngularHtmlUnitResolverTest();
+// runJUnitTest(__test, __test.test_ngRepeat_filters_filter_literal);
+// });
+// _ut.test('test_ngRepeat_filters_filter_propertyMap', () {
+// final __test = new AngularHtmlUnitResolverTest();
+// runJUnitTest(__test, __test.test_ngRepeat_filters_filter_propertyMap);
+// });
+// _ut.test('test_ngRepeat_filters_missingColon', () {
+// final __test = new AngularHtmlUnitResolverTest();
+// runJUnitTest(__test, __test.test_ngRepeat_filters_missingColon);
+// });
+// _ut.test('test_ngRepeat_filters_noArgs', () {
+// final __test = new AngularHtmlUnitResolverTest();
+// runJUnitTest(__test, __test.test_ngRepeat_filters_noArgs);
+// });
+// _ut.test('test_ngRepeat_filters_orderBy_emptyString', () {
+// final __test = new AngularHtmlUnitResolverTest();
+// runJUnitTest(__test, __test.test_ngRepeat_filters_orderBy_emptyString);
+// });
+// _ut.test('test_ngRepeat_filters_orderBy_propertyList', () {
+// final __test = new AngularHtmlUnitResolverTest();
+// runJUnitTest(__test, __test.test_ngRepeat_filters_orderBy_propertyList);
+// });
+// _ut.test('test_ngRepeat_filters_orderBy_propertyName', () {
+// final __test = new AngularHtmlUnitResolverTest();
+// runJUnitTest(__test, __test.test_ngRepeat_filters_orderBy_propertyName);
+// });
+// _ut.test('test_ngRepeat_filters_orderBy_propertyName_minus', () {
+// final __test = new AngularHtmlUnitResolverTest();
+// runJUnitTest(__test, __test.test_ngRepeat_filters_orderBy_propertyName_minus);
+// });
+// _ut.test('test_ngRepeat_filters_orderBy_propertyName_plus', () {
+// final __test = new AngularHtmlUnitResolverTest();
+// runJUnitTest(__test, __test.test_ngRepeat_filters_orderBy_propertyName_plus);
+// });
+// _ut.test('test_ngRepeat_filters_orderBy_propertyName_untypedItems', () {
+// final __test = new AngularHtmlUnitResolverTest();
+// runJUnitTest(__test, __test.test_ngRepeat_filters_orderBy_propertyName_untypedItems);
+// });
+// _ut.test('test_ngRepeat_filters_two', () {
+// final __test = new AngularHtmlUnitResolverTest();
+// runJUnitTest(__test, __test.test_ngRepeat_filters_two);
+// });
+// _ut.test('test_ngRepeat_resolvedExpressions', () {
+// final __test = new AngularHtmlUnitResolverTest();
+// runJUnitTest(__test, __test.test_ngRepeat_resolvedExpressions);
+// });
+// _ut.test('test_ngRepeat_trackBy', () {
+// final __test = new AngularHtmlUnitResolverTest();
+// runJUnitTest(__test, __test.test_ngRepeat_trackBy);
+// });
+// _ut.test('test_ngShow', () {
+// final __test = new AngularHtmlUnitResolverTest();
+// runJUnitTest(__test, __test.test_ngShow);
+// });
+// _ut.test('test_notResolved_noDartScript', () {
+// final __test = new AngularHtmlUnitResolverTest();
+// runJUnitTest(__test, __test.test_notResolved_noDartScript);
+// });
+// _ut.test('test_notResolved_notAngular', () {
+// final __test = new AngularHtmlUnitResolverTest();
+// runJUnitTest(__test, __test.test_notResolved_notAngular);
+// });
+// _ut.test('test_notResolved_wrongControllerMarker', () {
+// final __test = new AngularHtmlUnitResolverTest();
+// runJUnitTest(__test, __test.test_notResolved_wrongControllerMarker);
+// });
+// _ut.test('test_resolveExpression_evenWithout_ngBootstrap', () {
+// final __test = new AngularHtmlUnitResolverTest();
+// runJUnitTest(__test, __test.test_resolveExpression_evenWithout_ngBootstrap);
+// });
+// _ut.test('test_resolveExpression_ignoreUnresolved', () {
+// final __test = new AngularHtmlUnitResolverTest();
+// runJUnitTest(__test, __test.test_resolveExpression_ignoreUnresolved);
+// });
+// _ut.test('test_resolveExpression_inAttribute', () {
+// final __test = new AngularHtmlUnitResolverTest();
+// runJUnitTest(__test, __test.test_resolveExpression_inAttribute);
+// });
+// _ut.test('test_resolveExpression_ngApp_onBody', () {
+// final __test = new AngularHtmlUnitResolverTest();
+// runJUnitTest(__test, __test.test_resolveExpression_ngApp_onBody);
+// });
+// _ut.test('test_resolveExpression_withFilter', () {
+// final __test = new AngularHtmlUnitResolverTest();
+// runJUnitTest(__test, __test.test_resolveExpression_withFilter);
+// });
+// _ut.test('test_resolveExpression_withFilter_notSimpleIdentifier', () {
+// final __test = new AngularHtmlUnitResolverTest();
+// runJUnitTest(__test, __test.test_resolveExpression_withFilter_notSimpleIdentifier);
+// });
+// _ut.test('test_scopeProperties', () {
+// final __test = new AngularHtmlUnitResolverTest();
+// runJUnitTest(__test, __test.test_scopeProperties);
+// });
+// _ut.test('test_scopeProperties_hideWithComponent', () {
+// final __test = new AngularHtmlUnitResolverTest();
+// runJUnitTest(__test, __test.test_scopeProperties_hideWithComponent);
+// });
+// _ut.test('test_view_resolveTemplateFile', () {
+// final __test = new AngularHtmlUnitResolverTest();
+// runJUnitTest(__test, __test.test_view_resolveTemplateFile);
+// });
+// });
+// }
+// }
+// /**
+// * Tests for [HtmlUnitUtils] for Angular HTMLs.
+// */
+// class AngularHtmlUnitUtilsTest extends AngularTest {
+// void test_getElement_forExpression() {
+// addMyController();
+// _resolveSimpleCtrlFieldHtml();
+// // prepare expression
+// int offset = indexContent.indexOf("ctrl");
+// Expression expression = HtmlUnitUtils.getExpression(indexUnit, offset);
+// // get element
+// Element element = HtmlUnitUtils.getElement(expression);
+// EngineTestCase.assertInstanceOf((obj) => obj is VariableElement, VariableElement, element);
+// JUnitTestCase.assertEquals("ctrl", element.name);
+// }
+// void test_getElement_forExpression_null() {
+// Element element = HtmlUnitUtils.getElement(null);
+// JUnitTestCase.assertNull(element);
+// }
+// void test_getElement_forOffset() {
+// addMyController();
+// _resolveSimpleCtrlFieldHtml();
+// // no expression
+// {
+// Element element = HtmlUnitUtils.getElementAtOffset(indexUnit, 0);
+// JUnitTestCase.assertNull(element);
+// }
+// // has expression at offset
+// {
+// int offset = indexContent.indexOf("field");
+// Element element = HtmlUnitUtils.getElementAtOffset(indexUnit, offset);
+// EngineTestCase.assertInstanceOf((obj) => obj is PropertyAccessorElement, PropertyAccessorElement, element);
+// JUnitTestCase.assertEquals("field", element.name);
+// }
+// }
+// void test_getElementToOpen_controller() {
+// addMyController();
+// _resolveSimpleCtrlFieldHtml();
+// // prepare expression
+// int offset = indexContent.indexOf("ctrl");
+// Expression expression = HtmlUnitUtils.getExpression(indexUnit, offset);
+// // get element
+// Element element = HtmlUnitUtils.getElementToOpen(indexUnit, expression);
+// EngineTestCase.assertInstanceOf((obj) => obj is AngularControllerElement, AngularControllerElement, element);
+// JUnitTestCase.assertEquals("ctrl", element.name);
+// }
+// void test_getElementToOpen_field() {
+// addMyController();
+// _resolveSimpleCtrlFieldHtml();
+// // prepare expression
+// int offset = indexContent.indexOf("field");
+// Expression expression = HtmlUnitUtils.getExpression(indexUnit, offset);
+// // get element
+// Element element = HtmlUnitUtils.getElementToOpen(indexUnit, expression);
+// EngineTestCase.assertInstanceOf((obj) => obj is PropertyAccessorElement, PropertyAccessorElement, element);
+// JUnitTestCase.assertEquals("field", element.name);
+// }
+// void test_getEnclosingTagNode() {
+// resolveIndex2(EngineTestCase.createSource([
+// "<html>",
+// " <body ng-app>",
+// " <badge name='abc'> 123 </badge>",
+// " </body>",
+// "</html>"]));
+// // no unit
+// JUnitTestCase.assertNull(HtmlUnitUtils.getEnclosingTagNode(null, 0));
+// // wrong offset
+// JUnitTestCase.assertNull(HtmlUnitUtils.getEnclosingTagNode(indexUnit, -1));
+// // valid offset
+// XmlTagNode expected = _getEnclosingTagNode("<badge");
+// JUnitTestCase.assertNotNull(expected);
+// JUnitTestCase.assertEquals("badge", expected.tag);
+// JUnitTestCase.assertSame(expected, _getEnclosingTagNode("badge"));
+// JUnitTestCase.assertSame(expected, _getEnclosingTagNode("name="));
+// JUnitTestCase.assertSame(expected, _getEnclosingTagNode("123"));
+// JUnitTestCase.assertSame(expected, _getEnclosingTagNode("/badge"));
+// }
+// void test_getExpression() {
+// addMyController();
+// _resolveSimpleCtrlFieldHtml();
+// // try offset without expression
+// JUnitTestCase.assertNull(HtmlUnitUtils.getExpression(indexUnit, 0));
+// // try offset with expression
+// int offset = indexContent.indexOf("ctrl");
+// JUnitTestCase.assertNotNull(HtmlUnitUtils.getExpression(indexUnit, offset));
+// JUnitTestCase.assertNotNull(HtmlUnitUtils.getExpression(indexUnit, offset + 1));
+// JUnitTestCase.assertNotNull(HtmlUnitUtils.getExpression(indexUnit, offset + 2));
+// JUnitTestCase.assertNotNull(HtmlUnitUtils.getExpression(indexUnit, offset + "ctrl.field".length));
+// // try without unit
+// JUnitTestCase.assertNull(HtmlUnitUtils.getExpression(null, offset));
+// }
+// void test_getTagNode() {
+// resolveIndex2(EngineTestCase.createSource([
+// "<html>",
+// " <body ng-app>",
+// " <badge name='abc'> 123 </badge> done",
+// " </body>",
+// "</html>"]));
+// // no unit
+// JUnitTestCase.assertNull(HtmlUnitUtils.getTagNode(null, 0));
+// // wrong offset
+// JUnitTestCase.assertNull(HtmlUnitUtils.getTagNode(indexUnit, -1));
+// // on tag name
+// XmlTagNode expected = _getTagNode("badge name=");
+// JUnitTestCase.assertNotNull(expected);
+// JUnitTestCase.assertEquals("badge", expected.tag);
+// JUnitTestCase.assertSame(expected, _getTagNode("badge"));
+// JUnitTestCase.assertSame(expected, _getTagNode(" name="));
+// JUnitTestCase.assertSame(expected, _getTagNode("adge name="));
+// JUnitTestCase.assertSame(expected, _getTagNode("badge>"));
+// JUnitTestCase.assertSame(expected, _getTagNode("adge>"));
+// JUnitTestCase.assertSame(expected, _getTagNode("> done"));
+// // in tag node, but not on the name token
+// JUnitTestCase.assertNull(_getTagNode("name="));
+// JUnitTestCase.assertNull(_getTagNode("123"));
+// }
+// XmlTagNode _getEnclosingTagNode(String search) => HtmlUnitUtils.getEnclosingTagNode(indexUnit, indexContent.indexOf(search));
+// XmlTagNode _getTagNode(String search) => HtmlUnitUtils.getTagNode(indexUnit, indexContent.indexOf(search));
+// void _resolveSimpleCtrlFieldHtml() {
+// resolveIndex2(EngineTestCase.createSource([
+// "<html>",
+// " <body ng-app>",
+// " <div my-controller>",
+// " {{ctrl.field}}",
+// " </div>",
+// " <script type='application/dart' src='main.dart'></script>",
+// " </body>",
+// "</html>"]));
+// }
+// static dartSuite() {
+// _ut.group('AngularHtmlUnitUtilsTest', () {
+// _ut.test('test_getElementToOpen_controller', () {
+// final __test = new AngularHtmlUnitUtilsTest();
+// runJUnitTest(__test, __test.test_getElementToOpen_controller);
+// });
+// _ut.test('test_getElementToOpen_field', () {
+// final __test = new AngularHtmlUnitUtilsTest();
+// runJUnitTest(__test, __test.test_getElementToOpen_field);
+// });
+// _ut.test('test_getElement_forExpression', () {
+// final __test = new AngularHtmlUnitUtilsTest();
+// runJUnitTest(__test, __test.test_getElement_forExpression);
+// });
+// _ut.test('test_getElement_forExpression_null', () {
+// final __test = new AngularHtmlUnitUtilsTest();
+// runJUnitTest(__test, __test.test_getElement_forExpression_null);
+// });
+// _ut.test('test_getElement_forOffset', () {
+// final __test = new AngularHtmlUnitUtilsTest();
+// runJUnitTest(__test, __test.test_getElement_forOffset);
+// });
+// _ut.test('test_getEnclosingTagNode', () {
+// final __test = new AngularHtmlUnitUtilsTest();
+// runJUnitTest(__test, __test.test_getEnclosingTagNode);
+// });
+// _ut.test('test_getExpression', () {
+// final __test = new AngularHtmlUnitUtilsTest();
+// runJUnitTest(__test, __test.test_getExpression);
+// });
+// _ut.test('test_getTagNode', () {
+// final __test = new AngularHtmlUnitUtilsTest();
+// runJUnitTest(__test, __test.test_getTagNode);
+// });
+// });
+// }
+// }
+// abstract class AngularTest extends EngineTestCase {
+// /**
+// * Creates an HTML content that has Angular marker and script with "main.dart" reference.
+// */
+// static String createHtmlWithAngular(List<String> lines) {
+// String source = EngineTestCase.createSource(["<html ng-app>", " <body>"]);
+// source += EngineTestCase.createSource(lines);
+// source += EngineTestCase.createSource([
+// " <script type='application/dart' src='main.dart'></script>",
+// " </body>",
+// "</html>"]);
+// return source;
+// }
+// /**
+// * Creates an HTML content that has Angular marker, script with "main.dart" reference and
+// * "MyController" injected.
+// */
+// static String createHtmlWithMyController(List<String> lines) {
+// String source = EngineTestCase.createSource(["<html ng-app>", " <body>", " <div my-controller>"]);
+// source += EngineTestCase.createSource(lines);
+// source += EngineTestCase.createSource([
+// " </div>",
+// " <script type='application/dart' src='main.dart'></script>",
+// " </body>",
+// "</html>"]);
+// return source;
+// }
+// /**
+// * Finds an [Element] with the given names inside of the given root [Element].
+// *
+// * TODO(scheglov) maybe move this method to Element
+// *
+// * @param root the root [Element] to start searching from
+// * @param kind the kind of the [Element] to find, if `null` then any kind
+// * @param name the name of an [Element] to find
+// * @return the found [Element] or `null` if not found
+// */
+// static Element findElement(Element root, ElementKind kind, String name) {
+// List<Element> result = [null];
+// root.accept(new GeneralizingElementVisitor_AngularTest_findElement(kind, name, result));
+// return result[0] as Element;
+// }
+// /**
+// * Finds an [Element] with the given names inside of the given root [Element].
+// *
+// * @param root the root [Element] to start searching from
+// * @param name the name of an [Element] to find
+// * @return the found [Element] or `null` if not found
+// */
+// static Element findElement2(Element root, String name) => findElement(root, null, name);
+// /**
+// * @return the offset of given <code>search</code> string in <code>content</code>. Fails test if
+// * not found.
+// */
+// static int findOffset(String content, String search) {
+// int offset = content.indexOf(search);
+// assertThat(offset).describedAs(content).isNotEqualTo(-1);
+// return offset;
+// }
+// AnalysisContextHelper contextHelper = new AnalysisContextHelper();
+// AnalysisContext context;
+// String mainContent;
+// Source mainSource;
+// CompilationUnit mainUnit;
+// CompilationUnitElement mainUnitElement;
+// String indexContent;
+// Source indexSource;
+// HtmlUnit indexUnit;
+// HtmlElement indexHtmlUnit;
+// CompilationUnitElement indexDartUnitElement;
+// /**
+// * Fills [indexContent] and [indexSource].
+// */
+// void addIndexSource(String content) {
+// addIndexSource2("/index.html", content);
+// }
+// /**
+// * Fills [indexContent] and [indexSource].
+// */
+// void addIndexSource2(String name, String content) {
+// indexContent = content;
+// indexSource = contextHelper.addSource(name, indexContent);
+// }
+// /**
+// * Fills [mainContent] and [mainSource].
+// */
+// void addMainSource(String content) {
+// mainContent = content;
+// mainSource = contextHelper.addSource("/main.dart", content);
+// }
+// void addMyController() {
+// resolveMainSource(EngineTestCase.createSource([
+// "",
+// "import 'angular.dart';",
+// "",
+// "class Item {",
+// " String name;",
+// " bool done;",
+// "}",
+// "",
+// "@Controller(",
+// " selector: '[my-controller]',",
+// " publishAs: 'ctrl')",
+// "class MyController {",
+// " String field;",
+// " List<String> names;",
+// " List<Item> items;",
+// " var untypedItems;",
+// " doSomething(event) {}",
+// "}"]));
+// }
+// /**
+// * Assert that the number of errors reported against the given source matches the number of errors
+// * that are given and that they have the expected error codes. The order in which the errors were
+// * gathered is ignored.
+// *
+// * @param source the source against which the errors should have been reported
+// * @param expectedErrorCodes the error codes of the errors that should have been reported
+// * @throws AnalysisException if the reported errors could not be computed
+// * @throws AssertionFailedError if a different number of errors have been reported than were
+// * expected
+// */
+// void assertErrors(Source source, List<ErrorCode> expectedErrorCodes) {
+// GatheringErrorListener errorListener = new GatheringErrorListener();
+// AnalysisErrorInfo errorsInfo = context.getErrors(source);
+// for (AnalysisError error in errorsInfo.errors) {
+// errorListener.onError(error);
+// }
+// errorListener.assertErrorsWithCodes(expectedErrorCodes);
+// }
+// void assertMainErrors(List<ErrorCode> expectedErrorCodes) {
+// assertErrors(mainSource, expectedErrorCodes);
+// }
+// /**
+// * Assert that no errors have been reported against the [indexSource].
+// */
+// void assertNoErrors() {
+// assertErrors(indexSource, []);
+// }
+// void assertNoErrors2(Source source) {
+// assertErrors(source, []);
+// }
+// /**
+// * Assert that no errors have been reported against the [mainSource].
+// */
+// void assertNoMainErrors() {
+// assertErrors(mainSource, []);
+// }
+// /**
+// * Checks that [indexHtmlUnit] has [SimpleIdentifier] with given name, resolved to
+// * not `null` [Element].
+// */
+// Element assertResolvedIdentifier(String name) {
+// SimpleIdentifier identifier = findIdentifier(name);
+// // check Element
+// Element element = identifier.bestElement;
+// JUnitTestCase.assertNotNull(element);
+// // return Element for further analysis
+// return element;
+// }
+// Element assertResolvedIdentifier2(String name, String expectedTypeName) {
+// SimpleIdentifier identifier = findIdentifier(name);
+// // check Element
+// Element element = identifier.bestElement;
+// JUnitTestCase.assertNotNull(element);
+// // check Type
+// DartType type = identifier.bestType;
+// JUnitTestCase.assertNotNull(type);
+// JUnitTestCase.assertEquals(expectedTypeName, type.toString());
+// // return Element for further analysis
+// return element;
+// }
+// /**
+// * @return [AstNode] which has required offset and type.
+// */
+// AstNode findExpression(int offset, Type clazz) {
+// Expression expression = HtmlUnitUtils.getExpression(indexUnit, offset);
+// return expression != null ? expression.getAncestor(predicate) : null;
+// }
+// /**
+// * Returns the [SimpleIdentifier] at the given search pattern. Fails if not found.
+// */
+// SimpleIdentifier findIdentifier(String search) {
+// SimpleIdentifier identifier = findIdentifierMaybe(search);
+// JUnitTestCase.assertNotNullMsg("${search} in ${indexContent}", identifier);
+// // check that offset/length of the identifier is valid
+// {
+// int offset = identifier.offset;
+// int end = identifier.end;
+// String contentStr = indexContent.substring(offset, end);
+// JUnitTestCase.assertEquals(identifier.name, contentStr);
+// }
+// // done
+// return identifier;
+// }
+// /**
+// * Returns the [SimpleIdentifier] at the given search pattern, or `null` if not found.
+// */
+// SimpleIdentifier findIdentifierMaybe(String search) => findExpression(findOffset2(search), SimpleIdentifier);
+// /**
+// * Returns [Element] from [indexDartUnitElement].
+// */
+// Element findIndexElement(String name) => findElement2(indexDartUnitElement, name);
+// /**
+// * Returns [Element] from [mainUnitElement].
+// */
+// Element findMainElement(ElementKind kind, String name) => findElement(mainUnitElement, kind, name);
+// /**
+// * Returns [Element] from [mainUnitElement].
+// */
+// Element findMainElement2(String name) => findElement2(mainUnitElement, name);
+// /**
+// * @return the offset of given <code>search</code> string in [mainContent]. Fails test if
+// * not found.
+// */
+// int findMainOffset(String search) => findOffset(mainContent, search);
+// /**
+// * @return the offset of given <code>search</code> string in [indexContent]. Fails test if
+// * not found.
+// */
+// int findOffset2(String search) => findOffset(indexContent, search);
+// /**
+// * Resolves [indexSource].
+// */
+// void resolveIndex() {
+// indexUnit = context.resolveHtmlUnit(indexSource);
+// indexHtmlUnit = indexUnit.element;
+// indexDartUnitElement = indexHtmlUnit.angularCompilationUnit;
+// }
+// void resolveIndex2(String content) {
+// addIndexSource(content);
+// contextHelper.runTasks();
+// resolveIndex();
+// }
+// /**
+// * Resolves [mainSource].
+// */
+// void resolveMain() {
+// mainUnit = contextHelper.resolveDefiningUnit(mainSource);
+// mainUnitElement = mainUnit.element;
+// }
+// /**
+// * Resolves [mainSource].
+// */
+// void resolveMainNoErrors() {
+// resolveMain();
+// assertNoErrors2(mainSource);
+// }
+// void resolveMainSource(String content) {
+// addMainSource(content);
+// resolveMain();
+// }
+// void resolveMainSourceNoErrors(String content) {
+// resolveMainSource(content);
+// assertNoErrors2(mainSource);
+// }
+// @override
+// void setUp() {
+// super.setUp();
+// _configureForAngular(contextHelper);
+// context = contextHelper.context;
+// }
+// @override
+// void tearDown() {
+// contextHelper = null;
+// context = null;
+// // main
+// mainContent = null;
+// mainSource = null;
+// mainUnit = null;
+// mainUnitElement = null;
+// // index
+// indexContent = null;
+// indexSource = null;
+// indexUnit = null;
+// indexHtmlUnit = null;
+// indexDartUnitElement = null;
+// // super
+// super.tearDown();
+// }
+// /**
+// * Verify that all of the identifiers in the HTML units associated with the given sources have
+// * been resolved.
+// *
+// * @param sources the sources identifying the compilation units to be verified
+// * @throws Exception if the contents of the compilation unit cannot be accessed
+// */
+// void verify(List<Source> sources) {
+// ResolutionVerifier verifier = new ResolutionVerifier();
+// for (Source source in sources) {
+// HtmlUnit htmlUnit = context.getResolvedHtmlUnit(source);
+// htmlUnit.accept(new ExpressionVisitor_AngularTest_verify(verifier));
+// }
+// verifier.assertResolved();
+// }
+// void _configureForAngular(AnalysisContextHelper contextHelper) {
+// contextHelper.addSource("/angular.dart", EngineTestCase.createSource([
+// "library angular;",
+// "",
+// "class Scope {",
+// " Map context;",
+// "}",
+// "",
+// "class Formatter {",
+// " final String name;",
+// " const Formatter({this.name});",
+// "}",
+// "",
+// "class Directive {",
+// " const Directive({",
+// " selector,",
+// " children,",
+// " visibility,",
+// " module,",
+// " map,",
+// " exportedExpressions,",
+// " exportedExpressionAttrs",
+// " });",
+// "}",
+// "",
+// "class Decorator {",
+// " const Decorator({",
+// " children/*: Directive.COMPILE_CHILDREN*/,",
+// " map,",
+// " selector,",
+// " module,",
+// " visibility,",
+// " exportedExpressions,",
+// " exportedExpressionAttrs",
+// " });",
+// "}",
+// "",
+// "class Controller {",
+// " const Controller({",
+// " children,",
+// " publishAs,",
+// " map,",
+// " selector,",
+// " visibility,",
+// " publishTypes,",
+// " exportedExpressions,",
+// " exportedExpressionAttrs",
+// " });",
+// "}",
+// "",
+// "class NgAttr {",
+// " const NgAttr(String name);",
+// "}",
+// "class NgCallback {",
+// " const NgCallback(String name);",
+// "}",
+// "class NgOneWay {",
+// " const NgOneWay(String name);",
+// "}",
+// "class NgOneWayOneTime {",
+// " const NgOneWayOneTime(String name);",
+// "}",
+// "class NgTwoWay {",
+// " const NgTwoWay(String name);",
+// "}",
+// "",
+// "class Component extends Directive {",
+// " const Component({",
+// " this.template,",
+// " this.templateUrl,",
+// " this.cssUrl,",
+// " this.applyAuthorStyles,",
+// " this.resetStyleInheritance,",
+// " publishAs,",
+// " module,",
+// " map,",
+// " selector,",
+// " visibility,",
+// " exportExpressions,",
+// " exportExpressionAttrs",
+// " }) : super(selector: selector,",
+// " children: null/*NgAnnotation.COMPILE_CHILDREN*/,",
+// " visibility: visibility,",
+// " map: map,",
+// " module: module,",
+// " exportExpressions: exportExpressions,",
+// " exportExpressionAttrs: exportExpressionAttrs);",
+// "}",
+// "",
+// "@Decorator(selector: '[ng-click]', map: const {'ng-click': '&onEvent'})",
+// "@Decorator(selector: '[ng-mouseout]', map: const {'ng-mouseout': '&onEvent'})",
+// "class NgEventDirective {",
+// " set onEvent(value) {}",
+// "}",
+// "",
+// "@Decorator(selector: '[ng-if]', map: const {'ng-if': '=>condition'})",
+// "class NgIfDirective {",
+// " set condition(value) {}",
+// "}",
+// "",
+// "@Decorator(selector: '[ng-show]', map: const {'ng-show': '=>show'})",
+// "class NgShowDirective {",
+// " set show(value) {}",
+// "}",
+// "",
+// "@Formatter(name: 'filter')",
+// "class FilterFormatter {}",
+// "",
+// "@Formatter(name: 'orderBy')",
+// "class OrderByFilter {}",
+// "",
+// "@Formatter(name: 'uppercase')",
+// "class UppercaseFilter {}",
+// "",
+// "class ViewFactory {",
+// " call(String templateUrl) => null;",
+// "}",
+// "",
+// "class Module {",
+// " install(Module m) {}",
+// " type(Type t) {}",
+// " value(Type t, value) {}",
+// "}",
+// "",
+// "class Injector {}",
+// "",
+// "Injector ngBootstrap({",
+// " Module module: null,",
+// " List<Module> modules: null,",
+// " /*dom.Element*/ element: null,",
+// " String selector: '[ng-app]',",
+// " /*Injector*/ injectorFactory/*(List<Module> modules): _defaultInjectorFactory*/}) {}",
+// ""]));
+// }
+// }
+// class ConstantEvaluatorTest extends ResolverTestCase {
+// void fail_constructor() {
+// EvaluationResult result = _getExpressionValue("?");
+// JUnitTestCase.assertTrue(result.isValid);
+// DartObject value = result.value;
+// JUnitTestCase.assertEquals(null, value);
+// }
+// void fail_identifier_class() {
+// EvaluationResult result = _getExpressionValue("?");
+// JUnitTestCase.assertTrue(result.isValid);
+// DartObject value = result.value;
+// JUnitTestCase.assertEquals(null, value);
+// }
+// void fail_identifier_function() {
+// EvaluationResult result = _getExpressionValue("?");
+// JUnitTestCase.assertTrue(result.isValid);
+// DartObject value = result.value;
+// JUnitTestCase.assertEquals(null, value);
+// }
+// void fail_identifier_static() {
+// EvaluationResult result = _getExpressionValue("?");
+// JUnitTestCase.assertTrue(result.isValid);
+// DartObject value = result.value;
+// JUnitTestCase.assertEquals(null, value);
+// }
+// void fail_identifier_staticMethod() {
+// EvaluationResult result = _getExpressionValue("?");
+// JUnitTestCase.assertTrue(result.isValid);
+// DartObject value = result.value;
+// JUnitTestCase.assertEquals(null, value);
+// }
+// void fail_identifier_topLevel() {
+// EvaluationResult result = _getExpressionValue("?");
+// JUnitTestCase.assertTrue(result.isValid);
+// DartObject value = result.value;
+// JUnitTestCase.assertEquals(null, value);
+// }
+// void fail_identifier_typeParameter() {
+// EvaluationResult result = _getExpressionValue("?");
+// JUnitTestCase.assertTrue(result.isValid);
+// DartObject value = result.value;
+// JUnitTestCase.assertEquals(null, value);
+// }
+// void fail_prefixedIdentifier_invalid() {
+// EvaluationResult result = _getExpressionValue("?");
+// JUnitTestCase.assertTrue(result.isValid);
+// DartObject value = result.value;
+// JUnitTestCase.assertEquals(null, value);
+// }
+// void fail_prefixedIdentifier_valid() {
+// EvaluationResult result = _getExpressionValue("?");
+// JUnitTestCase.assertTrue(result.isValid);
+// DartObject value = result.value;
+// JUnitTestCase.assertEquals(null, value);
+// }
+// void fail_propertyAccess_invalid() {
+// EvaluationResult result = _getExpressionValue("?");
+// JUnitTestCase.assertTrue(result.isValid);
+// DartObject value = result.value;
+// JUnitTestCase.assertEquals(null, value);
+// }
+// void fail_propertyAccess_valid() {
+// EvaluationResult result = _getExpressionValue("?");
+// JUnitTestCase.assertTrue(result.isValid);
+// DartObject value = result.value;
+// JUnitTestCase.assertEquals(null, value);
+// }
+// void fail_simpleIdentifier_invalid() {
+// EvaluationResult result = _getExpressionValue("?");
+// JUnitTestCase.assertTrue(result.isValid);
+// DartObject value = result.value;
+// JUnitTestCase.assertEquals(null, value);
+// }
+// void fail_simpleIdentifier_valid() {
+// EvaluationResult result = _getExpressionValue("?");
+// JUnitTestCase.assertTrue(result.isValid);
+// DartObject value = result.value;
+// JUnitTestCase.assertEquals(null, value);
+// }
+// void test_bitAnd_int_int() {
+// _assertValue3(74 & 42, "74 & 42");
+// }
+// void test_bitNot() {
+// _assertValue3(~42, "~42");
+// }
+// void test_bitOr_int_int() {
+// _assertValue3(74 | 42, "74 | 42");
+// }
+// void test_bitXor_int_int() {
+// _assertValue3(74 ^ 42, "74 ^ 42");
+// }
+// void test_divide_double_double() {
+// _assertValue2(3.2 / 2.3, "3.2 / 2.3");
+// }
+// void test_divide_double_double_byZero() {
+// EvaluationResult result = _getExpressionValue("3.2 / 0.0");
+// JUnitTestCase.assertTrue(result.isValid);
+// DartObject value = result.value;
+// JUnitTestCase.assertEquals("double", value.type.name);
+// JUnitTestCase.assertTrue(value.doubleValue.isInfinite());
+// }
+// void test_divide_int_int() {
+// _assertValue3(1, "3 / 2");
+// }
+// void test_divide_int_int_byZero() {
+// EvaluationResult result = _getExpressionValue("3 / 0");
+// JUnitTestCase.assertTrue(result.isValid);
+// }
+// void test_equal_boolean_boolean() {
+// _assertValue(false, "true == false");
+// }
+// void test_equal_int_int() {
+// _assertValue(false, "2 == 3");
+// }
+// void test_equal_invalidLeft() {
+// EvaluationResult result = _getExpressionValue("a == 3");
+// JUnitTestCase.assertFalse(result.isValid);
+// }
+// void test_equal_invalidRight() {
+// EvaluationResult result = _getExpressionValue("2 == a");
+// JUnitTestCase.assertFalse(result.isValid);
+// }
+// void test_equal_string_string() {
+// _assertValue(false, "'a' == 'b'");
+// }
+// void test_greaterThan_int_int() {
+// _assertValue(false, "2 > 3");
+// }
+// void test_greaterThanOrEqual_int_int() {
+// _assertValue(false, "2 >= 3");
+// }
+// void test_leftShift_int_int() {
+// _assertValue3(64, "16 << 2");
+// }
+// void test_lessThan_int_int() {
+// _assertValue(true, "2 < 3");
+// }
+// void test_lessThanOrEqual_int_int() {
+// _assertValue(true, "2 <= 3");
+// }
+// void test_literal_boolean_false() {
+// _assertValue(false, "false");
+// }
+// void test_literal_boolean_true() {
+// _assertValue(true, "true");
+// }
+// void test_literal_list() {
+// EvaluationResult result = _getExpressionValue("const ['a', 'b', 'c']");
+// JUnitTestCase.assertTrue(result.isValid);
+// }
+// void test_literal_map() {
+// EvaluationResult result = _getExpressionValue("const {'a' : 'm', 'b' : 'n', 'c' : 'o'}");
+// JUnitTestCase.assertTrue(result.isValid);
+// }
+// void test_literal_null() {
+// EvaluationResult result = _getExpressionValue("null");
+// JUnitTestCase.assertTrue(result.isValid);
+// DartObject value = result.value;
+// JUnitTestCase.assertTrue(value.isNull);
+// }
+// void test_literal_number_double() {
+// _assertValue2(3.45, "3.45");
+// }
+// void test_literal_number_integer() {
+// _assertValue3(42, "42");
+// }
+// void test_literal_string_adjacent() {
+// _assertValue4("abcdef", "'abc' 'def'");
+// }
+// void test_literal_string_interpolation_invalid() {
+// EvaluationResult result = _getExpressionValue("'a\${f()}c'");
+// JUnitTestCase.assertFalse(result.isValid);
+// }
+// void test_literal_string_interpolation_valid() {
+// _assertValue4("a3c", "'a\${3}c'");
+// }
+// void test_literal_string_simple() {
+// _assertValue4("abc", "'abc'");
+// }
+// void test_logicalAnd() {
+// _assertValue(false, "true && false");
+// }
+// void test_logicalNot() {
+// _assertValue(false, "!true");
+// }
+// void test_logicalOr() {
+// _assertValue(true, "true || false");
+// }
+// void test_minus_double_double() {
+// _assertValue2(3.2 - 2.3, "3.2 - 2.3");
+// }
+// void test_minus_int_int() {
+// _assertValue3(1, "3 - 2");
+// }
+// void test_negated_boolean() {
+// EvaluationResult result = _getExpressionValue("-true");
+// JUnitTestCase.assertFalse(result.isValid);
+// }
+// void test_negated_double() {
+// _assertValue2(-42.3, "-42.3");
+// }
+// void test_negated_integer() {
+// _assertValue3(-42, "-42");
+// }
+// void test_notEqual_boolean_boolean() {
+// _assertValue(true, "true != false");
+// }
+// void test_notEqual_int_int() {
+// _assertValue(true, "2 != 3");
+// }
+// void test_notEqual_invalidLeft() {
+// EvaluationResult result = _getExpressionValue("a != 3");
+// JUnitTestCase.assertFalse(result.isValid);
+// }
+// void test_notEqual_invalidRight() {
+// EvaluationResult result = _getExpressionValue("2 != a");
+// JUnitTestCase.assertFalse(result.isValid);
+// }
+// void test_notEqual_string_string() {
+// _assertValue(true, "'a' != 'b'");
+// }
+// void test_parenthesizedExpression() {
+// _assertValue4("a", "('a')");
+// }
+// void test_plus_double_double() {
+// _assertValue2(2.3 + 3.2, "2.3 + 3.2");
+// }
+// void test_plus_int_int() {
+// _assertValue3(5, "2 + 3");
+// }
+// void test_remainder_double_double() {
+// _assertValue2(3.2 % 2.3, "3.2 % 2.3");
+// }
+// void test_remainder_int_int() {
+// _assertValue3(2, "8 % 3");
+// }
+// void test_rightShift() {
+// _assertValue3(16, "64 >> 2");
+// }
+// void test_times_double_double() {
+// _assertValue2(2.3 * 3.2, "2.3 * 3.2");
+// }
+// void test_times_int_int() {
+// _assertValue3(6, "2 * 3");
+// }
+// void test_truncatingDivide_double_double() {
+// _assertValue3(1, "3.2 ~/ 2.3");
+// }
+// void test_truncatingDivide_int_int() {
+// _assertValue3(3, "10 ~/ 3");
+// }
+// void _assertValue(bool expectedValue, String contents) {
+// EvaluationResult result = _getExpressionValue(contents);
+// DartObject value = result.value;
+// JUnitTestCase.assertEquals("bool", value.type.name);
+// JUnitTestCase.assertEquals(expectedValue, value.boolValue);
+// }
+// void _assertValue2(double expectedValue, String contents) {
+// EvaluationResult result = _getExpressionValue(contents);
+// JUnitTestCase.assertTrue(result.isValid);
+// DartObject value = result.value;
+// JUnitTestCase.assertEquals("double", value.type.name);
+// JUnitTestCase.assertEqualsMsg(expectedValue, value.doubleValue, 0.0);
+// }
+// void _assertValue3(int expectedValue, String contents) {
+// EvaluationResult result = _getExpressionValue(contents);
+// JUnitTestCase.assertTrue(result.isValid);
+// DartObject value = result.value;
+// JUnitTestCase.assertEquals("int", value.type.name);
+// JUnitTestCase.assertEquals(expectedValue, value.intValue.longValue());
+// }
+// void _assertValue4(String expectedValue, String contents) {
+// EvaluationResult result = _getExpressionValue(contents);
+// DartObject value = result.value;
+// JUnitTestCase.assertEquals("String", value.type.name);
+// JUnitTestCase.assertEquals(expectedValue, value.stringValue);
+// }
+// EvaluationResult _getExpressionValue(String contents) {
+// Source source = addSource("var x = ${contents};");
+// LibraryElement library = resolve(source);
+// CompilationUnit unit = analysisContext.resolveCompilationUnit(source, library);
+// JUnitTestCase.assertNotNull(unit);
+// NodeList<CompilationUnitMember> declarations = unit.declarations;
+// EngineTestCase.assertSizeOfList(1, declarations);
+// CompilationUnitMember declaration = declarations[0];
+// EngineTestCase.assertInstanceOf((obj) => obj is TopLevelVariableDeclaration, TopLevelVariableDeclaration, declaration);
+// NodeList<VariableDeclaration> variables = (declaration as TopLevelVariableDeclaration).variables.variables;
+// EngineTestCase.assertSizeOfList(1, variables);
+// ConstantEvaluator evaluator = new ConstantEvaluator(source, new TestTypeProvider());
+// return evaluator.evaluate(variables[0].initializer);
+// }
+// static dartSuite() {
+// _ut.group('ConstantEvaluatorTest', () {
+// _ut.test('test_bitAnd_int_int', () {
+// final __test = new ConstantEvaluatorTest();
+// runJUnitTest(__test, __test.test_bitAnd_int_int);
+// });
+// _ut.test('test_bitNot', () {
+// final __test = new ConstantEvaluatorTest();
+// runJUnitTest(__test, __test.test_bitNot);
+// });
+// _ut.test('test_bitOr_int_int', () {
+// final __test = new ConstantEvaluatorTest();
+// runJUnitTest(__test, __test.test_bitOr_int_int);
+// });
+// _ut.test('test_bitXor_int_int', () {
+// final __test = new ConstantEvaluatorTest();
+// runJUnitTest(__test, __test.test_bitXor_int_int);
+// });
+// _ut.test('test_divide_double_double', () {
+// final __test = new ConstantEvaluatorTest();
+// runJUnitTest(__test, __test.test_divide_double_double);
+// });
+// _ut.test('test_divide_double_double_byZero', () {
+// final __test = new ConstantEvaluatorTest();
+// runJUnitTest(__test, __test.test_divide_double_double_byZero);
+// });
+// _ut.test('test_divide_int_int', () {
+// final __test = new ConstantEvaluatorTest();
+// runJUnitTest(__test, __test.test_divide_int_int);
+// });
+// _ut.test('test_divide_int_int_byZero', () {
+// final __test = new ConstantEvaluatorTest();
+// runJUnitTest(__test, __test.test_divide_int_int_byZero);
+// });
+// _ut.test('test_equal_boolean_boolean', () {
+// final __test = new ConstantEvaluatorTest();
+// runJUnitTest(__test, __test.test_equal_boolean_boolean);
+// });
+// _ut.test('test_equal_int_int', () {
+// final __test = new ConstantEvaluatorTest();
+// runJUnitTest(__test, __test.test_equal_int_int);
+// });
+// _ut.test('test_equal_invalidLeft', () {
+// final __test = new ConstantEvaluatorTest();
+// runJUnitTest(__test, __test.test_equal_invalidLeft);
+// });
+// _ut.test('test_equal_invalidRight', () {
+// final __test = new ConstantEvaluatorTest();
+// runJUnitTest(__test, __test.test_equal_invalidRight);
+// });
+// _ut.test('test_equal_string_string', () {
+// final __test = new ConstantEvaluatorTest();
+// runJUnitTest(__test, __test.test_equal_string_string);
+// });
+// _ut.test('test_greaterThanOrEqual_int_int', () {
+// final __test = new ConstantEvaluatorTest();
+// runJUnitTest(__test, __test.test_greaterThanOrEqual_int_int);
+// });
+// _ut.test('test_greaterThan_int_int', () {
+// final __test = new ConstantEvaluatorTest();
+// runJUnitTest(__test, __test.test_greaterThan_int_int);
+// });
+// _ut.test('test_leftShift_int_int', () {
+// final __test = new ConstantEvaluatorTest();
+// runJUnitTest(__test, __test.test_leftShift_int_int);
+// });
+// _ut.test('test_lessThanOrEqual_int_int', () {
+// final __test = new ConstantEvaluatorTest();
+// runJUnitTest(__test, __test.test_lessThanOrEqual_int_int);
+// });
+// _ut.test('test_lessThan_int_int', () {
+// final __test = new ConstantEvaluatorTest();
+// runJUnitTest(__test, __test.test_lessThan_int_int);
+// });
+// _ut.test('test_literal_boolean_false', () {
+// final __test = new ConstantEvaluatorTest();
+// runJUnitTest(__test, __test.test_literal_boolean_false);
+// });
+// _ut.test('test_literal_boolean_true', () {
+// final __test = new ConstantEvaluatorTest();
+// runJUnitTest(__test, __test.test_literal_boolean_true);
+// });
+// _ut.test('test_literal_list', () {
+// final __test = new ConstantEvaluatorTest();
+// runJUnitTest(__test, __test.test_literal_list);
+// });
+// _ut.test('test_literal_map', () {
+// final __test = new ConstantEvaluatorTest();
+// runJUnitTest(__test, __test.test_literal_map);
+// });
+// _ut.test('test_literal_null', () {
+// final __test = new ConstantEvaluatorTest();
+// runJUnitTest(__test, __test.test_literal_null);
+// });
+// _ut.test('test_literal_number_double', () {
+// final __test = new ConstantEvaluatorTest();
+// runJUnitTest(__test, __test.test_literal_number_double);
+// });
+// _ut.test('test_literal_number_integer', () {
+// final __test = new ConstantEvaluatorTest();
+// runJUnitTest(__test, __test.test_literal_number_integer);
+// });
+// _ut.test('test_literal_string_adjacent', () {
+// final __test = new ConstantEvaluatorTest();
+// runJUnitTest(__test, __test.test_literal_string_adjacent);
+// });
+// _ut.test('test_literal_string_interpolation_invalid', () {
+// final __test = new ConstantEvaluatorTest();
+// runJUnitTest(__test, __test.test_literal_string_interpolation_invalid);
+// });
+// _ut.test('test_literal_string_interpolation_valid', () {
+// final __test = new ConstantEvaluatorTest();
+// runJUnitTest(__test, __test.test_literal_string_interpolation_valid);
+// });
+// _ut.test('test_literal_string_simple', () {
+// final __test = new ConstantEvaluatorTest();
+// runJUnitTest(__test, __test.test_literal_string_simple);
+// });
+// _ut.test('test_logicalAnd', () {
+// final __test = new ConstantEvaluatorTest();
+// runJUnitTest(__test, __test.test_logicalAnd);
+// });
+// _ut.test('test_logicalNot', () {
+// final __test = new ConstantEvaluatorTest();
+// runJUnitTest(__test, __test.test_logicalNot);
+// });
+// _ut.test('test_logicalOr', () {
+// final __test = new ConstantEvaluatorTest();
+// runJUnitTest(__test, __test.test_logicalOr);
+// });
+// _ut.test('test_minus_double_double', () {
+// final __test = new ConstantEvaluatorTest();
+// runJUnitTest(__test, __test.test_minus_double_double);
+// });
+// _ut.test('test_minus_int_int', () {
+// final __test = new ConstantEvaluatorTest();
+// runJUnitTest(__test, __test.test_minus_int_int);
+// });
+// _ut.test('test_negated_boolean', () {
+// final __test = new ConstantEvaluatorTest();
+// runJUnitTest(__test, __test.test_negated_boolean);
+// });
+// _ut.test('test_negated_double', () {
+// final __test = new ConstantEvaluatorTest();
+// runJUnitTest(__test, __test.test_negated_double);
+// });
+// _ut.test('test_negated_integer', () {
+// final __test = new ConstantEvaluatorTest();
+// runJUnitTest(__test, __test.test_negated_integer);
+// });
+// _ut.test('test_notEqual_boolean_boolean', () {
+// final __test = new ConstantEvaluatorTest();
+// runJUnitTest(__test, __test.test_notEqual_boolean_boolean);
+// });
+// _ut.test('test_notEqual_int_int', () {
+// final __test = new ConstantEvaluatorTest();
+// runJUnitTest(__test, __test.test_notEqual_int_int);
+// });
+// _ut.test('test_notEqual_invalidLeft', () {
+// final __test = new ConstantEvaluatorTest();
+// runJUnitTest(__test, __test.test_notEqual_invalidLeft);
+// });
+// _ut.test('test_notEqual_invalidRight', () {
+// final __test = new ConstantEvaluatorTest();
+// runJUnitTest(__test, __test.test_notEqual_invalidRight);
+// });
+// _ut.test('test_notEqual_string_string', () {
+// final __test = new ConstantEvaluatorTest();
+// runJUnitTest(__test, __test.test_notEqual_string_string);
+// });
+// _ut.test('test_parenthesizedExpression', () {
+// final __test = new ConstantEvaluatorTest();
+// runJUnitTest(__test, __test.test_parenthesizedExpression);
+// });
+// _ut.test('test_plus_double_double', () {
+// final __test = new ConstantEvaluatorTest();
+// runJUnitTest(__test, __test.test_plus_double_double);
+// });
+// _ut.test('test_plus_int_int', () {
+// final __test = new ConstantEvaluatorTest();
+// runJUnitTest(__test, __test.test_plus_int_int);
+// });
+// _ut.test('test_remainder_double_double', () {
+// final __test = new ConstantEvaluatorTest();
+// runJUnitTest(__test, __test.test_remainder_double_double);
+// });
+// _ut.test('test_remainder_int_int', () {
+// final __test = new ConstantEvaluatorTest();
+// runJUnitTest(__test, __test.test_remainder_int_int);
+// });
+// _ut.test('test_rightShift', () {
+// final __test = new ConstantEvaluatorTest();
+// runJUnitTest(__test, __test.test_rightShift);
+// });
+// _ut.test('test_times_double_double', () {
+// final __test = new ConstantEvaluatorTest();
+// runJUnitTest(__test, __test.test_times_double_double);
+// });
+// _ut.test('test_times_int_int', () {
+// final __test = new ConstantEvaluatorTest();
+// runJUnitTest(__test, __test.test_times_int_int);
+// });
+// _ut.test('test_truncatingDivide_double_double', () {
+// final __test = new ConstantEvaluatorTest();
+// runJUnitTest(__test, __test.test_truncatingDivide_double_double);
+// });
+// _ut.test('test_truncatingDivide_int_int', () {
+// final __test = new ConstantEvaluatorTest();
+// runJUnitTest(__test, __test.test_truncatingDivide_int_int);
+// });
+// });
+// }
+// }
+// class ConstantFinderTest extends EngineTestCase {
+// AstNode _node;
+// void test_visitConstructorDeclaration_const() {
+// ConstructorElement element = _setupConstructorDeclaration("A", true);
+// JUnitTestCase.assertSame(_node, _findConstantDeclarations()[element]);
+// }
+// void test_visitConstructorDeclaration_nonConst() {
+// _setupConstructorDeclaration("A", false);
+// JUnitTestCase.assertTrue(_findConstantDeclarations().isEmpty);
+// }
+// void test_visitInstanceCreationExpression_const() {
+// _setupInstanceCreationExpression("A", true);
+// JUnitTestCase.assertTrue(_findConstructorInvocations().contains(_node));
+// }
+// void test_visitInstanceCreationExpression_nonConst() {
+// _setupInstanceCreationExpression("A", false);
+// JUnitTestCase.assertTrue(_findConstructorInvocations().isEmpty);
+// }
+// void test_visitVariableDeclaration_const() {
+// VariableElement element = _setupVariableDeclaration("v", true, true);
+// JUnitTestCase.assertSame(_node, _findVariableDeclarations()[element]);
+// }
+// void test_visitVariableDeclaration_noInitializer() {
+// _setupVariableDeclaration("v", true, false);
+// JUnitTestCase.assertTrue(_findVariableDeclarations().isEmpty);
+// }
+// void test_visitVariableDeclaration_nonConst() {
+// _setupVariableDeclaration("v", false, true);
+// JUnitTestCase.assertTrue(_findVariableDeclarations().isEmpty);
+// }
+// HashMap<ConstructorElement, ConstructorDeclaration> _findConstantDeclarations() {
+// ConstantFinder finder = new ConstantFinder();
+// _node.accept(finder);
+// HashMap<ConstructorElement, ConstructorDeclaration> constructorMap = finder.constructorMap;
+// JUnitTestCase.assertNotNull(constructorMap);
+// return constructorMap;
+// }
+// List<InstanceCreationExpression> _findConstructorInvocations() {
+// ConstantFinder finder = new ConstantFinder();
+// _node.accept(finder);
+// List<InstanceCreationExpression> constructorInvocations = finder.constructorInvocations;
+// JUnitTestCase.assertNotNull(constructorInvocations);
+// return constructorInvocations;
+// }
+// HashMap<VariableElement, VariableDeclaration> _findVariableDeclarations() {
+// ConstantFinder finder = new ConstantFinder();
+// _node.accept(finder);
+// HashMap<VariableElement, VariableDeclaration> variableMap = finder.variableMap;
+// JUnitTestCase.assertNotNull(variableMap);
+// return variableMap;
+// }
+// ConstructorElement _setupConstructorDeclaration(String name, bool isConst) {
+// Keyword constKeyword = isConst ? Keyword.CONST : null;
+// ConstructorDeclaration constructorDeclaration = AstFactory.constructorDeclaration2(constKeyword, null, null, name, AstFactory.formalParameterList([]), null, AstFactory.blockFunctionBody2([]));
+// ClassElement classElement = ElementFactory.classElement2(name, []);
+// ConstructorElement element = ElementFactory.constructorElement(classElement, name, isConst, []);
+// constructorDeclaration.element = element;
+// _node = constructorDeclaration;
+// return element;
+// }
+// void _setupInstanceCreationExpression(String name, bool isConst) {
+// _node = AstFactory.instanceCreationExpression2(isConst ? Keyword.CONST : null, AstFactory.typeName3(AstFactory.identifier3(name), []), []);
+// }
+// VariableElement _setupVariableDeclaration(String name, bool isConst, bool isInitialized) {
+// VariableDeclaration variableDeclaration = isInitialized ? AstFactory.variableDeclaration2(name, AstFactory.integer(0)) : AstFactory.variableDeclaration(name);
+// SimpleIdentifier identifier = variableDeclaration.name;
+// VariableElement element = ElementFactory.localVariableElement(identifier);
+// identifier.staticElement = element;
+// AstFactory.variableDeclarationList2(isConst ? Keyword.CONST : null, [variableDeclaration]);
+// _node = variableDeclaration;
+// return element;
+// }
+// static dartSuite() {
+// _ut.group('ConstantFinderTest', () {
+// _ut.test('test_visitConstructorDeclaration_const', () {
+// final __test = new ConstantFinderTest();
+// runJUnitTest(__test, __test.test_visitConstructorDeclaration_const);
+// });
+// _ut.test('test_visitConstructorDeclaration_nonConst', () {
+// final __test = new ConstantFinderTest();
+// runJUnitTest(__test, __test.test_visitConstructorDeclaration_nonConst);
+// });
+// _ut.test('test_visitInstanceCreationExpression_const', () {
+// final __test = new ConstantFinderTest();
+// runJUnitTest(__test, __test.test_visitInstanceCreationExpression_const);
+// });
+// _ut.test('test_visitInstanceCreationExpression_nonConst', () {
+// final __test = new ConstantFinderTest();
+// runJUnitTest(__test, __test.test_visitInstanceCreationExpression_nonConst);
+// });
+// _ut.test('test_visitVariableDeclaration_const', () {
+// final __test = new ConstantFinderTest();
+// runJUnitTest(__test, __test.test_visitVariableDeclaration_const);
+// });
+// _ut.test('test_visitVariableDeclaration_noInitializer', () {
+// final __test = new ConstantFinderTest();
+// runJUnitTest(__test, __test.test_visitVariableDeclaration_noInitializer);
+// });
+// _ut.test('test_visitVariableDeclaration_nonConst', () {
+// final __test = new ConstantFinderTest();
+// runJUnitTest(__test, __test.test_visitVariableDeclaration_nonConst);
+// });
+// });
+// }
+// }
+// class ConstantValueComputerTest extends ResolverTestCase {
+// void test_computeValues_cycle() {
+// TestLogger logger = new TestLogger();
+// AnalysisEngine.instance.logger = logger;
+// Source librarySource = addSource(EngineTestCase.createSource([
+// "const int a = c;",
+// "const int b = a;",
+// "const int c = b;"]));
+// LibraryElement libraryElement = resolve(librarySource);
+// CompilationUnit unit = analysisContext.resolveCompilationUnit(librarySource, libraryElement);
+// analysisContext.computeErrors(librarySource);
+// JUnitTestCase.assertNotNull(unit);
+// ConstantValueComputer computer = _makeConstantValueComputer();
+// computer.add(unit);
+// computer.computeValues();
+// NodeList<CompilationUnitMember> members = unit.declarations;
+// EngineTestCase.assertSizeOfList(3, members);
+// _validate(false, (members[0] as TopLevelVariableDeclaration).variables);
+// _validate(false, (members[1] as TopLevelVariableDeclaration).variables);
+// _validate(false, (members[2] as TopLevelVariableDeclaration).variables);
+// }
+// void test_computeValues_dependentVariables() {
+// Source librarySource = addSource(EngineTestCase.createSource(["const int b = a;", "const int a = 0;"]));
+// LibraryElement libraryElement = resolve(librarySource);
+// CompilationUnit unit = analysisContext.resolveCompilationUnit(librarySource, libraryElement);
+// JUnitTestCase.assertNotNull(unit);
+// ConstantValueComputer computer = _makeConstantValueComputer();
+// computer.add(unit);
+// computer.computeValues();
+// NodeList<CompilationUnitMember> members = unit.declarations;
+// EngineTestCase.assertSizeOfList(2, members);
+// _validate(true, (members[0] as TopLevelVariableDeclaration).variables);
+// _validate(true, (members[1] as TopLevelVariableDeclaration).variables);
+// }
+// void test_computeValues_empty() {
+// ConstantValueComputer computer = _makeConstantValueComputer();
+// computer.computeValues();
+// }
+// void test_computeValues_multipleSources() {
+// Source librarySource = addNamedSource("/lib.dart", EngineTestCase.createSource([
+// "library lib;",
+// "part 'part.dart';",
+// "const int c = b;",
+// "const int a = 0;"]));
+// Source partSource = addNamedSource("/part.dart", EngineTestCase.createSource(["part of lib;", "const int b = a;", "const int d = c;"]));
+// LibraryElement libraryElement = resolve(librarySource);
+// CompilationUnit libraryUnit = analysisContext.resolveCompilationUnit(librarySource, libraryElement);
+// JUnitTestCase.assertNotNull(libraryUnit);
+// CompilationUnit partUnit = analysisContext.resolveCompilationUnit(partSource, libraryElement);
+// JUnitTestCase.assertNotNull(partUnit);
+// ConstantValueComputer computer = _makeConstantValueComputer();
+// computer.add(libraryUnit);
+// computer.add(partUnit);
+// computer.computeValues();
+// NodeList<CompilationUnitMember> libraryMembers = libraryUnit.declarations;
+// EngineTestCase.assertSizeOfList(2, libraryMembers);
+// _validate(true, (libraryMembers[0] as TopLevelVariableDeclaration).variables);
+// _validate(true, (libraryMembers[1] as TopLevelVariableDeclaration).variables);
+// NodeList<CompilationUnitMember> partMembers = libraryUnit.declarations;
+// EngineTestCase.assertSizeOfList(2, partMembers);
+// _validate(true, (partMembers[0] as TopLevelVariableDeclaration).variables);
+// _validate(true, (partMembers[1] as TopLevelVariableDeclaration).variables);
+// }
+// void test_computeValues_singleVariable() {
+// Source librarySource = addSource("const int a = 0;");
+// LibraryElement libraryElement = resolve(librarySource);
+// CompilationUnit unit = analysisContext.resolveCompilationUnit(librarySource, libraryElement);
+// JUnitTestCase.assertNotNull(unit);
+// ConstantValueComputer computer = _makeConstantValueComputer();
+// computer.add(unit);
+// computer.computeValues();
+// NodeList<CompilationUnitMember> members = unit.declarations;
+// EngineTestCase.assertSizeOfList(1, members);
+// _validate(true, (members[0] as TopLevelVariableDeclaration).variables);
+// }
+// void test_dependencyOnConstructor() {
+// // x depends on "const A()"
+// _assertProperDependencies(EngineTestCase.createSource(["class A {", " const A();", "}", "const x = const A();"]), []);
+// }
+// void test_dependencyOnConstructorArgument() {
+// // "const A(x)" depends on x
+// _assertProperDependencies(EngineTestCase.createSource([
+// "class A {",
+// " const A(this.next);",
+// " final A next;",
+// "}",
+// "const A x = const A(null);",
+// "const A y = const A(x);"]), []);
+// }
+// void test_dependencyOnConstructorArgument_unresolvedConstructor() {
+// // "const A.a(x)" depends on x even if the constructor A.a can't be found.
+// // TODO(paulberry): the error CONST_INITIALIZED_WITH_NON_CONSTANT_VALUE is redundant and
+// // probably shouldn't be issued.
+// _assertProperDependencies(EngineTestCase.createSource([
+// "class A {",
+// "}",
+// "const int x = 1;",
+// "const A y = const A.a(x);"]), [
+// CompileTimeErrorCode.CONST_INITIALIZED_WITH_NON_CONSTANT_VALUE,
+// CompileTimeErrorCode.CONST_WITH_UNDEFINED_CONSTRUCTOR]);
+// }
+// void test_dependencyOnConstructorInitializer() {
+// // "const A()" depends on x
+// _assertProperDependencies(EngineTestCase.createSource([
+// "const int x = 1;",
+// "class A {",
+// " const A() : v = x;",
+// " final int v;",
+// "}"]), []);
+// }
+// void test_dependencyOnExplicitSuperConstructor() {
+// // b depends on B() depends on A()
+// _assertProperDependencies(EngineTestCase.createSource([
+// "class A {",
+// " const A(this.x);",
+// " final int x;",
+// "}",
+// "class B extends A {",
+// " const B() : super(5);",
+// "}",
+// "const B b = const B();"]), []);
+// }
+// void test_dependencyOnExplicitSuperConstructorParameters() {
+// // b depends on B() depends on i
+// _assertProperDependencies(EngineTestCase.createSource([
+// "class A {",
+// " const A(this.x);",
+// " final int x;",
+// "}",
+// "class B extends A {",
+// " const B() : super(i);",
+// "}",
+// "const B b = const B();",
+// "const int i = 5;"]), []);
+// }
+// void test_dependencyOnFactoryRedirect() {
+// // a depends on A.foo() depends on A.bar()
+// _assertProperDependencies(EngineTestCase.createSource([
+// "const A a = const A.foo();",
+// "class A {",
+// " factory const A.foo() = A.bar;",
+// " const A.bar();",
+// "}"]), []);
+// }
+// void test_dependencyOnFactoryRedirectWithTypeParams() {
+// _assertProperDependencies(EngineTestCase.createSource([
+// "class A {",
+// " const factory A(var a) = B<int>;",
+// "}",
+// "",
+// "class B<T> implements A {",
+// " final T x;",
+// " const B(this.x);",
+// "}",
+// "",
+// "const A a = const A(10);"]), []);
+// }
+// void test_dependencyOnImplicitSuperConstructor() {
+// // b depends on B() depends on A()
+// _assertProperDependencies(EngineTestCase.createSource([
+// "class A {",
+// " const A() : x = 5;",
+// " final int x;",
+// "}",
+// "class B extends A {",
+// " const B();",
+// "}",
+// "const B b = const B();"]), []);
+// }
+// void test_dependencyOnOptionalParameterDefault() {
+// // a depends on A() depends on B()
+// _assertProperDependencies(EngineTestCase.createSource([
+// "class A {",
+// " const A([x = const B()]) : b = x;",
+// " final B b;",
+// "}",
+// "class B {",
+// " const B();",
+// "}",
+// "const A a = const A();"]), []);
+// }
+// void test_dependencyOnVariable() {
+// // x depends on y
+// _assertProperDependencies(EngineTestCase.createSource(["const x = y + 1;", "const y = 2;"]), []);
+// }
+// void test_fromEnvironment_bool_default_false() {
+// JUnitTestCase.assertEquals(false, _assertValidBool(_check_fromEnvironment_bool(null, "false")));
+// }
+// void test_fromEnvironment_bool_default_overridden() {
+// JUnitTestCase.assertEquals(false, _assertValidBool(_check_fromEnvironment_bool("false", "true")));
+// }
+// void test_fromEnvironment_bool_default_parseError() {
+// JUnitTestCase.assertEquals(true, _assertValidBool(_check_fromEnvironment_bool("parseError", "true")));
+// }
+// void test_fromEnvironment_bool_default_true() {
+// JUnitTestCase.assertEquals(true, _assertValidBool(_check_fromEnvironment_bool(null, "true")));
+// }
+// void test_fromEnvironment_bool_false() {
+// JUnitTestCase.assertEquals(false, _assertValidBool(_check_fromEnvironment_bool("false", null)));
+// }
+// void test_fromEnvironment_bool_parseError() {
+// JUnitTestCase.assertEquals(false, _assertValidBool(_check_fromEnvironment_bool("parseError", null)));
+// }
+// void test_fromEnvironment_bool_true() {
+// JUnitTestCase.assertEquals(true, _assertValidBool(_check_fromEnvironment_bool("true", null)));
+// }
+// void test_fromEnvironment_bool_undeclared() {
+// _assertValidUnknown(_check_fromEnvironment_bool(null, null));
+// }
+// void test_fromEnvironment_int_default_overridden() {
+// JUnitTestCase.assertEquals(234, _assertValidInt(_check_fromEnvironment_int("234", "123")));
+// }
+// void test_fromEnvironment_int_default_parseError() {
+// JUnitTestCase.assertEquals(123, _assertValidInt(_check_fromEnvironment_int("parseError", "123")));
+// }
+// void test_fromEnvironment_int_default_undeclared() {
+// JUnitTestCase.assertEquals(123, _assertValidInt(_check_fromEnvironment_int(null, "123")));
+// }
+// void test_fromEnvironment_int_ok() {
+// JUnitTestCase.assertEquals(234, _assertValidInt(_check_fromEnvironment_int("234", null)));
+// }
+// void test_fromEnvironment_int_parseError() {
+// _assertValidNull(_check_fromEnvironment_int("parseError", null));
+// }
+// void test_fromEnvironment_int_parseError_nullDefault() {
+// _assertValidNull(_check_fromEnvironment_int("parseError", "null"));
+// }
+// void test_fromEnvironment_int_undeclared() {
+// _assertValidUnknown(_check_fromEnvironment_int(null, null));
+// }
+// void test_fromEnvironment_int_undeclared_nullDefault() {
+// _assertValidNull(_check_fromEnvironment_int(null, "null"));
+// }
+// void test_fromEnvironment_string_default_overridden() {
+// JUnitTestCase.assertEquals("abc", _assertValidString(_check_fromEnvironment_string("abc", "'def'")));
+// }
+// void test_fromEnvironment_string_default_undeclared() {
+// JUnitTestCase.assertEquals("def", _assertValidString(_check_fromEnvironment_string(null, "'def'")));
+// }
+// void test_fromEnvironment_string_empty() {
+// JUnitTestCase.assertEquals("", _assertValidString(_check_fromEnvironment_string("", null)));
+// }
+// void test_fromEnvironment_string_ok() {
+// JUnitTestCase.assertEquals("abc", _assertValidString(_check_fromEnvironment_string("abc", null)));
+// }
+// void test_fromEnvironment_string_undeclared() {
+// _assertValidUnknown(_check_fromEnvironment_string(null, null));
+// }
+// void test_fromEnvironment_string_undeclared_nullDefault() {
+// _assertValidNull(_check_fromEnvironment_string(null, "null"));
+// }
+// void test_instanceCreationExpression_computedField() {
+// CompilationUnit compilationUnit = resolveSource(EngineTestCase.createSource([
+// "const foo = const A(4, 5);",
+// "class A {",
+// " const A(int i, int j) : k = 2 * i + j;",
+// " final int k;",
+// "}"]));
+// EvaluationResultImpl result = _evaluateInstanceCreationExpression(compilationUnit, "foo");
+// HashMap<String, DartObjectImpl> fields = _assertType(result, "A");
+// EngineTestCase.assertSizeOfMap(1, fields);
+// _assertIntField(fields, "k", 13);
+// }
+// void test_instanceCreationExpression_computedField_namedOptionalWithDefault() {
+// _checkInstanceCreationOptionalParams(false, true, true);
+// }
+// void test_instanceCreationExpression_computedField_namedOptionalWithoutDefault() {
+// _checkInstanceCreationOptionalParams(false, true, false);
+// }
+// void test_instanceCreationExpression_computedField_unnamedOptionalWithDefault() {
+// _checkInstanceCreationOptionalParams(false, false, true);
+// }
+// void test_instanceCreationExpression_computedField_unnamedOptionalWithoutDefault() {
+// _checkInstanceCreationOptionalParams(false, false, false);
+// }
+// void test_instanceCreationExpression_computedField_usesConstConstructor() {
+// CompilationUnit compilationUnit = resolveSource(EngineTestCase.createSource([
+// "const foo = const A(3);",
+// "class A {",
+// " const A(int i) : b = const B(4);",
+// " final int b;",
+// "}",
+// "class B {",
+// " const B(this.k);",
+// " final int k;",
+// "}"]));
+// EvaluationResultImpl result = _evaluateInstanceCreationExpression(compilationUnit, "foo");
+// HashMap<String, DartObjectImpl> fieldsOfA = _assertType(result, "A");
+// EngineTestCase.assertSizeOfMap(1, fieldsOfA);
+// HashMap<String, DartObjectImpl> fieldsOfB = _assertFieldType(fieldsOfA, "b", "B");
+// EngineTestCase.assertSizeOfMap(1, fieldsOfB);
+// _assertIntField(fieldsOfB, "k", 4);
+// }
+// void test_instanceCreationExpression_computedField_usesStaticConst() {
+// CompilationUnit compilationUnit = resolveSource(EngineTestCase.createSource([
+// "const foo = const A(3);",
+// "class A {",
+// " const A(int i) : k = i + B.bar;",
+// " final int k;",
+// "}",
+// "class B {",
+// " static const bar = 4;",
+// "}"]));
+// EvaluationResultImpl result = _evaluateInstanceCreationExpression(compilationUnit, "foo");
+// HashMap<String, DartObjectImpl> fields = _assertType(result, "A");
+// EngineTestCase.assertSizeOfMap(1, fields);
+// _assertIntField(fields, "k", 7);
+// }
+// void test_instanceCreationExpression_computedField_usesToplevelConst() {
+// CompilationUnit compilationUnit = resolveSource(EngineTestCase.createSource([
+// "const foo = const A(3);",
+// "const bar = 4;",
+// "class A {",
+// " const A(int i) : k = i + bar;",
+// " final int k;",
+// "}"]));
+// EvaluationResultImpl result = _evaluateInstanceCreationExpression(compilationUnit, "foo");
+// HashMap<String, DartObjectImpl> fields = _assertType(result, "A");
+// EngineTestCase.assertSizeOfMap(1, fields);
+// _assertIntField(fields, "k", 7);
+// }
+// void test_instanceCreationExpression_explicitSuper() {
+// CompilationUnit compilationUnit = resolveSource(EngineTestCase.createSource([
+// "const foo = const B(4, 5);",
+// "class A {",
+// " const A(this.x);",
+// " final int x;",
+// "}",
+// "class B extends A {",
+// " const B(int x, this.y) : super(x * 2);",
+// " final int y;",
+// "}"]));
+// EvaluationResultImpl result = _evaluateInstanceCreationExpression(compilationUnit, "foo");
+// HashMap<String, DartObjectImpl> fields = _assertType(result, "B");
+// EngineTestCase.assertSizeOfMap(2, fields);
+// _assertIntField(fields, "y", 5);
+// HashMap<String, DartObjectImpl> superclassFields = _assertFieldType(fields, GenericState.SUPERCLASS_FIELD, "A");
+// EngineTestCase.assertSizeOfMap(1, superclassFields);
+// _assertIntField(superclassFields, "x", 8);
+// }
+// void test_instanceCreationExpression_fieldFormalParameter() {
+// CompilationUnit compilationUnit = resolveSource(EngineTestCase.createSource([
+// "const foo = const A(42);",
+// "class A {",
+// " int x;",
+// " const A(this.x)",
+// "}"]));
+// EvaluationResultImpl result = _evaluateInstanceCreationExpression(compilationUnit, "foo");
+// HashMap<String, DartObjectImpl> fields = _assertType(result, "A");
+// EngineTestCase.assertSizeOfMap(1, fields);
+// _assertIntField(fields, "x", 42);
+// }
+// void test_instanceCreationExpression_fieldFormalParameter_namedOptionalWithDefault() {
+// _checkInstanceCreationOptionalParams(true, true, true);
+// }
+// void test_instanceCreationExpression_fieldFormalParameter_namedOptionalWithoutDefault() {
+// _checkInstanceCreationOptionalParams(true, true, false);
+// }
+// void test_instanceCreationExpression_fieldFormalParameter_unnamedOptionalWithDefault() {
+// _checkInstanceCreationOptionalParams(true, false, true);
+// }
+// void test_instanceCreationExpression_fieldFormalParameter_unnamedOptionalWithoutDefault() {
+// _checkInstanceCreationOptionalParams(true, false, false);
+// }
+// void test_instanceCreationExpression_implicitSuper() {
+// CompilationUnit compilationUnit = resolveSource(EngineTestCase.createSource([
+// "const foo = const B(4);",
+// "class A {",
+// " const A() : x(3);",
+// " final int x;",
+// "}",
+// "class B extends A {",
+// " const B(this.y);",
+// " final int y;",
+// "}"]));
+// EvaluationResultImpl result = _evaluateInstanceCreationExpression(compilationUnit, "foo");
+// HashMap<String, DartObjectImpl> fields = _assertType(result, "B");
+// EngineTestCase.assertSizeOfMap(2, fields);
+// _assertIntField(fields, "y", 4);
+// HashMap<String, DartObjectImpl> superclassFields = _assertFieldType(fields, GenericState.SUPERCLASS_FIELD, "A");
+// EngineTestCase.assertSizeOfMap(1, superclassFields);
+// _assertIntField(superclassFields, "x", 3);
+// }
+// void test_instanceCreationExpression_redirect() {
+// CompilationUnit compilationUnit = resolveSource(EngineTestCase.createSource([
+// "const foo = const A();",
+// "class A {",
+// " const factory A() = B;",
+// "}",
+// "class B implements A {",
+// " const B();",
+// "}"]));
+// _assertType(_evaluateInstanceCreationExpression(compilationUnit, "foo"), "B");
+// }
+// void test_instanceCreationExpression_redirect_cycle() {
+// // It is an error to have a cycle in factory redirects; however, we need
+// // to make sure that even if the error occurs, attempting to evaluate the
+// // constant will terminate.
+// CompilationUnit compilationUnit = resolveSource(EngineTestCase.createSource([
+// "const foo = const A();",
+// "class A {",
+// " const factory A() = A.b;",
+// " const factory A.b() = A;",
+// "}"]));
+// _assertValidUnknown(_evaluateInstanceCreationExpression(compilationUnit, "foo"));
+// }
+// void test_instanceCreationExpression_redirect_extern() {
+// CompilationUnit compilationUnit = resolveSource(EngineTestCase.createSource([
+// "const foo = const A();",
+// "class A {",
+// " external const factory A();",
+// "}"]));
+// _assertValidUnknown(_evaluateInstanceCreationExpression(compilationUnit, "foo"));
+// }
+// void test_instanceCreationExpression_redirect_nonConst() {
+// // It is an error for a const factory constructor redirect to a non-const
+// // constructor; however, we need to make sure that even if the error
+// // attempting to evaluate the constant won't cause a crash.
+// CompilationUnit compilationUnit = resolveSource(EngineTestCase.createSource([
+// "const foo = const A();",
+// "class A {",
+// " const factory A() = A.b;",
+// " A.b();",
+// "}"]));
+// _assertValidUnknown(_evaluateInstanceCreationExpression(compilationUnit, "foo"));
+// }
+// void test_instanceCreationExpression_redirectWithTypeParams() {
+// CompilationUnit compilationUnit = resolveSource(EngineTestCase.createSource([
+// "class A {",
+// " const factory A(var a) = B<int>;",
+// "}",
+// "",
+// "class B<T> implements A {",
+// " final T x;",
+// " const B(this.x);",
+// "}",
+// "",
+// "const A a = const A(10);"]));
+// EvaluationResultImpl result = _evaluateInstanceCreationExpression(compilationUnit, "a");
+// HashMap<String, DartObjectImpl> fields = _assertType(result, "B<int>");
+// EngineTestCase.assertSizeOfMap(1, fields);
+// _assertIntField(fields, "x", 10);
+// }
+// void test_instanceCreationExpression_redirectWithTypeSubstitution() {
+// // To evaluate the redirection of A<int>, A's template argument (T=int) must be substituted
+// // into B's template argument (B<U> where U=T) to get B<int>.
+// CompilationUnit compilationUnit = resolveSource(EngineTestCase.createSource([
+// "class A<T> {",
+// " const factory A(var a) = B<T>;",
+// "}",
+// "",
+// "class B<U> implements A {",
+// " final U x;",
+// " const B(this.x);",
+// "}",
+// "",
+// "const A<int> a = const A<int>(10);"]));
+// EvaluationResultImpl result = _evaluateInstanceCreationExpression(compilationUnit, "a");
+// HashMap<String, DartObjectImpl> fields = _assertType(result, "B<int>");
+// EngineTestCase.assertSizeOfMap(1, fields);
+// _assertIntField(fields, "x", 10);
+// }
+// void test_instanceCreationExpression_symbol() {
+// CompilationUnit compilationUnit = resolveSource(EngineTestCase.createSource(["const foo = const Symbol('a');"]));
+// EvaluationResultImpl evaluationResult = _evaluateInstanceCreationExpression(compilationUnit, "foo");
+// EngineTestCase.assertInstanceOf((obj) => obj is ValidResult, ValidResult, evaluationResult);
+// DartObjectImpl value = (evaluationResult as ValidResult).value;
+// JUnitTestCase.assertEquals(typeProvider.symbolType, value.type);
+// JUnitTestCase.assertEquals("a", value.value);
+// }
+// void test_instanceCreationExpression_withSupertypeParams_explicit() {
+// _checkInstanceCreation_withSupertypeParams(true);
+// }
+// void test_instanceCreationExpression_withSupertypeParams_implicit() {
+// _checkInstanceCreation_withSupertypeParams(false);
+// }
+// void test_instanceCreationExpression_withTypeParams() {
+// CompilationUnit compilationUnit = resolveSource(EngineTestCase.createSource([
+// "class C<E> {",
+// " const C();",
+// "}",
+// "const c_int = const C<int>();",
+// "const c_num = const C<num>();"]));
+// EvaluationResultImpl c_int = _evaluateInstanceCreationExpression(compilationUnit, "c_int");
+// _assertType(c_int, "C<int>");
+// DartObjectImpl c_int_value = (c_int as ValidResult).value;
+// EvaluationResultImpl c_num = _evaluateInstanceCreationExpression(compilationUnit, "c_num");
+// _assertType(c_num, "C<num>");
+// DartObjectImpl c_num_value = (c_num as ValidResult).value;
+// JUnitTestCase.assertFalse(c_int_value == c_num_value);
+// }
+// void test_isValidSymbol() {
+// JUnitTestCase.assertTrue(ConstantValueComputer.isValidPublicSymbol(""));
+// JUnitTestCase.assertTrue(ConstantValueComputer.isValidPublicSymbol("foo"));
+// JUnitTestCase.assertTrue(ConstantValueComputer.isValidPublicSymbol("foo.bar"));
+// JUnitTestCase.assertTrue(ConstantValueComputer.isValidPublicSymbol("foo\$"));
+// JUnitTestCase.assertTrue(ConstantValueComputer.isValidPublicSymbol("foo\$bar"));
+// JUnitTestCase.assertTrue(ConstantValueComputer.isValidPublicSymbol("iff"));
+// JUnitTestCase.assertTrue(ConstantValueComputer.isValidPublicSymbol("gif"));
+// JUnitTestCase.assertTrue(ConstantValueComputer.isValidPublicSymbol("if\$"));
+// JUnitTestCase.assertTrue(ConstantValueComputer.isValidPublicSymbol("\$if"));
+// JUnitTestCase.assertTrue(ConstantValueComputer.isValidPublicSymbol("foo="));
+// JUnitTestCase.assertTrue(ConstantValueComputer.isValidPublicSymbol("foo.bar="));
+// JUnitTestCase.assertTrue(ConstantValueComputer.isValidPublicSymbol("foo.+"));
+// JUnitTestCase.assertTrue(ConstantValueComputer.isValidPublicSymbol("void"));
+// JUnitTestCase.assertFalse(ConstantValueComputer.isValidPublicSymbol("_foo"));
+// JUnitTestCase.assertFalse(ConstantValueComputer.isValidPublicSymbol("_foo.bar"));
+// JUnitTestCase.assertFalse(ConstantValueComputer.isValidPublicSymbol("foo._bar"));
+// JUnitTestCase.assertFalse(ConstantValueComputer.isValidPublicSymbol("if"));
+// JUnitTestCase.assertFalse(ConstantValueComputer.isValidPublicSymbol("if.foo"));
+// JUnitTestCase.assertFalse(ConstantValueComputer.isValidPublicSymbol("foo.if"));
+// JUnitTestCase.assertFalse(ConstantValueComputer.isValidPublicSymbol("foo=.bar"));
+// JUnitTestCase.assertFalse(ConstantValueComputer.isValidPublicSymbol("foo."));
+// JUnitTestCase.assertFalse(ConstantValueComputer.isValidPublicSymbol("+.foo"));
+// JUnitTestCase.assertFalse(ConstantValueComputer.isValidPublicSymbol("void.foo"));
+// JUnitTestCase.assertFalse(ConstantValueComputer.isValidPublicSymbol("foo.void"));
+// }
+// void test_symbolLiteral_void() {
+// CompilationUnit compilationUnit = resolveSource(EngineTestCase.createSource(["const voidSymbol = #void;"]));
+// VariableDeclaration voidSymbol = findTopLevelDeclaration(compilationUnit, "voidSymbol");
+// EvaluationResultImpl voidSymbolResult = (voidSymbol.element as VariableElementImpl).evaluationResult;
+// DartObjectImpl value = (voidSymbolResult as ValidResult).value;
+// JUnitTestCase.assertEquals(typeProvider.symbolType, value.type);
+// JUnitTestCase.assertEquals("void", value.value);
+// }
+// HashMap<String, DartObjectImpl> _assertFieldType(HashMap<String, DartObjectImpl> fields, String fieldName, String expectedType) {
+// DartObjectImpl field = fields[fieldName];
+// JUnitTestCase.assertEquals(expectedType, field.type.displayName);
+// return field.fields;
+// }
+// void _assertIntField(HashMap<String, DartObjectImpl> fields, String fieldName, int expectedValue) {
+// DartObjectImpl field = fields[fieldName];
+// JUnitTestCase.assertEquals("int", field.type.name);
+// JUnitTestCase.assertEquals(expectedValue, field.intValue.longValue());
+// }
+// void _assertNullField(HashMap<String, DartObjectImpl> fields, String fieldName) {
+// DartObjectImpl field = fields[fieldName];
+// JUnitTestCase.assertTrue(field.isNull);
+// }
+// void _assertProperDependencies(String sourceText, List<ErrorCode> expectedErrorCodes) {
+// Source source = addSource(sourceText);
+// LibraryElement element = resolve(source);
+// CompilationUnit unit = analysisContext.resolveCompilationUnit(source, element);
+// JUnitTestCase.assertNotNull(unit);
+// ConstantValueComputer computer = _makeConstantValueComputer();
+// computer.add(unit);
+// computer.computeValues();
+// assertErrors(source, expectedErrorCodes);
+// }
+// HashMap<String, DartObjectImpl> _assertType(EvaluationResultImpl result, String typeName) {
+// EngineTestCase.assertInstanceOf((obj) => obj is ValidResult, ValidResult, result);
+// DartObjectImpl value = (result as ValidResult).value;
+// JUnitTestCase.assertEquals(typeName, value.type.displayName);
+// return value.fields;
+// }
+// bool _assertValidBool(EvaluationResultImpl result) {
+// EngineTestCase.assertInstanceOf((obj) => obj is ValidResult, ValidResult, result);
+// DartObjectImpl value = (result as ValidResult).value;
+// JUnitTestCase.assertEquals(typeProvider.boolType, value.type);
+// bool boolValue = value.boolValue;
+// JUnitTestCase.assertNotNull(boolValue);
+// return boolValue;
+// }
+// int _assertValidInt(EvaluationResultImpl result) {
+// EngineTestCase.assertInstanceOf((obj) => obj is ValidResult, ValidResult, result);
+// DartObjectImpl value = (result as ValidResult).value;
+// JUnitTestCase.assertEquals(typeProvider.intType, value.type);
+// return value.intValue;
+// }
+// void _assertValidNull(EvaluationResultImpl result) {
+// EngineTestCase.assertInstanceOf((obj) => obj is ValidResult, ValidResult, result);
+// DartObjectImpl value = (result as ValidResult).value;
+// JUnitTestCase.assertEquals(typeProvider.nullType, value.type);
+// }
+// String _assertValidString(EvaluationResultImpl result) {
+// EngineTestCase.assertInstanceOf((obj) => obj is ValidResult, ValidResult, result);
+// DartObjectImpl value = (result as ValidResult).value;
+// JUnitTestCase.assertEquals(typeProvider.stringType, value.type);
+// return value.stringValue;
+// }
+// void _assertValidUnknown(EvaluationResultImpl result) {
+// EngineTestCase.assertInstanceOf((obj) => obj is ValidResult, ValidResult, result);
+// DartObjectImpl value = (result as ValidResult).value;
+// JUnitTestCase.assertTrue(value.isUnknown);
+// }
+// EvaluationResultImpl _check_fromEnvironment_bool(String valueInEnvironment, String defaultExpr) {
+// String envVarName = "x";
+// String varName = "foo";
+// if (valueInEnvironment != null) {
+// analysisContext2.declaredVariables.define(envVarName, valueInEnvironment);
+// }
+// String defaultArg = defaultExpr == null ? "" : ", defaultValue: ${defaultExpr}";
+// CompilationUnit compilationUnit = resolveSource(EngineTestCase.createSource(["const ${varName} = const bool.fromEnvironment('${envVarName}'${defaultArg});"]));
+// return _evaluateInstanceCreationExpression(compilationUnit, varName);
+// }
+// EvaluationResultImpl _check_fromEnvironment_int(String valueInEnvironment, String defaultExpr) {
+// String envVarName = "x";
+// String varName = "foo";
+// if (valueInEnvironment != null) {
+// analysisContext2.declaredVariables.define(envVarName, valueInEnvironment);
+// }
+// String defaultArg = defaultExpr == null ? "" : ", defaultValue: ${defaultExpr}";
+// CompilationUnit compilationUnit = resolveSource(EngineTestCase.createSource(["const ${varName} = const int.fromEnvironment('${envVarName}'${defaultArg});"]));
+// return _evaluateInstanceCreationExpression(compilationUnit, varName);
+// }
+// EvaluationResultImpl _check_fromEnvironment_string(String valueInEnvironment, String defaultExpr) {
+// String envVarName = "x";
+// String varName = "foo";
+// if (valueInEnvironment != null) {
+// analysisContext2.declaredVariables.define(envVarName, valueInEnvironment);
+// }
+// String defaultArg = defaultExpr == null ? "" : ", defaultValue: ${defaultExpr}";
+// CompilationUnit compilationUnit = resolveSource(EngineTestCase.createSource(["const ${varName} = const String.fromEnvironment('${envVarName}'${defaultArg});"]));
+// return _evaluateInstanceCreationExpression(compilationUnit, varName);
+// }
+// void _checkInstanceCreation_withSupertypeParams(bool isExplicit) {
+// String superCall = isExplicit ? " : super()" : "";
+// CompilationUnit compilationUnit = resolveSource(EngineTestCase.createSource([
+// "class A<T> {",
+// " const A();",
+// "}",
+// "class B<T, U> extends A<T> {",
+// " const B()${superCall};",
+// "}",
+// "class C<T, U> extends A<U> {",
+// " const C()${superCall};",
+// "}",
+// "const b_int_num = const B<int, num>();",
+// "const c_int_num = const C<int, num>();"]));
+// EvaluationResultImpl b_int_num = _evaluateInstanceCreationExpression(compilationUnit, "b_int_num");
+// HashMap<String, DartObjectImpl> b_int_num_fields = _assertType(b_int_num, "B<int, num>");
+// _assertFieldType(b_int_num_fields, GenericState.SUPERCLASS_FIELD, "A<int>");
+// EvaluationResultImpl c_int_num = _evaluateInstanceCreationExpression(compilationUnit, "c_int_num");
+// HashMap<String, DartObjectImpl> c_int_num_fields = _assertType(c_int_num, "C<int, num>");
+// _assertFieldType(c_int_num_fields, GenericState.SUPERCLASS_FIELD, "A<num>");
+// }
+// void _checkInstanceCreationOptionalParams(bool isFieldFormal, bool isNamed, bool hasDefault) {
+// String fieldName = "j";
+// String paramName = isFieldFormal ? fieldName : "i";
+// String formalParam = "${(isFieldFormal ? "this." : "int ")}${paramName}${(hasDefault ? " = 3" : "")}";
+// CompilationUnit compilationUnit = resolveSource(EngineTestCase.createSource([
+// "const x = const A();",
+// "const y = const A(${(isNamed ? "${paramName}: " : "")}10);",
+// "class A {",
+// " const A(${(isNamed ? "{${formalParam}}" : "[${formalParam}]")})${(isFieldFormal ? "" : " : ${fieldName} = ${paramName}")};",
+// " final int ${fieldName};",
+// "}"]));
+// EvaluationResultImpl x = _evaluateInstanceCreationExpression(compilationUnit, "x");
+// HashMap<String, DartObjectImpl> fieldsOfX = _assertType(x, "A");
+// EngineTestCase.assertSizeOfMap(1, fieldsOfX);
+// if (hasDefault) {
+// _assertIntField(fieldsOfX, fieldName, 3);
+// } else {
+// _assertNullField(fieldsOfX, fieldName);
+// }
+// EvaluationResultImpl y = _evaluateInstanceCreationExpression(compilationUnit, "y");
+// HashMap<String, DartObjectImpl> fieldsOfY = _assertType(y, "A");
+// EngineTestCase.assertSizeOfMap(1, fieldsOfY);
+// _assertIntField(fieldsOfY, fieldName, 10);
+// }
+// EvaluationResultImpl _evaluateInstanceCreationExpression(CompilationUnit compilationUnit, String name) {
+// Expression expression = findTopLevelConstantExpression(compilationUnit, name);
+// return (expression as InstanceCreationExpression).evaluationResult;
+// }
+// ConstantValueComputer _makeConstantValueComputer() => new ConstantValueComputerTest_ValidatingConstantValueComputer(new TestTypeProvider(), analysisContext2.declaredVariables);
+// void _validate(bool shouldBeValid, VariableDeclarationList declarationList) {
+// for (VariableDeclaration declaration in declarationList.variables) {
+// VariableElementImpl element = declaration.element as VariableElementImpl;
+// JUnitTestCase.assertNotNull(element);
+// EvaluationResultImpl result = element.evaluationResult;
+// if (shouldBeValid) {
+// EngineTestCase.assertInstanceOf((obj) => obj is ValidResult, ValidResult, result);
+// Object value = (result as ValidResult).value;
+// JUnitTestCase.assertNotNull(value);
+// } else {
+// EngineTestCase.assertInstanceOf((obj) => obj is ErrorResult, ErrorResult, result);
+// }
+// }
+// }
+// static dartSuite() {
+// _ut.group('ConstantValueComputerTest', () {
+// _ut.test('test_computeValues_cycle', () {
+// final __test = new ConstantValueComputerTest();
+// runJUnitTest(__test, __test.test_computeValues_cycle);
+// });
+// _ut.test('test_computeValues_dependentVariables', () {
+// final __test = new ConstantValueComputerTest();
+// runJUnitTest(__test, __test.test_computeValues_dependentVariables);
+// });
+// _ut.test('test_computeValues_empty', () {
+// final __test = new ConstantValueComputerTest();
+// runJUnitTest(__test, __test.test_computeValues_empty);
+// });
+// _ut.test('test_computeValues_multipleSources', () {
+// final __test = new ConstantValueComputerTest();
+// runJUnitTest(__test, __test.test_computeValues_multipleSources);
+// });
+// _ut.test('test_computeValues_singleVariable', () {
+// final __test = new ConstantValueComputerTest();
+// runJUnitTest(__test, __test.test_computeValues_singleVariable);
+// });
+// _ut.test('test_dependencyOnConstructor', () {
+// final __test = new ConstantValueComputerTest();
+// runJUnitTest(__test, __test.test_dependencyOnConstructor);
+// });
+// _ut.test('test_dependencyOnConstructorArgument', () {
+// final __test = new ConstantValueComputerTest();
+// runJUnitTest(__test, __test.test_dependencyOnConstructorArgument);
+// });
+// _ut.test('test_dependencyOnConstructorArgument_unresolvedConstructor', () {
+// final __test = new ConstantValueComputerTest();
+// runJUnitTest(__test, __test.test_dependencyOnConstructorArgument_unresolvedConstructor);
+// });
+// _ut.test('test_dependencyOnConstructorInitializer', () {
+// final __test = new ConstantValueComputerTest();
+// runJUnitTest(__test, __test.test_dependencyOnConstructorInitializer);
+// });
+// _ut.test('test_dependencyOnExplicitSuperConstructor', () {
+// final __test = new ConstantValueComputerTest();
+// runJUnitTest(__test, __test.test_dependencyOnExplicitSuperConstructor);
+// });
+// _ut.test('test_dependencyOnExplicitSuperConstructorParameters', () {
+// final __test = new ConstantValueComputerTest();
+// runJUnitTest(__test, __test.test_dependencyOnExplicitSuperConstructorParameters);
+// });
+// _ut.test('test_dependencyOnFactoryRedirect', () {
+// final __test = new ConstantValueComputerTest();
+// runJUnitTest(__test, __test.test_dependencyOnFactoryRedirect);
+// });
+// _ut.test('test_dependencyOnFactoryRedirectWithTypeParams', () {
+// final __test = new ConstantValueComputerTest();
+// runJUnitTest(__test, __test.test_dependencyOnFactoryRedirectWithTypeParams);
+// });
+// _ut.test('test_dependencyOnImplicitSuperConstructor', () {
+// final __test = new ConstantValueComputerTest();
+// runJUnitTest(__test, __test.test_dependencyOnImplicitSuperConstructor);
+// });
+// _ut.test('test_dependencyOnOptionalParameterDefault', () {
+// final __test = new ConstantValueComputerTest();
+// runJUnitTest(__test, __test.test_dependencyOnOptionalParameterDefault);
+// });
+// _ut.test('test_dependencyOnVariable', () {
+// final __test = new ConstantValueComputerTest();
+// runJUnitTest(__test, __test.test_dependencyOnVariable);
+// });
+// _ut.test('test_fromEnvironment_bool_default_false', () {
+// final __test = new ConstantValueComputerTest();
+// runJUnitTest(__test, __test.test_fromEnvironment_bool_default_false);
+// });
+// _ut.test('test_fromEnvironment_bool_default_overridden', () {
+// final __test = new ConstantValueComputerTest();
+// runJUnitTest(__test, __test.test_fromEnvironment_bool_default_overridden);
+// });
+// _ut.test('test_fromEnvironment_bool_default_parseError', () {
+// final __test = new ConstantValueComputerTest();
+// runJUnitTest(__test, __test.test_fromEnvironment_bool_default_parseError);
+// });
+// _ut.test('test_fromEnvironment_bool_default_true', () {
+// final __test = new ConstantValueComputerTest();
+// runJUnitTest(__test, __test.test_fromEnvironment_bool_default_true);
+// });
+// _ut.test('test_fromEnvironment_bool_false', () {
+// final __test = new ConstantValueComputerTest();
+// runJUnitTest(__test, __test.test_fromEnvironment_bool_false);
+// });
+// _ut.test('test_fromEnvironment_bool_parseError', () {
+// final __test = new ConstantValueComputerTest();
+// runJUnitTest(__test, __test.test_fromEnvironment_bool_parseError);
+// });
+// _ut.test('test_fromEnvironment_bool_true', () {
+// final __test = new ConstantValueComputerTest();
+// runJUnitTest(__test, __test.test_fromEnvironment_bool_true);
+// });
+// _ut.test('test_fromEnvironment_bool_undeclared', () {
+// final __test = new ConstantValueComputerTest();
+// runJUnitTest(__test, __test.test_fromEnvironment_bool_undeclared);
+// });
+// _ut.test('test_fromEnvironment_int_default_overridden', () {
+// final __test = new ConstantValueComputerTest();
+// runJUnitTest(__test, __test.test_fromEnvironment_int_default_overridden);
+// });
+// _ut.test('test_fromEnvironment_int_default_parseError', () {
+// final __test = new ConstantValueComputerTest();
+// runJUnitTest(__test, __test.test_fromEnvironment_int_default_parseError);
+// });
+// _ut.test('test_fromEnvironment_int_default_undeclared', () {
+// final __test = new ConstantValueComputerTest();
+// runJUnitTest(__test, __test.test_fromEnvironment_int_default_undeclared);
+// });
+// _ut.test('test_fromEnvironment_int_ok', () {
+// final __test = new ConstantValueComputerTest();
+// runJUnitTest(__test, __test.test_fromEnvironment_int_ok);
+// });
+// _ut.test('test_fromEnvironment_int_parseError', () {
+// final __test = new ConstantValueComputerTest();
+// runJUnitTest(__test, __test.test_fromEnvironment_int_parseError);
+// });
+// _ut.test('test_fromEnvironment_int_parseError_nullDefault', () {
+// final __test = new ConstantValueComputerTest();
+// runJUnitTest(__test, __test.test_fromEnvironment_int_parseError_nullDefault);
+// });
+// _ut.test('test_fromEnvironment_int_undeclared', () {
+// final __test = new ConstantValueComputerTest();
+// runJUnitTest(__test, __test.test_fromEnvironment_int_undeclared);
+// });
+// _ut.test('test_fromEnvironment_int_undeclared_nullDefault', () {
+// final __test = new ConstantValueComputerTest();
+// runJUnitTest(__test, __test.test_fromEnvironment_int_undeclared_nullDefault);
+// });
+// _ut.test('test_fromEnvironment_string_default_overridden', () {
+// final __test = new ConstantValueComputerTest();
+// runJUnitTest(__test, __test.test_fromEnvironment_string_default_overridden);
+// });
+// _ut.test('test_fromEnvironment_string_default_undeclared', () {
+// final __test = new ConstantValueComputerTest();
+// runJUnitTest(__test, __test.test_fromEnvironment_string_default_undeclared);
+// });
+// _ut.test('test_fromEnvironment_string_empty', () {
+// final __test = new ConstantValueComputerTest();
+// runJUnitTest(__test, __test.test_fromEnvironment_string_empty);
+// });
+// _ut.test('test_fromEnvironment_string_ok', () {
+// final __test = new ConstantValueComputerTest();
+// runJUnitTest(__test, __test.test_fromEnvironment_string_ok);
+// });
+// _ut.test('test_fromEnvironment_string_undeclared', () {
+// final __test = new ConstantValueComputerTest();
+// runJUnitTest(__test, __test.test_fromEnvironment_string_undeclared);
+// });
+// _ut.test('test_fromEnvironment_string_undeclared_nullDefault', () {
+// final __test = new ConstantValueComputerTest();
+// runJUnitTest(__test, __test.test_fromEnvironment_string_undeclared_nullDefault);
+// });
+// _ut.test('test_instanceCreationExpression_computedField', () {
+// final __test = new ConstantValueComputerTest();
+// runJUnitTest(__test, __test.test_instanceCreationExpression_computedField);
+// });
+// _ut.test('test_instanceCreationExpression_computedField_namedOptionalWithDefault', () {
+// final __test = new ConstantValueComputerTest();
+// runJUnitTest(__test, __test.test_instanceCreationExpression_computedField_namedOptionalWithDefault);
+// });
+// _ut.test('test_instanceCreationExpression_computedField_namedOptionalWithoutDefault', () {
+// final __test = new ConstantValueComputerTest();
+// runJUnitTest(__test, __test.test_instanceCreationExpression_computedField_namedOptionalWithoutDefault);
+// });
+// _ut.test('test_instanceCreationExpression_computedField_unnamedOptionalWithDefault', () {
+// final __test = new ConstantValueComputerTest();
+// runJUnitTest(__test, __test.test_instanceCreationExpression_computedField_unnamedOptionalWithDefault);
+// });
+// _ut.test('test_instanceCreationExpression_computedField_unnamedOptionalWithoutDefault', () {
+// final __test = new ConstantValueComputerTest();
+// runJUnitTest(__test, __test.test_instanceCreationExpression_computedField_unnamedOptionalWithoutDefault);
+// });
+// _ut.test('test_instanceCreationExpression_computedField_usesConstConstructor', () {
+// final __test = new ConstantValueComputerTest();
+// runJUnitTest(__test, __test.test_instanceCreationExpression_computedField_usesConstConstructor);
+// });
+// _ut.test('test_instanceCreationExpression_computedField_usesStaticConst', () {
+// final __test = new ConstantValueComputerTest();
+// runJUnitTest(__test, __test.test_instanceCreationExpression_computedField_usesStaticConst);
+// });
+// _ut.test('test_instanceCreationExpression_computedField_usesToplevelConst', () {
+// final __test = new ConstantValueComputerTest();
+// runJUnitTest(__test, __test.test_instanceCreationExpression_computedField_usesToplevelConst);
+// });
+// _ut.test('test_instanceCreationExpression_explicitSuper', () {
+// final __test = new ConstantValueComputerTest();
+// runJUnitTest(__test, __test.test_instanceCreationExpression_explicitSuper);
+// });
+// _ut.test('test_instanceCreationExpression_fieldFormalParameter', () {
+// final __test = new ConstantValueComputerTest();
+// runJUnitTest(__test, __test.test_instanceCreationExpression_fieldFormalParameter);
+// });
+// _ut.test('test_instanceCreationExpression_fieldFormalParameter_namedOptionalWithDefault', () {
+// final __test = new ConstantValueComputerTest();
+// runJUnitTest(__test, __test.test_instanceCreationExpression_fieldFormalParameter_namedOptionalWithDefault);
+// });
+// _ut.test('test_instanceCreationExpression_fieldFormalParameter_namedOptionalWithoutDefault', () {
+// final __test = new ConstantValueComputerTest();
+// runJUnitTest(__test, __test.test_instanceCreationExpression_fieldFormalParameter_namedOptionalWithoutDefault);
+// });
+// _ut.test('test_instanceCreationExpression_fieldFormalParameter_unnamedOptionalWithDefault', () {
+// final __test = new ConstantValueComputerTest();
+// runJUnitTest(__test, __test.test_instanceCreationExpression_fieldFormalParameter_unnamedOptionalWithDefault);
+// });
+// _ut.test('test_instanceCreationExpression_fieldFormalParameter_unnamedOptionalWithoutDefault', () {
+// final __test = new ConstantValueComputerTest();
+// runJUnitTest(__test, __test.test_instanceCreationExpression_fieldFormalParameter_unnamedOptionalWithoutDefault);
+// });
+// _ut.test('test_instanceCreationExpression_implicitSuper', () {
+// final __test = new ConstantValueComputerTest();
+// runJUnitTest(__test, __test.test_instanceCreationExpression_implicitSuper);
+// });
+// _ut.test('test_instanceCreationExpression_redirect', () {
+// final __test = new ConstantValueComputerTest();
+// runJUnitTest(__test, __test.test_instanceCreationExpression_redirect);
+// });
+// _ut.test('test_instanceCreationExpression_redirectWithTypeParams', () {
+// final __test = new ConstantValueComputerTest();
+// runJUnitTest(__test, __test.test_instanceCreationExpression_redirectWithTypeParams);
+// });
+// _ut.test('test_instanceCreationExpression_redirectWithTypeSubstitution', () {
+// final __test = new ConstantValueComputerTest();
+// runJUnitTest(__test, __test.test_instanceCreationExpression_redirectWithTypeSubstitution);
+// });
+// _ut.test('test_instanceCreationExpression_redirect_cycle', () {
+// final __test = new ConstantValueComputerTest();
+// runJUnitTest(__test, __test.test_instanceCreationExpression_redirect_cycle);
+// });
+// _ut.test('test_instanceCreationExpression_redirect_extern', () {
+// final __test = new ConstantValueComputerTest();
+// runJUnitTest(__test, __test.test_instanceCreationExpression_redirect_extern);
+// });
+// _ut.test('test_instanceCreationExpression_redirect_nonConst', () {
+// final __test = new ConstantValueComputerTest();
+// runJUnitTest(__test, __test.test_instanceCreationExpression_redirect_nonConst);
+// });
+// _ut.test('test_instanceCreationExpression_symbol', () {
+// final __test = new ConstantValueComputerTest();
+// runJUnitTest(__test, __test.test_instanceCreationExpression_symbol);
+// });
+// _ut.test('test_instanceCreationExpression_withSupertypeParams_explicit', () {
+// final __test = new ConstantValueComputerTest();
+// runJUnitTest(__test, __test.test_instanceCreationExpression_withSupertypeParams_explicit);
+// });
+// _ut.test('test_instanceCreationExpression_withSupertypeParams_implicit', () {
+// final __test = new ConstantValueComputerTest();
+// runJUnitTest(__test, __test.test_instanceCreationExpression_withSupertypeParams_implicit);
+// });
+// _ut.test('test_instanceCreationExpression_withTypeParams', () {
+// final __test = new ConstantValueComputerTest();
+// runJUnitTest(__test, __test.test_instanceCreationExpression_withTypeParams);
+// });
+// _ut.test('test_isValidSymbol', () {
+// final __test = new ConstantValueComputerTest();
+// runJUnitTest(__test, __test.test_isValidSymbol);
+// });
+// _ut.test('test_symbolLiteral_void', () {
+// final __test = new ConstantValueComputerTest();
+// runJUnitTest(__test, __test.test_symbolLiteral_void);
+// });
+// });
+// }
+// }
+// class ConstantValueComputerTest_ValidatingConstantValueComputer extends ConstantValueComputer {
+// AstNode _nodeBeingEvaluated;
+// ConstantValueComputerTest_ValidatingConstantValueComputer(TypeProvider typeProvider, DeclaredVariables declaredVariables) : super(typeProvider, declaredVariables);
+// @override
+// void beforeComputeValue(AstNode constNode) {
+// super.beforeComputeValue(constNode);
+// _nodeBeingEvaluated = constNode;
+// }
+// @override
+// void beforeGetConstantInitializers(ConstructorElement constructor) {
+// super.beforeGetConstantInitializers(constructor);
+// // If we are getting the constant initializers for a node in the graph, make sure we properly
+// // recorded the dependency.
+// ConstructorDeclaration node = findConstructorDeclaration(constructor);
+// if (node != null && referenceGraph.nodes.contains(node)) {
+// JUnitTestCase.assertTrue(referenceGraph.containsPath(_nodeBeingEvaluated, node));
+// }
+// }
+// @override
+// void beforeGetParameterDefault(ParameterElement parameter) {
+// super.beforeGetParameterDefault(parameter);
+// // Find the ConstructorElement and figure out which parameter we're talking about.
+// ConstructorElement constructor = parameter.getAncestor((element) => element is ConstructorElement);
+// int parameterIndex;
+// List<ParameterElement> parameters = constructor.parameters;
+// int numParameters = parameters.length;
+// for (parameterIndex = 0; parameterIndex < numParameters; parameterIndex++) {
+// if (identical(parameters[parameterIndex], parameter)) {
+// break;
+// }
+// }
+// JUnitTestCase.assertTrue(parameterIndex < numParameters);
+// // If we are getting the default parameter for a constructor in the graph, make sure we properly
+// // recorded the dependency on the parameter.
+// ConstructorDeclaration constructorNode = constructorDeclarationMap[constructor];
+// if (constructorNode != null) {
+// FormalParameter parameterNode = constructorNode.parameters.parameters[parameterIndex];
+// JUnitTestCase.assertTrue(referenceGraph.nodes.contains(parameterNode));
+// JUnitTestCase.assertTrue(referenceGraph.containsPath(_nodeBeingEvaluated, parameterNode));
+// }
+// }
+// @override
+// ConstantVisitor createConstantVisitor() => new ConstantValueComputerTest_ValidatingConstantVisitor(typeProvider, referenceGraph, _nodeBeingEvaluated);
+// }
+// class ConstantValueComputerTest_ValidatingConstantVisitor extends ConstantVisitor {
+// final DirectedGraph<AstNode> _referenceGraph;
+// final AstNode _nodeBeingEvaluated;
+// ConstantValueComputerTest_ValidatingConstantVisitor(TypeProvider typeProvider, this._referenceGraph, this._nodeBeingEvaluated) : super.con1(typeProvider);
+// @override
+// void beforeGetEvaluationResult(AstNode node) {
+// super.beforeGetEvaluationResult(node);
+// // If we are getting the evaluation result for a node in the graph, make sure we properly
+// // recorded the dependency.
+// if (_referenceGraph.nodes.contains(node)) {
+// JUnitTestCase.assertTrue(_referenceGraph.containsPath(_nodeBeingEvaluated, node));
+// }
+// }
+// }
+// class ConstantVisitorTest extends ResolverTestCase {
+// void test_visitConditionalExpression_false() {
+// Expression thenExpression = AstFactory.integer(1);
+// Expression elseExpression = AstFactory.integer(0);
+// ConditionalExpression expression = AstFactory.conditionalExpression(AstFactory.booleanLiteral(false), thenExpression, elseExpression);
+// _assertValue(0, expression.accept(new ConstantVisitor.con1(new TestTypeProvider())));
+// }
+// void test_visitConditionalExpression_instanceCreation_invalidFieldInitializer() {
+// TestTypeProvider typeProvider = new TestTypeProvider();
+// LibraryElementImpl libraryElement = ElementFactory.library(null, "lib");
+// String className = "C";
+// ClassElementImpl classElement = ElementFactory.classElement2(className, []);
+// (libraryElement.definingCompilationUnit as CompilationUnitElementImpl).types = <ClassElement> [classElement];
+// ConstructorElementImpl constructorElement = ElementFactory.constructorElement(classElement, null, true, [typeProvider.intType]);
+// constructorElement.parameters[0] = new FieldFormalParameterElementImpl(AstFactory.identifier3("x"));
+// InstanceCreationExpression expression = AstFactory.instanceCreationExpression2(Keyword.CONST, AstFactory.typeName4(className, []), [AstFactory.integer(0)]);
+// expression.staticElement = constructorElement;
+// expression.accept(new ConstantVisitor.con1(typeProvider));
+// }
+// void test_visitConditionalExpression_nonBooleanCondition() {
+// Expression thenExpression = AstFactory.integer(1);
+// Expression elseExpression = AstFactory.integer(0);
+// ConditionalExpression expression = AstFactory.conditionalExpression(AstFactory.nullLiteral(), thenExpression, elseExpression);
+// EvaluationResultImpl result = expression.accept(new ConstantVisitor.con1(new TestTypeProvider()));
+// EngineTestCase.assertInstanceOf((obj) => obj is ErrorResult, ErrorResult, result);
+// }
+// void test_visitConditionalExpression_nonConstantElse() {
+// Expression thenExpression = AstFactory.integer(1);
+// Expression elseExpression = AstFactory.identifier3("x");
+// ConditionalExpression expression = AstFactory.conditionalExpression(AstFactory.booleanLiteral(true), thenExpression, elseExpression);
+// EvaluationResultImpl result = expression.accept(new ConstantVisitor.con1(new TestTypeProvider()));
+// EngineTestCase.assertInstanceOf((obj) => obj is ErrorResult, ErrorResult, result);
+// }
+// void test_visitConditionalExpression_nonConstantThen() {
+// Expression thenExpression = AstFactory.identifier3("x");
+// Expression elseExpression = AstFactory.integer(0);
+// ConditionalExpression expression = AstFactory.conditionalExpression(AstFactory.booleanLiteral(true), thenExpression, elseExpression);
+// EvaluationResultImpl result = expression.accept(new ConstantVisitor.con1(new TestTypeProvider()));
+// EngineTestCase.assertInstanceOf((obj) => obj is ErrorResult, ErrorResult, result);
+// }
+// void test_visitConditionalExpression_true() {
+// Expression thenExpression = AstFactory.integer(1);
+// Expression elseExpression = AstFactory.integer(0);
+// ConditionalExpression expression = AstFactory.conditionalExpression(AstFactory.booleanLiteral(true), thenExpression, elseExpression);
+// _assertValue(1, expression.accept(new ConstantVisitor.con1(new TestTypeProvider())));
+// }
+// void test_visitSimpleIdentifier_inEnvironment() {
+// CompilationUnit compilationUnit = resolveSource(EngineTestCase.createSource(["const a = b;", "const b = 3;"]));
+// HashMap<String, DartObjectImpl> environment = new HashMap<String, DartObjectImpl>();
+// DartObjectImpl six = new DartObjectImpl(typeProvider.intType, new IntState(6));
+// environment["b"] = six;
+// _assertValue(6, _evaluateConstant(compilationUnit, "a", environment));
+// }
+// void test_visitSimpleIdentifier_notInEnvironment() {
+// CompilationUnit compilationUnit = resolveSource(EngineTestCase.createSource(["const a = b;", "const b = 3;"]));
+// HashMap<String, DartObjectImpl> environment = new HashMap<String, DartObjectImpl>();
+// DartObjectImpl six = new DartObjectImpl(typeProvider.intType, new IntState(6));
+// environment["c"] = six;
+// _assertValue(3, _evaluateConstant(compilationUnit, "a", environment));
+// }
+// void test_visitSimpleIdentifier_withoutEnvironment() {
+// CompilationUnit compilationUnit = resolveSource(EngineTestCase.createSource(["const a = b;", "const b = 3;"]));
+// _assertValue(3, _evaluateConstant(compilationUnit, "a", null));
+// }
+// void _assertValue(int expectedValue, EvaluationResultImpl result) {
+// EngineTestCase.assertInstanceOf((obj) => obj is ValidResult, ValidResult, result);
+// DartObjectImpl value = (result as ValidResult).value;
+// JUnitTestCase.assertEquals("int", value.type.name);
+// JUnitTestCase.assertEquals(expectedValue, value.intValue.longValue());
+// }
+// EvaluationResultImpl _evaluateConstant(CompilationUnit compilationUnit, String name, HashMap<String, DartObjectImpl> lexicalEnvironment) {
+// Expression expression = findTopLevelConstantExpression(compilationUnit, name);
+// return expression.accept(new ConstantVisitor.con2(typeProvider, lexicalEnvironment));
+// }
+// static dartSuite() {
+// _ut.group('ConstantVisitorTest', () {
+// _ut.test('test_visitConditionalExpression_false', () {
+// final __test = new ConstantVisitorTest();
+// runJUnitTest(__test, __test.test_visitConditionalExpression_false);
+// });
+// _ut.test('test_visitConditionalExpression_instanceCreation_invalidFieldInitializer', () {
+// final __test = new ConstantVisitorTest();
+// runJUnitTest(__test, __test.test_visitConditionalExpression_instanceCreation_invalidFieldInitializer);
+// });
+// _ut.test('test_visitConditionalExpression_nonBooleanCondition', () {
+// final __test = new ConstantVisitorTest();
+// runJUnitTest(__test, __test.test_visitConditionalExpression_nonBooleanCondition);
+// });
+// _ut.test('test_visitConditionalExpression_nonConstantElse', () {
+// final __test = new ConstantVisitorTest();
+// runJUnitTest(__test, __test.test_visitConditionalExpression_nonConstantElse);
+// });
+// _ut.test('test_visitConditionalExpression_nonConstantThen', () {
+// final __test = new ConstantVisitorTest();
+// runJUnitTest(__test, __test.test_visitConditionalExpression_nonConstantThen);
+// });
+// _ut.test('test_visitConditionalExpression_true', () {
+// final __test = new ConstantVisitorTest();
+// runJUnitTest(__test, __test.test_visitConditionalExpression_true);
+// });
+// _ut.test('test_visitSimpleIdentifier_inEnvironment', () {
+// final __test = new ConstantVisitorTest();
+// runJUnitTest(__test, __test.test_visitSimpleIdentifier_inEnvironment);
+// });
+// _ut.test('test_visitSimpleIdentifier_notInEnvironment', () {
+// final __test = new ConstantVisitorTest();
+// runJUnitTest(__test, __test.test_visitSimpleIdentifier_notInEnvironment);
+// });
+// _ut.test('test_visitSimpleIdentifier_withoutEnvironment', () {
+// final __test = new ConstantVisitorTest();
+// runJUnitTest(__test, __test.test_visitSimpleIdentifier_withoutEnvironment);
+// });
+// });
+// }
+// }
+// class ContentCacheTest extends JUnitTestCase {
+// void test_setContents() {
+// Source source = new TestSource();
+// ContentCache cache = new ContentCache();
+// JUnitTestCase.assertNull(cache.getContents(source));
+// JUnitTestCase.assertNull(cache.getModificationStamp(source));
+// String contents = "library lib;";
+// JUnitTestCase.assertNull(cache.setContents(source, contents));
+// JUnitTestCase.assertEquals(contents, cache.getContents(source));
+// JUnitTestCase.assertNotNull(cache.getModificationStamp(source));
+// JUnitTestCase.assertEquals(contents, cache.setContents(source, contents));
+// JUnitTestCase.assertEquals(contents, cache.setContents(source, null));
+// JUnitTestCase.assertNull(cache.getContents(source));
+// JUnitTestCase.assertNull(cache.getModificationStamp(source));
+// JUnitTestCase.assertNull(cache.setContents(source, null));
+// }
+// static dartSuite() {
+// _ut.group('ContentCacheTest', () {
+// _ut.test('test_setContents', () {
+// final __test = new ContentCacheTest();
+// runJUnitTest(__test, __test.test_setContents);
+// });
+// });
+// }
+// }
+// class DartObjectImplTest extends EngineTestCase {
+// TypeProvider _typeProvider = new TestTypeProvider();
+// void test_add_invalid_knownInt() {
+// _assertAdd(null, _stringValue("1"), _intValue(2));
+// }
+// void test_add_knownDouble_knownDouble() {
+// _assertAdd(_doubleValue(3.0), _doubleValue(1.0), _doubleValue(2.0));
+// }
+// void test_add_knownDouble_knownInt() {
+// _assertAdd(_doubleValue(3.0), _doubleValue(1.0), _intValue(2));
+// }
+// void test_add_knownDouble_unknownDouble() {
+// _assertAdd(_doubleValue(null), _doubleValue(1.0), _doubleValue(null));
+// }
+// void test_add_knownDouble_unknownInt() {
+// _assertAdd(_doubleValue(null), _doubleValue(1.0), _intValue(null));
+// }
+// void test_add_knownInt_invalid() {
+// _assertAdd(null, _intValue(1), _stringValue("2"));
+// }
+// void test_add_knownInt_knownInt() {
+// _assertAdd(_intValue(3), _intValue(1), _intValue(2));
+// }
+// void test_add_knownInt_unknownDouble() {
+// _assertAdd(_doubleValue(null), _intValue(1), _doubleValue(null));
+// }
+// void test_add_knownInt_unknownInt() {
+// _assertAdd(_intValue(null), _intValue(1), _intValue(null));
+// }
+// void test_add_unknownDouble_knownDouble() {
+// _assertAdd(_doubleValue(null), _doubleValue(null), _doubleValue(2.0));
+// }
+// void test_add_unknownDouble_knownInt() {
+// _assertAdd(_doubleValue(null), _doubleValue(null), _intValue(2));
+// }
+// void test_add_unknownInt_knownDouble() {
+// _assertAdd(_doubleValue(null), _intValue(null), _doubleValue(2.0));
+// }
+// void test_add_unknownInt_knownInt() {
+// _assertAdd(_intValue(null), _intValue(null), _intValue(2));
+// }
+// void test_bitAnd_invalid_knownInt() {
+// _assertBitAnd(null, _stringValue("6"), _intValue(3));
+// }
+// void test_bitAnd_knownInt_invalid() {
+// _assertBitAnd(null, _intValue(6), _stringValue("3"));
+// }
+// void test_bitAnd_knownInt_knownInt() {
+// _assertBitAnd(_intValue(2), _intValue(6), _intValue(3));
+// }
+// void test_bitAnd_knownInt_unknownInt() {
+// _assertBitAnd(_intValue(null), _intValue(6), _intValue(null));
+// }
+// void test_bitAnd_unknownInt_knownInt() {
+// _assertBitAnd(_intValue(null), _intValue(null), _intValue(3));
+// }
+// void test_bitAnd_unknownInt_unknownInt() {
+// _assertBitAnd(_intValue(null), _intValue(null), _intValue(null));
+// }
+// void test_bitNot_invalid() {
+// _assertBitNot(null, _stringValue("6"));
+// }
+// void test_bitNot_knownInt() {
+// _assertBitNot(_intValue(-4), _intValue(3));
+// }
+// void test_bitNot_unknownInt() {
+// _assertBitNot(_intValue(null), _intValue(null));
+// }
+// void test_bitOr_invalid_knownInt() {
+// _assertBitOr(null, _stringValue("6"), _intValue(3));
+// }
+// void test_bitOr_knownInt_invalid() {
+// _assertBitOr(null, _intValue(6), _stringValue("3"));
+// }
+// void test_bitOr_knownInt_knownInt() {
+// _assertBitOr(_intValue(7), _intValue(6), _intValue(3));
+// }
+// void test_bitOr_knownInt_unknownInt() {
+// _assertBitOr(_intValue(null), _intValue(6), _intValue(null));
+// }
+// void test_bitOr_unknownInt_knownInt() {
+// _assertBitOr(_intValue(null), _intValue(null), _intValue(3));
+// }
+// void test_bitOr_unknownInt_unknownInt() {
+// _assertBitOr(_intValue(null), _intValue(null), _intValue(null));
+// }
+// void test_bitXor_invalid_knownInt() {
+// _assertBitXor(null, _stringValue("6"), _intValue(3));
+// }
+// void test_bitXor_knownInt_invalid() {
+// _assertBitXor(null, _intValue(6), _stringValue("3"));
+// }
+// void test_bitXor_knownInt_knownInt() {
+// _assertBitXor(_intValue(5), _intValue(6), _intValue(3));
+// }
+// void test_bitXor_knownInt_unknownInt() {
+// _assertBitXor(_intValue(null), _intValue(6), _intValue(null));
+// }
+// void test_bitXor_unknownInt_knownInt() {
+// _assertBitXor(_intValue(null), _intValue(null), _intValue(3));
+// }
+// void test_bitXor_unknownInt_unknownInt() {
+// _assertBitXor(_intValue(null), _intValue(null), _intValue(null));
+// }
+// void test_concatenate_invalid_knownString() {
+// _assertConcatenate(null, _intValue(2), _stringValue("def"));
+// }
+// void test_concatenate_knownString_invalid() {
+// _assertConcatenate(null, _stringValue("abc"), _intValue(3));
+// }
+// void test_concatenate_knownString_knownString() {
+// _assertConcatenate(_stringValue("abcdef"), _stringValue("abc"), _stringValue("def"));
+// }
+// void test_concatenate_knownString_unknownString() {
+// _assertConcatenate(_stringValue(null), _stringValue("abc"), _stringValue(null));
+// }
+// void test_concatenate_unknownString_knownString() {
+// _assertConcatenate(_stringValue(null), _stringValue(null), _stringValue("def"));
+// }
+// void test_divide_invalid_knownInt() {
+// _assertDivide(null, _stringValue("6"), _intValue(2));
+// }
+// void test_divide_knownDouble_knownDouble() {
+// _assertDivide(_doubleValue(3.0), _doubleValue(6.0), _doubleValue(2.0));
+// }
+// void test_divide_knownDouble_knownInt() {
+// _assertDivide(_doubleValue(3.0), _doubleValue(6.0), _intValue(2));
+// }
+// void test_divide_knownDouble_unknownDouble() {
+// _assertDivide(_doubleValue(null), _doubleValue(6.0), _doubleValue(null));
+// }
+// void test_divide_knownDouble_unknownInt() {
+// _assertDivide(_doubleValue(null), _doubleValue(6.0), _intValue(null));
+// }
+// void test_divide_knownInt_invalid() {
+// _assertDivide(null, _intValue(6), _stringValue("2"));
+// }
+// void test_divide_knownInt_knownInt() {
+// _assertDivide(_intValue(3), _intValue(6), _intValue(2));
+// }
+// void test_divide_knownInt_unknownDouble() {
+// _assertDivide(_doubleValue(null), _intValue(6), _doubleValue(null));
+// }
+// void test_divide_knownInt_unknownInt() {
+// _assertDivide(_intValue(null), _intValue(6), _intValue(null));
+// }
+// void test_divide_unknownDouble_knownDouble() {
+// _assertDivide(_doubleValue(null), _doubleValue(null), _doubleValue(2.0));
+// }
+// void test_divide_unknownDouble_knownInt() {
+// _assertDivide(_doubleValue(null), _doubleValue(null), _intValue(2));
+// }
+// void test_divide_unknownInt_knownDouble() {
+// _assertDivide(_doubleValue(null), _intValue(null), _doubleValue(2.0));
+// }
+// void test_divide_unknownInt_knownInt() {
+// _assertDivide(_intValue(null), _intValue(null), _intValue(2));
+// }
+// void test_equalEqual_bool_false() {
+// _assertEqualEqual(_boolValue(false), _boolValue(false), _boolValue(true));
+// }
+// void test_equalEqual_bool_true() {
+// _assertEqualEqual(_boolValue(true), _boolValue(true), _boolValue(true));
+// }
+// void test_equalEqual_bool_unknown() {
+// _assertEqualEqual(_boolValue(null), _boolValue(null), _boolValue(false));
+// }
+// void test_equalEqual_double_false() {
+// _assertEqualEqual(_boolValue(false), _doubleValue(2.0), _doubleValue(4.0));
+// }
+// void test_equalEqual_double_true() {
+// _assertEqualEqual(_boolValue(true), _doubleValue(2.0), _doubleValue(2.0));
+// }
+// void test_equalEqual_double_unknown() {
+// _assertEqualEqual(_boolValue(null), _doubleValue(1.0), _doubleValue(null));
+// }
+// void test_equalEqual_int_false() {
+// _assertEqualEqual(_boolValue(false), _intValue(-5), _intValue(5));
+// }
+// void test_equalEqual_int_true() {
+// _assertEqualEqual(_boolValue(true), _intValue(5), _intValue(5));
+// }
+// void test_equalEqual_int_unknown() {
+// _assertEqualEqual(_boolValue(null), _intValue(null), _intValue(3));
+// }
+// void test_equalEqual_list_empty() {
+// _assertEqualEqual(null, _listValue([]), _listValue([]));
+// }
+// void test_equalEqual_list_false() {
+// _assertEqualEqual(null, _listValue([]), _listValue([]));
+// }
+// void test_equalEqual_map_empty() {
+// _assertEqualEqual(null, _mapValue([]), _mapValue([]));
+// }
+// void test_equalEqual_map_false() {
+// _assertEqualEqual(null, _mapValue([]), _mapValue([]));
+// }
+// void test_equalEqual_null() {
+// _assertEqualEqual(_boolValue(true), _nullValue(), _nullValue());
+// }
+// void test_equalEqual_string_false() {
+// _assertEqualEqual(_boolValue(false), _stringValue("abc"), _stringValue("def"));
+// }
+// void test_equalEqual_string_true() {
+// _assertEqualEqual(_boolValue(true), _stringValue("abc"), _stringValue("abc"));
+// }
+// void test_equalEqual_string_unknown() {
+// _assertEqualEqual(_boolValue(null), _stringValue(null), _stringValue("def"));
+// }
+// void test_equals_list_false_differentSizes() {
+// JUnitTestCase.assertFalse(_listValue([_boolValue(true)]) == _listValue([_boolValue(true), _boolValue(false)]));
+// }
+// void test_equals_list_false_sameSize() {
+// JUnitTestCase.assertFalse(_listValue([_boolValue(true)]) == _listValue([_boolValue(false)]));
+// }
+// void test_equals_list_true_empty() {
+// JUnitTestCase.assertEquals(_listValue([]), _listValue([]));
+// }
+// void test_equals_list_true_nonEmpty() {
+// JUnitTestCase.assertEquals(_listValue([_boolValue(true)]), _listValue([_boolValue(true)]));
+// }
+// void test_equals_map_true_empty() {
+// JUnitTestCase.assertEquals(_mapValue([]), _mapValue([]));
+// }
+// void test_equals_symbol_false() {
+// JUnitTestCase.assertFalse(_symbolValue("a") == _symbolValue("b"));
+// }
+// void test_equals_symbol_true() {
+// JUnitTestCase.assertEquals(_symbolValue("a"), _symbolValue("a"));
+// }
+// void test_getValue_bool_false() {
+// JUnitTestCase.assertEquals(false, _boolValue(false).value);
+// }
+// void test_getValue_bool_true() {
+// JUnitTestCase.assertEquals(true, _boolValue(true).value);
+// }
+// void test_getValue_bool_unknown() {
+// JUnitTestCase.assertNull(_boolValue(null).value);
+// }
+// void test_getValue_double_known() {
+// double value = 2.3;
+// JUnitTestCase.assertEquals(value, _doubleValue(value).value);
+// }
+// void test_getValue_double_unknown() {
+// JUnitTestCase.assertNull(_doubleValue(null).value);
+// }
+// void test_getValue_int_known() {
+// int value = 23;
+// JUnitTestCase.assertEquals(value, _intValue(value).value);
+// }
+// void test_getValue_int_unknown() {
+// JUnitTestCase.assertNull(_intValue(null).value);
+// }
+// void test_getValue_list_empty() {
+// Object result = _listValue([]).value;
+// _assertInstanceOfObjectArray(result);
+// List<Object> array = result as List<Object>;
+// EngineTestCase.assertLength(0, array);
+// }
+// void test_getValue_list_valid() {
+// Object result = _listValue([_intValue(23)]).value;
+// _assertInstanceOfObjectArray(result);
+// List<Object> array = result as List<Object>;
+// EngineTestCase.assertLength(1, array);
+// }
+// void test_getValue_map_empty() {
+// Object result = _mapValue([]).value;
+// EngineTestCase.assertInstanceOf((obj) => obj is Map, Map, result);
+// Map map = result as Map;
+// EngineTestCase.assertSizeOfMap(0, map);
+// }
+// void test_getValue_map_valid() {
+// Object result = _mapValue([_stringValue("key"), _stringValue("value")]).value;
+// EngineTestCase.assertInstanceOf((obj) => obj is Map, Map, result);
+// Map map = result as Map;
+// EngineTestCase.assertSizeOfMap(1, map);
+// }
+// void test_getValue_null() {
+// JUnitTestCase.assertNull(_nullValue().value);
+// }
+// void test_getValue_string_known() {
+// String value = "twenty-three";
+// JUnitTestCase.assertEquals(value, _stringValue(value).value);
+// }
+// void test_getValue_string_unknown() {
+// JUnitTestCase.assertNull(_stringValue(null).value);
+// }
+// void test_greaterThan_invalid_knownInt() {
+// _assertGreaterThan(null, _stringValue("1"), _intValue(2));
+// }
+// void test_greaterThan_knownDouble_knownDouble_false() {
+// _assertGreaterThan(_boolValue(false), _doubleValue(1.0), _doubleValue(2.0));
+// }
+// void test_greaterThan_knownDouble_knownDouble_true() {
+// _assertGreaterThan(_boolValue(true), _doubleValue(2.0), _doubleValue(1.0));
+// }
+// void test_greaterThan_knownDouble_knownInt_false() {
+// _assertGreaterThan(_boolValue(false), _doubleValue(1.0), _intValue(2));
+// }
+// void test_greaterThan_knownDouble_knownInt_true() {
+// _assertGreaterThan(_boolValue(true), _doubleValue(2.0), _intValue(1));
+// }
+// void test_greaterThan_knownDouble_unknownDouble() {
+// _assertGreaterThan(_boolValue(null), _doubleValue(1.0), _doubleValue(null));
+// }
+// void test_greaterThan_knownDouble_unknownInt() {
+// _assertGreaterThan(_boolValue(null), _doubleValue(1.0), _intValue(null));
+// }
+// void test_greaterThan_knownInt_invalid() {
+// _assertGreaterThan(null, _intValue(1), _stringValue("2"));
+// }
+// void test_greaterThan_knownInt_knownInt_false() {
+// _assertGreaterThan(_boolValue(false), _intValue(1), _intValue(2));
+// }
+// void test_greaterThan_knownInt_knownInt_true() {
+// _assertGreaterThan(_boolValue(true), _intValue(2), _intValue(1));
+// }
+// void test_greaterThan_knownInt_unknownDouble() {
+// _assertGreaterThan(_boolValue(null), _intValue(1), _doubleValue(null));
+// }
+// void test_greaterThan_knownInt_unknownInt() {
+// _assertGreaterThan(_boolValue(null), _intValue(1), _intValue(null));
+// }
+// void test_greaterThan_unknownDouble_knownDouble() {
+// _assertGreaterThan(_boolValue(null), _doubleValue(null), _doubleValue(2.0));
+// }
+// void test_greaterThan_unknownDouble_knownInt() {
+// _assertGreaterThan(_boolValue(null), _doubleValue(null), _intValue(2));
+// }
+// void test_greaterThan_unknownInt_knownDouble() {
+// _assertGreaterThan(_boolValue(null), _intValue(null), _doubleValue(2.0));
+// }
+// void test_greaterThan_unknownInt_knownInt() {
+// _assertGreaterThan(_boolValue(null), _intValue(null), _intValue(2));
+// }
+// void test_greaterThanOrEqual_invalid_knownInt() {
+// _assertGreaterThanOrEqual(null, _stringValue("1"), _intValue(2));
+// }
+// void test_greaterThanOrEqual_knownDouble_knownDouble_false() {
+// _assertGreaterThanOrEqual(_boolValue(false), _doubleValue(1.0), _doubleValue(2.0));
+// }
+// void test_greaterThanOrEqual_knownDouble_knownDouble_true() {
+// _assertGreaterThanOrEqual(_boolValue(true), _doubleValue(2.0), _doubleValue(1.0));
+// }
+// void test_greaterThanOrEqual_knownDouble_knownInt_false() {
+// _assertGreaterThanOrEqual(_boolValue(false), _doubleValue(1.0), _intValue(2));
+// }
+// void test_greaterThanOrEqual_knownDouble_knownInt_true() {
+// _assertGreaterThanOrEqual(_boolValue(true), _doubleValue(2.0), _intValue(1));
+// }
+// void test_greaterThanOrEqual_knownDouble_unknownDouble() {
+// _assertGreaterThanOrEqual(_boolValue(null), _doubleValue(1.0), _doubleValue(null));
+// }
+// void test_greaterThanOrEqual_knownDouble_unknownInt() {
+// _assertGreaterThanOrEqual(_boolValue(null), _doubleValue(1.0), _intValue(null));
+// }
+// void test_greaterThanOrEqual_knownInt_invalid() {
+// _assertGreaterThanOrEqual(null, _intValue(1), _stringValue("2"));
+// }
+// void test_greaterThanOrEqual_knownInt_knownInt_false() {
+// _assertGreaterThanOrEqual(_boolValue(false), _intValue(1), _intValue(2));
+// }
+// void test_greaterThanOrEqual_knownInt_knownInt_true() {
+// _assertGreaterThanOrEqual(_boolValue(true), _intValue(2), _intValue(2));
+// }
+// void test_greaterThanOrEqual_knownInt_unknownDouble() {
+// _assertGreaterThanOrEqual(_boolValue(null), _intValue(1), _doubleValue(null));
+// }
+// void test_greaterThanOrEqual_knownInt_unknownInt() {
+// _assertGreaterThanOrEqual(_boolValue(null), _intValue(1), _intValue(null));
+// }
+// void test_greaterThanOrEqual_unknownDouble_knownDouble() {
+// _assertGreaterThanOrEqual(_boolValue(null), _doubleValue(null), _doubleValue(2.0));
+// }
+// void test_greaterThanOrEqual_unknownDouble_knownInt() {
+// _assertGreaterThanOrEqual(_boolValue(null), _doubleValue(null), _intValue(2));
+// }
+// void test_greaterThanOrEqual_unknownInt_knownDouble() {
+// _assertGreaterThanOrEqual(_boolValue(null), _intValue(null), _doubleValue(2.0));
+// }
+// void test_greaterThanOrEqual_unknownInt_knownInt() {
+// _assertGreaterThanOrEqual(_boolValue(null), _intValue(null), _intValue(2));
+// }
+// void test_hasExactValue_bool_false() {
+// JUnitTestCase.assertTrue(_boolValue(false).hasExactValue);
+// }
+// void test_hasExactValue_bool_true() {
+// JUnitTestCase.assertTrue(_boolValue(true).hasExactValue);
+// }
+// void test_hasExactValue_bool_unknown() {
+// JUnitTestCase.assertTrue(_boolValue(null).hasExactValue);
+// }
+// void test_hasExactValue_double_known() {
+// JUnitTestCase.assertTrue(_doubleValue(2.3).hasExactValue);
+// }
+// void test_hasExactValue_double_unknown() {
+// JUnitTestCase.assertTrue(_doubleValue(null).hasExactValue);
+// }
+// void test_hasExactValue_dynamic() {
+// JUnitTestCase.assertFalse(_dynamicValue().hasExactValue);
+// }
+// void test_hasExactValue_int_known() {
+// JUnitTestCase.assertTrue(_intValue(23).hasExactValue);
+// }
+// void test_hasExactValue_int_unknown() {
+// JUnitTestCase.assertTrue(_intValue(null).hasExactValue);
+// }
+// void test_hasExactValue_list_empty() {
+// JUnitTestCase.assertTrue(_listValue([]).hasExactValue);
+// }
+// void test_hasExactValue_list_invalid() {
+// JUnitTestCase.assertFalse(_dynamicValue().hasExactValue);
+// }
+// void test_hasExactValue_list_valid() {
+// JUnitTestCase.assertTrue(_listValue([_intValue(23)]).hasExactValue);
+// }
+// void test_hasExactValue_map_empty() {
+// JUnitTestCase.assertTrue(_mapValue([]).hasExactValue);
+// }
+// void test_hasExactValue_map_invalidKey() {
+// JUnitTestCase.assertFalse(_mapValue([_dynamicValue(), _stringValue("value")]).hasExactValue);
+// }
+// void test_hasExactValue_map_invalidValue() {
+// JUnitTestCase.assertFalse(_mapValue([_stringValue("key"), _dynamicValue()]).hasExactValue);
+// }
+// void test_hasExactValue_map_valid() {
+// JUnitTestCase.assertTrue(_mapValue([_stringValue("key"), _stringValue("value")]).hasExactValue);
+// }
+// void test_hasExactValue_null() {
+// JUnitTestCase.assertTrue(_nullValue().hasExactValue);
+// }
+// void test_hasExactValue_num() {
+// JUnitTestCase.assertFalse(_numValue().hasExactValue);
+// }
+// void test_hasExactValue_string_known() {
+// JUnitTestCase.assertTrue(_stringValue("twenty-three").hasExactValue);
+// }
+// void test_hasExactValue_string_unknown() {
+// JUnitTestCase.assertTrue(_stringValue(null).hasExactValue);
+// }
+// void test_integerDivide_invalid_knownInt() {
+// _assertIntegerDivide(null, _stringValue("6"), _intValue(2));
+// }
+// void test_integerDivide_knownDouble_knownDouble() {
+// _assertIntegerDivide(_intValue(3), _doubleValue(6.0), _doubleValue(2.0));
+// }
+// void test_integerDivide_knownDouble_knownInt() {
+// _assertIntegerDivide(_intValue(3), _doubleValue(6.0), _intValue(2));
+// }
+// void test_integerDivide_knownDouble_unknownDouble() {
+// _assertIntegerDivide(_intValue(null), _doubleValue(6.0), _doubleValue(null));
+// }
+// void test_integerDivide_knownDouble_unknownInt() {
+// _assertIntegerDivide(_intValue(null), _doubleValue(6.0), _intValue(null));
+// }
+// void test_integerDivide_knownInt_invalid() {
+// _assertIntegerDivide(null, _intValue(6), _stringValue("2"));
+// }
+// void test_integerDivide_knownInt_knownInt() {
+// _assertIntegerDivide(_intValue(3), _intValue(6), _intValue(2));
+// }
+// void test_integerDivide_knownInt_unknownDouble() {
+// _assertIntegerDivide(_intValue(null), _intValue(6), _doubleValue(null));
+// }
+// void test_integerDivide_knownInt_unknownInt() {
+// _assertIntegerDivide(_intValue(null), _intValue(6), _intValue(null));
+// }
+// void test_integerDivide_unknownDouble_knownDouble() {
+// _assertIntegerDivide(_intValue(null), _doubleValue(null), _doubleValue(2.0));
+// }
+// void test_integerDivide_unknownDouble_knownInt() {
+// _assertIntegerDivide(_intValue(null), _doubleValue(null), _intValue(2));
+// }
+// void test_integerDivide_unknownInt_knownDouble() {
+// _assertIntegerDivide(_intValue(null), _intValue(null), _doubleValue(2.0));
+// }
+// void test_integerDivide_unknownInt_knownInt() {
+// _assertIntegerDivide(_intValue(null), _intValue(null), _intValue(2));
+// }
+// void test_isBoolNumStringOrNull_bool_false() {
+// JUnitTestCase.assertTrue(_boolValue(false).isBoolNumStringOrNull);
+// }
+// void test_isBoolNumStringOrNull_bool_true() {
+// JUnitTestCase.assertTrue(_boolValue(true).isBoolNumStringOrNull);
+// }
+// void test_isBoolNumStringOrNull_bool_unknown() {
+// JUnitTestCase.assertTrue(_boolValue(null).isBoolNumStringOrNull);
+// }
+// void test_isBoolNumStringOrNull_double_known() {
+// JUnitTestCase.assertTrue(_doubleValue(2.3).isBoolNumStringOrNull);
+// }
+// void test_isBoolNumStringOrNull_double_unknown() {
+// JUnitTestCase.assertTrue(_doubleValue(null).isBoolNumStringOrNull);
+// }
+// void test_isBoolNumStringOrNull_dynamic() {
+// JUnitTestCase.assertTrue(_dynamicValue().isBoolNumStringOrNull);
+// }
+// void test_isBoolNumStringOrNull_int_known() {
+// JUnitTestCase.assertTrue(_intValue(23).isBoolNumStringOrNull);
+// }
+// void test_isBoolNumStringOrNull_int_unknown() {
+// JUnitTestCase.assertTrue(_intValue(null).isBoolNumStringOrNull);
+// }
+// void test_isBoolNumStringOrNull_list() {
+// JUnitTestCase.assertFalse(_listValue([]).isBoolNumStringOrNull);
+// }
+// void test_isBoolNumStringOrNull_null() {
+// JUnitTestCase.assertTrue(_nullValue().isBoolNumStringOrNull);
+// }
+// void test_isBoolNumStringOrNull_num() {
+// JUnitTestCase.assertTrue(_numValue().isBoolNumStringOrNull);
+// }
+// void test_isBoolNumStringOrNull_string_known() {
+// JUnitTestCase.assertTrue(_stringValue("twenty-three").isBoolNumStringOrNull);
+// }
+// void test_isBoolNumStringOrNull_string_unknown() {
+// JUnitTestCase.assertTrue(_stringValue(null).isBoolNumStringOrNull);
+// }
+// void test_lessThan_invalid_knownInt() {
+// _assertLessThan(null, _stringValue("1"), _intValue(2));
+// }
+// void test_lessThan_knownDouble_knownDouble_false() {
+// _assertLessThan(_boolValue(false), _doubleValue(2.0), _doubleValue(1.0));
+// }
+// void test_lessThan_knownDouble_knownDouble_true() {
+// _assertLessThan(_boolValue(true), _doubleValue(1.0), _doubleValue(2.0));
+// }
+// void test_lessThan_knownDouble_knownInt_false() {
+// _assertLessThan(_boolValue(false), _doubleValue(2.0), _intValue(1));
+// }
+// void test_lessThan_knownDouble_knownInt_true() {
+// _assertLessThan(_boolValue(true), _doubleValue(1.0), _intValue(2));
+// }
+// void test_lessThan_knownDouble_unknownDouble() {
+// _assertLessThan(_boolValue(null), _doubleValue(1.0), _doubleValue(null));
+// }
+// void test_lessThan_knownDouble_unknownInt() {
+// _assertLessThan(_boolValue(null), _doubleValue(1.0), _intValue(null));
+// }
+// void test_lessThan_knownInt_invalid() {
+// _assertLessThan(null, _intValue(1), _stringValue("2"));
+// }
+// void test_lessThan_knownInt_knownInt_false() {
+// _assertLessThan(_boolValue(false), _intValue(2), _intValue(1));
+// }
+// void test_lessThan_knownInt_knownInt_true() {
+// _assertLessThan(_boolValue(true), _intValue(1), _intValue(2));
+// }
+// void test_lessThan_knownInt_unknownDouble() {
+// _assertLessThan(_boolValue(null), _intValue(1), _doubleValue(null));
+// }
+// void test_lessThan_knownInt_unknownInt() {
+// _assertLessThan(_boolValue(null), _intValue(1), _intValue(null));
+// }
+// void test_lessThan_unknownDouble_knownDouble() {
+// _assertLessThan(_boolValue(null), _doubleValue(null), _doubleValue(2.0));
+// }
+// void test_lessThan_unknownDouble_knownInt() {
+// _assertLessThan(_boolValue(null), _doubleValue(null), _intValue(2));
+// }
+// void test_lessThan_unknownInt_knownDouble() {
+// _assertLessThan(_boolValue(null), _intValue(null), _doubleValue(2.0));
+// }
+// void test_lessThan_unknownInt_knownInt() {
+// _assertLessThan(_boolValue(null), _intValue(null), _intValue(2));
+// }
+// void test_lessThanOrEqual_invalid_knownInt() {
+// _assertLessThanOrEqual(null, _stringValue("1"), _intValue(2));
+// }
+// void test_lessThanOrEqual_knownDouble_knownDouble_false() {
+// _assertLessThanOrEqual(_boolValue(false), _doubleValue(2.0), _doubleValue(1.0));
+// }
+// void test_lessThanOrEqual_knownDouble_knownDouble_true() {
+// _assertLessThanOrEqual(_boolValue(true), _doubleValue(1.0), _doubleValue(2.0));
+// }
+// void test_lessThanOrEqual_knownDouble_knownInt_false() {
+// _assertLessThanOrEqual(_boolValue(false), _doubleValue(2.0), _intValue(1));
+// }
+// void test_lessThanOrEqual_knownDouble_knownInt_true() {
+// _assertLessThanOrEqual(_boolValue(true), _doubleValue(1.0), _intValue(2));
+// }
+// void test_lessThanOrEqual_knownDouble_unknownDouble() {
+// _assertLessThanOrEqual(_boolValue(null), _doubleValue(1.0), _doubleValue(null));
+// }
+// void test_lessThanOrEqual_knownDouble_unknownInt() {
+// _assertLessThanOrEqual(_boolValue(null), _doubleValue(1.0), _intValue(null));
+// }
+// void test_lessThanOrEqual_knownInt_invalid() {
+// _assertLessThanOrEqual(null, _intValue(1), _stringValue("2"));
+// }
+// void test_lessThanOrEqual_knownInt_knownInt_false() {
+// _assertLessThanOrEqual(_boolValue(false), _intValue(2), _intValue(1));
+// }
+// void test_lessThanOrEqual_knownInt_knownInt_true() {
+// _assertLessThanOrEqual(_boolValue(true), _intValue(1), _intValue(2));
+// }
+// void test_lessThanOrEqual_knownInt_unknownDouble() {
+// _assertLessThanOrEqual(_boolValue(null), _intValue(1), _doubleValue(null));
+// }
+// void test_lessThanOrEqual_knownInt_unknownInt() {
+// _assertLessThanOrEqual(_boolValue(null), _intValue(1), _intValue(null));
+// }
+// void test_lessThanOrEqual_unknownDouble_knownDouble() {
+// _assertLessThanOrEqual(_boolValue(null), _doubleValue(null), _doubleValue(2.0));
+// }
+// void test_lessThanOrEqual_unknownDouble_knownInt() {
+// _assertLessThanOrEqual(_boolValue(null), _doubleValue(null), _intValue(2));
+// }
+// void test_lessThanOrEqual_unknownInt_knownDouble() {
+// _assertLessThanOrEqual(_boolValue(null), _intValue(null), _doubleValue(2.0));
+// }
+// void test_lessThanOrEqual_unknownInt_knownInt() {
+// _assertLessThanOrEqual(_boolValue(null), _intValue(null), _intValue(2));
+// }
+// void test_logicalAnd_false_false() {
+// _assertLogicalAnd(_boolValue(false), _boolValue(false), _boolValue(false));
+// }
+// void test_logicalAnd_false_null() {
+// try {
+// _assertLogicalAnd(_boolValue(false), _boolValue(false), _nullValue());
+// JUnitTestCase.fail("Expected EvaluationException");
+// } on EvaluationException catch (exception) {
+// }
+// }
+// void test_logicalAnd_false_string() {
+// try {
+// _assertLogicalAnd(_boolValue(false), _boolValue(false), _stringValue("false"));
+// JUnitTestCase.fail("Expected EvaluationException");
+// } on EvaluationException catch (exception) {
+// }
+// }
+// void test_logicalAnd_false_true() {
+// _assertLogicalAnd(_boolValue(false), _boolValue(false), _boolValue(true));
+// }
+// void test_logicalAnd_null_false() {
+// try {
+// _assertLogicalAnd(_boolValue(false), _nullValue(), _boolValue(false));
+// JUnitTestCase.fail("Expected EvaluationException");
+// } on EvaluationException catch (exception) {
+// }
+// }
+// void test_logicalAnd_null_true() {
+// try {
+// _assertLogicalAnd(_boolValue(false), _nullValue(), _boolValue(true));
+// JUnitTestCase.fail("Expected EvaluationException");
+// } on EvaluationException catch (exception) {
+// }
+// }
+// void test_logicalAnd_string_false() {
+// try {
+// _assertLogicalAnd(_boolValue(false), _stringValue("true"), _boolValue(false));
+// JUnitTestCase.fail("Expected EvaluationException");
+// } on EvaluationException catch (exception) {
+// }
+// }
+// void test_logicalAnd_string_true() {
+// try {
+// _assertLogicalAnd(_boolValue(false), _stringValue("false"), _boolValue(true));
+// JUnitTestCase.fail("Expected EvaluationException");
+// } on EvaluationException catch (exception) {
+// }
+// }
+// void test_logicalAnd_true_false() {
+// _assertLogicalAnd(_boolValue(false), _boolValue(true), _boolValue(false));
+// }
+// void test_logicalAnd_true_null() {
+// _assertLogicalAnd(null, _boolValue(true), _nullValue());
+// }
+// void test_logicalAnd_true_string() {
+// try {
+// _assertLogicalAnd(_boolValue(false), _boolValue(true), _stringValue("true"));
+// JUnitTestCase.fail("Expected EvaluationException");
+// } on EvaluationException catch (exception) {
+// }
+// }
+// void test_logicalAnd_true_true() {
+// _assertLogicalAnd(_boolValue(true), _boolValue(true), _boolValue(true));
+// }
+// void test_logicalNot_false() {
+// _assertLogicalNot(_boolValue(true), _boolValue(false));
+// }
+// void test_logicalNot_null() {
+// _assertLogicalNot(null, _nullValue());
+// }
+// void test_logicalNot_string() {
+// try {
+// _assertLogicalNot(_boolValue(true), _stringValue(null));
+// JUnitTestCase.fail("Expected EvaluationException");
+// } on EvaluationException catch (exception) {
+// }
+// }
+// void test_logicalNot_true() {
+// _assertLogicalNot(_boolValue(false), _boolValue(true));
+// }
+// void test_logicalNot_unknown() {
+// _assertLogicalNot(_boolValue(null), _boolValue(null));
+// }
+// void test_logicalOr_false_false() {
+// _assertLogicalOr(_boolValue(false), _boolValue(false), _boolValue(false));
+// }
+// void test_logicalOr_false_null() {
+// _assertLogicalOr(null, _boolValue(false), _nullValue());
+// }
+// void test_logicalOr_false_string() {
+// try {
+// _assertLogicalOr(_boolValue(false), _boolValue(false), _stringValue("false"));
+// JUnitTestCase.fail("Expected EvaluationException");
+// } on EvaluationException catch (exception) {
+// }
+// }
+// void test_logicalOr_false_true() {
+// _assertLogicalOr(_boolValue(true), _boolValue(false), _boolValue(true));
+// }
+// void test_logicalOr_null_false() {
+// try {
+// _assertLogicalOr(_boolValue(false), _nullValue(), _boolValue(false));
+// JUnitTestCase.fail("Expected EvaluationException");
+// } on EvaluationException catch (exception) {
+// }
+// }
+// void test_logicalOr_null_true() {
+// try {
+// _assertLogicalOr(_boolValue(true), _nullValue(), _boolValue(true));
+// JUnitTestCase.fail("Expected EvaluationException");
+// } on EvaluationException catch (exception) {
+// }
+// }
+// void test_logicalOr_string_false() {
+// try {
+// _assertLogicalOr(_boolValue(false), _stringValue("true"), _boolValue(false));
+// JUnitTestCase.fail("Expected EvaluationException");
+// } on EvaluationException catch (exception) {
+// }
+// }
+// void test_logicalOr_string_true() {
+// try {
+// _assertLogicalOr(_boolValue(true), _stringValue("false"), _boolValue(true));
+// JUnitTestCase.fail("Expected EvaluationException");
+// } on EvaluationException catch (exception) {
+// }
+// }
+// void test_logicalOr_true_false() {
+// _assertLogicalOr(_boolValue(true), _boolValue(true), _boolValue(false));
+// }
+// void test_logicalOr_true_null() {
+// try {
+// _assertLogicalOr(_boolValue(true), _boolValue(true), _nullValue());
+// JUnitTestCase.fail("Expected EvaluationException");
+// } on EvaluationException catch (exception) {
+// }
+// }
+// void test_logicalOr_true_string() {
+// try {
+// _assertLogicalOr(_boolValue(true), _boolValue(true), _stringValue("true"));
+// JUnitTestCase.fail("Expected EvaluationException");
+// } on EvaluationException catch (exception) {
+// }
+// }
+// void test_logicalOr_true_true() {
+// _assertLogicalOr(_boolValue(true), _boolValue(true), _boolValue(true));
+// }
+// void test_minus_invalid_knownInt() {
+// _assertMinus(null, _stringValue("4"), _intValue(3));
+// }
+// void test_minus_knownDouble_knownDouble() {
+// _assertMinus(_doubleValue(1.0), _doubleValue(4.0), _doubleValue(3.0));
+// }
+// void test_minus_knownDouble_knownInt() {
+// _assertMinus(_doubleValue(1.0), _doubleValue(4.0), _intValue(3));
+// }
+// void test_minus_knownDouble_unknownDouble() {
+// _assertMinus(_doubleValue(null), _doubleValue(4.0), _doubleValue(null));
+// }
+// void test_minus_knownDouble_unknownInt() {
+// _assertMinus(_doubleValue(null), _doubleValue(4.0), _intValue(null));
+// }
+// void test_minus_knownInt_invalid() {
+// _assertMinus(null, _intValue(4), _stringValue("3"));
+// }
+// void test_minus_knownInt_knownInt() {
+// _assertMinus(_intValue(1), _intValue(4), _intValue(3));
+// }
+// void test_minus_knownInt_unknownDouble() {
+// _assertMinus(_doubleValue(null), _intValue(4), _doubleValue(null));
+// }
+// void test_minus_knownInt_unknownInt() {
+// _assertMinus(_intValue(null), _intValue(4), _intValue(null));
+// }
+// void test_minus_unknownDouble_knownDouble() {
+// _assertMinus(_doubleValue(null), _doubleValue(null), _doubleValue(3.0));
+// }
+// void test_minus_unknownDouble_knownInt() {
+// _assertMinus(_doubleValue(null), _doubleValue(null), _intValue(3));
+// }
+// void test_minus_unknownInt_knownDouble() {
+// _assertMinus(_doubleValue(null), _intValue(null), _doubleValue(3.0));
+// }
+// void test_minus_unknownInt_knownInt() {
+// _assertMinus(_intValue(null), _intValue(null), _intValue(3));
+// }
+// void test_negated_double_known() {
+// _assertNegated(_doubleValue(2.0), _doubleValue(-2.0));
+// }
+// void test_negated_double_unknown() {
+// _assertNegated(_doubleValue(null), _doubleValue(null));
+// }
+// void test_negated_int_known() {
+// _assertNegated(_intValue(-3), _intValue(3));
+// }
+// void test_negated_int_unknown() {
+// _assertNegated(_intValue(null), _intValue(null));
+// }
+// void test_negated_string() {
+// _assertNegated(null, _stringValue(null));
+// }
+// void test_notEqual_bool_false() {
+// _assertNotEqual(_boolValue(false), _boolValue(true), _boolValue(true));
+// }
+// void test_notEqual_bool_true() {
+// _assertNotEqual(_boolValue(true), _boolValue(false), _boolValue(true));
+// }
+// void test_notEqual_bool_unknown() {
+// _assertNotEqual(_boolValue(null), _boolValue(null), _boolValue(false));
+// }
+// void test_notEqual_double_false() {
+// _assertNotEqual(_boolValue(false), _doubleValue(2.0), _doubleValue(2.0));
+// }
+// void test_notEqual_double_true() {
+// _assertNotEqual(_boolValue(true), _doubleValue(2.0), _doubleValue(4.0));
+// }
+// void test_notEqual_double_unknown() {
+// _assertNotEqual(_boolValue(null), _doubleValue(1.0), _doubleValue(null));
+// }
+// void test_notEqual_int_false() {
+// _assertNotEqual(_boolValue(false), _intValue(5), _intValue(5));
+// }
+// void test_notEqual_int_true() {
+// _assertNotEqual(_boolValue(true), _intValue(-5), _intValue(5));
+// }
+// void test_notEqual_int_unknown() {
+// _assertNotEqual(_boolValue(null), _intValue(null), _intValue(3));
+// }
+// void test_notEqual_null() {
+// _assertNotEqual(_boolValue(false), _nullValue(), _nullValue());
+// }
+// void test_notEqual_string_false() {
+// _assertNotEqual(_boolValue(false), _stringValue("abc"), _stringValue("abc"));
+// }
+// void test_notEqual_string_true() {
+// _assertNotEqual(_boolValue(true), _stringValue("abc"), _stringValue("def"));
+// }
+// void test_notEqual_string_unknown() {
+// _assertNotEqual(_boolValue(null), _stringValue(null), _stringValue("def"));
+// }
+// void test_performToString_bool_false() {
+// _assertPerformToString(_stringValue("false"), _boolValue(false));
+// }
+// void test_performToString_bool_true() {
+// _assertPerformToString(_stringValue("true"), _boolValue(true));
+// }
+// void test_performToString_bool_unknown() {
+// _assertPerformToString(_stringValue(null), _boolValue(null));
+// }
+// void test_performToString_double_known() {
+// _assertPerformToString(_stringValue("2.0"), _doubleValue(2.0));
+// }
+// void test_performToString_double_unknown() {
+// _assertPerformToString(_stringValue(null), _doubleValue(null));
+// }
+// void test_performToString_int_known() {
+// _assertPerformToString(_stringValue("5"), _intValue(5));
+// }
+// void test_performToString_int_unknown() {
+// _assertPerformToString(_stringValue(null), _intValue(null));
+// }
+// void test_performToString_null() {
+// _assertPerformToString(_stringValue("null"), _nullValue());
+// }
+// void test_performToString_string_known() {
+// _assertPerformToString(_stringValue("abc"), _stringValue("abc"));
+// }
+// void test_performToString_string_unknown() {
+// _assertPerformToString(_stringValue(null), _stringValue(null));
+// }
+// void test_remainder_invalid_knownInt() {
+// _assertRemainder(null, _stringValue("7"), _intValue(2));
+// }
+// void test_remainder_knownDouble_knownDouble() {
+// _assertRemainder(_doubleValue(1.0), _doubleValue(7.0), _doubleValue(2.0));
+// }
+// void test_remainder_knownDouble_knownInt() {
+// _assertRemainder(_doubleValue(1.0), _doubleValue(7.0), _intValue(2));
+// }
+// void test_remainder_knownDouble_unknownDouble() {
+// _assertRemainder(_doubleValue(null), _doubleValue(7.0), _doubleValue(null));
+// }
+// void test_remainder_knownDouble_unknownInt() {
+// _assertRemainder(_doubleValue(null), _doubleValue(6.0), _intValue(null));
+// }
+// void test_remainder_knownInt_invalid() {
+// _assertRemainder(null, _intValue(7), _stringValue("2"));
+// }
+// void test_remainder_knownInt_knownInt() {
+// _assertRemainder(_intValue(1), _intValue(7), _intValue(2));
+// }
+// void test_remainder_knownInt_unknownDouble() {
+// _assertRemainder(_doubleValue(null), _intValue(7), _doubleValue(null));
+// }
+// void test_remainder_knownInt_unknownInt() {
+// _assertRemainder(_intValue(null), _intValue(7), _intValue(null));
+// }
+// void test_remainder_unknownDouble_knownDouble() {
+// _assertRemainder(_doubleValue(null), _doubleValue(null), _doubleValue(2.0));
+// }
+// void test_remainder_unknownDouble_knownInt() {
+// _assertRemainder(_doubleValue(null), _doubleValue(null), _intValue(2));
+// }
+// void test_remainder_unknownInt_knownDouble() {
+// _assertRemainder(_doubleValue(null), _intValue(null), _doubleValue(2.0));
+// }
+// void test_remainder_unknownInt_knownInt() {
+// _assertRemainder(_intValue(null), _intValue(null), _intValue(2));
+// }
+// void test_shiftLeft_invalid_knownInt() {
+// _assertShiftLeft(null, _stringValue(null), _intValue(3));
+// }
+// void test_shiftLeft_knownInt_invalid() {
+// _assertShiftLeft(null, _intValue(6), _stringValue(null));
+// }
+// void test_shiftLeft_knownInt_knownInt() {
+// _assertShiftLeft(_intValue(48), _intValue(6), _intValue(3));
+// }
+// void test_shiftLeft_knownInt_tooLarge() {
+// _assertShiftLeft(_intValue(null), _intValue(6), new DartObjectImpl(_typeProvider.intType, new IntState(Long.MAX_VALUE)));
+// }
+// void test_shiftLeft_knownInt_unknownInt() {
+// _assertShiftLeft(_intValue(null), _intValue(6), _intValue(null));
+// }
+// void test_shiftLeft_unknownInt_knownInt() {
+// _assertShiftLeft(_intValue(null), _intValue(null), _intValue(3));
+// }
+// void test_shiftLeft_unknownInt_unknownInt() {
+// _assertShiftLeft(_intValue(null), _intValue(null), _intValue(null));
+// }
+// void test_shiftRight_invalid_knownInt() {
+// _assertShiftRight(null, _stringValue(null), _intValue(3));
+// }
+// void test_shiftRight_knownInt_invalid() {
+// _assertShiftRight(null, _intValue(48), _stringValue(null));
+// }
+// void test_shiftRight_knownInt_knownInt() {
+// _assertShiftRight(_intValue(6), _intValue(48), _intValue(3));
+// }
+// void test_shiftRight_knownInt_tooLarge() {
+// _assertShiftRight(_intValue(null), _intValue(48), new DartObjectImpl(_typeProvider.intType, new IntState(Long.MAX_VALUE)));
+// }
+// void test_shiftRight_knownInt_unknownInt() {
+// _assertShiftRight(_intValue(null), _intValue(48), _intValue(null));
+// }
+// void test_shiftRight_unknownInt_knownInt() {
+// _assertShiftRight(_intValue(null), _intValue(null), _intValue(3));
+// }
+// void test_shiftRight_unknownInt_unknownInt() {
+// _assertShiftRight(_intValue(null), _intValue(null), _intValue(null));
+// }
+// void test_times_invalid_knownInt() {
+// _assertTimes(null, _stringValue("2"), _intValue(3));
+// }
+// void test_times_knownDouble_knownDouble() {
+// _assertTimes(_doubleValue(6.0), _doubleValue(2.0), _doubleValue(3.0));
+// }
+// void test_times_knownDouble_knownInt() {
+// _assertTimes(_doubleValue(6.0), _doubleValue(2.0), _intValue(3));
+// }
+// void test_times_knownDouble_unknownDouble() {
+// _assertTimes(_doubleValue(null), _doubleValue(2.0), _doubleValue(null));
+// }
+// void test_times_knownDouble_unknownInt() {
+// _assertTimes(_doubleValue(null), _doubleValue(2.0), _intValue(null));
+// }
+// void test_times_knownInt_invalid() {
+// _assertTimes(null, _intValue(2), _stringValue("3"));
+// }
+// void test_times_knownInt_knownInt() {
+// _assertTimes(_intValue(6), _intValue(2), _intValue(3));
+// }
+// void test_times_knownInt_unknownDouble() {
+// _assertTimes(_doubleValue(null), _intValue(2), _doubleValue(null));
+// }
+// void test_times_knownInt_unknownInt() {
+// _assertTimes(_intValue(null), _intValue(2), _intValue(null));
+// }
+// void test_times_unknownDouble_knownDouble() {
+// _assertTimes(_doubleValue(null), _doubleValue(null), _doubleValue(3.0));
+// }
+// void test_times_unknownDouble_knownInt() {
+// _assertTimes(_doubleValue(null), _doubleValue(null), _intValue(3));
+// }
+// void test_times_unknownInt_knownDouble() {
+// _assertTimes(_doubleValue(null), _intValue(null), _doubleValue(3.0));
+// }
+// void test_times_unknownInt_knownInt() {
+// _assertTimes(_intValue(null), _intValue(null), _intValue(3));
+// }
+// /**
+// * Assert that the result of adding the left and right operands is the expected value, or that the
+// * operation throws an exception if the expected value is `null`.
+// *
+// * @param expected the expected result of the operation
+// * @param leftOperand the left operand to the operation
+// * @param rightOperand the left operand to the operation
+// * @throws EvaluationException if the result is an exception when it should not be
+// */
+// void _assertAdd(DartObjectImpl expected, DartObjectImpl leftOperand, DartObjectImpl rightOperand) {
+// if (expected == null) {
+// try {
+// leftOperand.add(_typeProvider, rightOperand);
+// JUnitTestCase.fail("Expected an EvaluationException");
+// } on EvaluationException catch (exception) {
+// }
+// } else {
+// DartObjectImpl result = leftOperand.add(_typeProvider, rightOperand);
+// JUnitTestCase.assertNotNull(result);
+// JUnitTestCase.assertEquals(expected, result);
+// }
+// }
+// /**
+// * Assert that the result of bit-anding the left and right operands is the expected value, or that
+// * the operation throws an exception if the expected value is `null`.
+// *
+// * @param expected the expected result of the operation
+// * @param leftOperand the left operand to the operation
+// * @param rightOperand the left operand to the operation
+// * @throws EvaluationException if the result is an exception when it should not be
+// */
+// void _assertBitAnd(DartObjectImpl expected, DartObjectImpl leftOperand, DartObjectImpl rightOperand) {
+// if (expected == null) {
+// try {
+// leftOperand.bitAnd(_typeProvider, rightOperand);
+// JUnitTestCase.fail("Expected an EvaluationException");
+// } on EvaluationException catch (exception) {
+// }
+// } else {
+// DartObjectImpl result = leftOperand.bitAnd(_typeProvider, rightOperand);
+// JUnitTestCase.assertNotNull(result);
+// JUnitTestCase.assertEquals(expected, result);
+// }
+// }
+// /**
+// * Assert that the bit-not of the operand is the expected value, or that the operation throws an
+// * exception if the expected value is `null`.
+// *
+// * @param expected the expected result of the operation
+// * @param operand the operand to the operation
+// * @throws EvaluationException if the result is an exception when it should not be
+// */
+// void _assertBitNot(DartObjectImpl expected, DartObjectImpl operand) {
+// if (expected == null) {
+// try {
+// operand.bitNot(_typeProvider);
+// JUnitTestCase.fail("Expected an EvaluationException");
+// } on EvaluationException catch (exception) {
+// }
+// } else {
+// DartObjectImpl result = operand.bitNot(_typeProvider);
+// JUnitTestCase.assertNotNull(result);
+// JUnitTestCase.assertEquals(expected, result);
+// }
+// }
+// /**
+// * Assert that the result of bit-oring the left and right operands is the expected value, or that
+// * the operation throws an exception if the expected value is `null`.
+// *
+// * @param expected the expected result of the operation
+// * @param leftOperand the left operand to the operation
+// * @param rightOperand the left operand to the operation
+// * @throws EvaluationException if the result is an exception when it should not be
+// */
+// void _assertBitOr(DartObjectImpl expected, DartObjectImpl leftOperand, DartObjectImpl rightOperand) {
+// if (expected == null) {
+// try {
+// leftOperand.bitOr(_typeProvider, rightOperand);
+// JUnitTestCase.fail("Expected an EvaluationException");
+// } on EvaluationException catch (exception) {
+// }
+// } else {
+// DartObjectImpl result = leftOperand.bitOr(_typeProvider, rightOperand);
+// JUnitTestCase.assertNotNull(result);
+// JUnitTestCase.assertEquals(expected, result);
+// }
+// }
+// /**
+// * Assert that the result of bit-xoring the left and right operands is the expected value, or that
+// * the operation throws an exception if the expected value is `null`.
+// *
+// * @param expected the expected result of the operation
+// * @param leftOperand the left operand to the operation
+// * @param rightOperand the left operand to the operation
+// * @throws EvaluationException if the result is an exception when it should not be
+// */
+// void _assertBitXor(DartObjectImpl expected, DartObjectImpl leftOperand, DartObjectImpl rightOperand) {
+// if (expected == null) {
+// try {
+// leftOperand.bitXor(_typeProvider, rightOperand);
+// JUnitTestCase.fail("Expected an EvaluationException");
+// } on EvaluationException catch (exception) {
+// }
+// } else {
+// DartObjectImpl result = leftOperand.bitXor(_typeProvider, rightOperand);
+// JUnitTestCase.assertNotNull(result);
+// JUnitTestCase.assertEquals(expected, result);
+// }
+// }
+// /**
+// * Assert that the result of concatenating the left and right operands is the expected value, or
+// * that the operation throws an exception if the expected value is `null`.
+// *
+// * @param expected the expected result of the operation
+// * @param leftOperand the left operand to the operation
+// * @param rightOperand the left operand to the operation
+// * @throws EvaluationException if the result is an exception when it should not be
+// */
+// void _assertConcatenate(DartObjectImpl expected, DartObjectImpl leftOperand, DartObjectImpl rightOperand) {
+// if (expected == null) {
+// try {
+// leftOperand.concatenate(_typeProvider, rightOperand);
+// JUnitTestCase.fail("Expected an EvaluationException");
+// } on EvaluationException catch (exception) {
+// }
+// } else {
+// DartObjectImpl result = leftOperand.concatenate(_typeProvider, rightOperand);
+// JUnitTestCase.assertNotNull(result);
+// JUnitTestCase.assertEquals(expected, result);
+// }
+// }
+// /**
+// * Assert that the result of dividing the left and right operands is the expected value, or that
+// * the operation throws an exception if the expected value is `null`.
+// *
+// * @param expected the expected result of the operation
+// * @param leftOperand the left operand to the operation
+// * @param rightOperand the left operand to the operation
+// * @throws EvaluationException if the result is an exception when it should not be
+// */
+// void _assertDivide(DartObjectImpl expected, DartObjectImpl leftOperand, DartObjectImpl rightOperand) {
+// if (expected == null) {
+// try {
+// leftOperand.divide(_typeProvider, rightOperand);
+// JUnitTestCase.fail("Expected an EvaluationException");
+// } on EvaluationException catch (exception) {
+// }
+// } else {
+// DartObjectImpl result = leftOperand.divide(_typeProvider, rightOperand);
+// JUnitTestCase.assertNotNull(result);
+// JUnitTestCase.assertEquals(expected, result);
+// }
+// }
+// /**
+// * Assert that the result of comparing the left and right operands for equality is the expected
+// * value, or that the operation throws an exception if the expected value is `null`.
+// *
+// * @param expected the expected result of the operation
+// * @param leftOperand the left operand to the operation
+// * @param rightOperand the left operand to the operation
+// * @throws EvaluationException if the result is an exception when it should not be
+// */
+// void _assertEqualEqual(DartObjectImpl expected, DartObjectImpl leftOperand, DartObjectImpl rightOperand) {
+// if (expected == null) {
+// try {
+// leftOperand.equalEqual(_typeProvider, rightOperand);
+// JUnitTestCase.fail("Expected an EvaluationException");
+// } on EvaluationException catch (exception) {
+// }
+// } else {
+// DartObjectImpl result = leftOperand.equalEqual(_typeProvider, rightOperand);
+// JUnitTestCase.assertNotNull(result);
+// JUnitTestCase.assertEquals(expected, result);
+// }
+// }
+// /**
+// * Assert that the result of comparing the left and right operands is the expected value, or that
+// * the operation throws an exception if the expected value is `null`.
+// *
+// * @param expected the expected result of the operation
+// * @param leftOperand the left operand to the operation
+// * @param rightOperand the left operand to the operation
+// * @throws EvaluationException if the result is an exception when it should not be
+// */
+// void _assertGreaterThan(DartObjectImpl expected, DartObjectImpl leftOperand, DartObjectImpl rightOperand) {
+// if (expected == null) {
+// try {
+// leftOperand.greaterThan(_typeProvider, rightOperand);
+// JUnitTestCase.fail("Expected an EvaluationException");
+// } on EvaluationException catch (exception) {
+// }
+// } else {
+// DartObjectImpl result = leftOperand.greaterThan(_typeProvider, rightOperand);
+// JUnitTestCase.assertNotNull(result);
+// JUnitTestCase.assertEquals(expected, result);
+// }
+// }
+// /**
+// * Assert that the result of comparing the left and right operands is the expected value, or that
+// * the operation throws an exception if the expected value is `null`.
+// *
+// * @param expected the expected result of the operation
+// * @param leftOperand the left operand to the operation
+// * @param rightOperand the left operand to the operation
+// * @throws EvaluationException if the result is an exception when it should not be
+// */
+// void _assertGreaterThanOrEqual(DartObjectImpl expected, DartObjectImpl leftOperand, DartObjectImpl rightOperand) {
+// if (expected == null) {
+// try {
+// leftOperand.greaterThanOrEqual(_typeProvider, rightOperand);
+// JUnitTestCase.fail("Expected an EvaluationException");
+// } on EvaluationException catch (exception) {
+// }
+// } else {
+// DartObjectImpl result = leftOperand.greaterThanOrEqual(_typeProvider, rightOperand);
+// JUnitTestCase.assertNotNull(result);
+// JUnitTestCase.assertEquals(expected, result);
+// }
+// }
+// void _assertInstanceOfObjectArray(Object result) {
+// // TODO(scheglov) implement
+// }
+// /**
+// * Assert that the result of dividing the left and right operands as integers is the expected
+// * value, or that the operation throws an exception if the expected value is `null`.
+// *
+// * @param expected the expected result of the operation
+// * @param leftOperand the left operand to the operation
+// * @param rightOperand the left operand to the operation
+// * @throws EvaluationException if the result is an exception when it should not be
+// */
+// void _assertIntegerDivide(DartObjectImpl expected, DartObjectImpl leftOperand, DartObjectImpl rightOperand) {
+// if (expected == null) {
+// try {
+// leftOperand.integerDivide(_typeProvider, rightOperand);
+// JUnitTestCase.fail("Expected an EvaluationException");
+// } on EvaluationException catch (exception) {
+// }
+// } else {
+// DartObjectImpl result = leftOperand.integerDivide(_typeProvider, rightOperand);
+// JUnitTestCase.assertNotNull(result);
+// JUnitTestCase.assertEquals(expected, result);
+// }
+// }
+// /**
+// * Assert that the result of comparing the left and right operands is the expected value, or that
+// * the operation throws an exception if the expected value is `null`.
+// *
+// * @param expected the expected result of the operation
+// * @param leftOperand the left operand to the operation
+// * @param rightOperand the left operand to the operation
+// * @throws EvaluationException if the result is an exception when it should not be
+// */
+// void _assertLessThan(DartObjectImpl expected, DartObjectImpl leftOperand, DartObjectImpl rightOperand) {
+// if (expected == null) {
+// try {
+// leftOperand.lessThan(_typeProvider, rightOperand);
+// JUnitTestCase.fail("Expected an EvaluationException");
+// } on EvaluationException catch (exception) {
+// }
+// } else {
+// DartObjectImpl result = leftOperand.lessThan(_typeProvider, rightOperand);
+// JUnitTestCase.assertNotNull(result);
+// JUnitTestCase.assertEquals(expected, result);
+// }
+// }
+// /**
+// * Assert that the result of comparing the left and right operands is the expected value, or that
+// * the operation throws an exception if the expected value is `null`.
+// *
+// * @param expected the expected result of the operation
+// * @param leftOperand the left operand to the operation
+// * @param rightOperand the left operand to the operation
+// * @throws EvaluationException if the result is an exception when it should not be
+// */
+// void _assertLessThanOrEqual(DartObjectImpl expected, DartObjectImpl leftOperand, DartObjectImpl rightOperand) {
+// if (expected == null) {
+// try {
+// leftOperand.lessThanOrEqual(_typeProvider, rightOperand);
+// JUnitTestCase.fail("Expected an EvaluationException");
+// } on EvaluationException catch (exception) {
+// }
+// } else {
+// DartObjectImpl result = leftOperand.lessThanOrEqual(_typeProvider, rightOperand);
+// JUnitTestCase.assertNotNull(result);
+// JUnitTestCase.assertEquals(expected, result);
+// }
+// }
+// /**
+// * Assert that the result of logical-anding the left and right operands is the expected value, or
+// * that the operation throws an exception if the expected value is `null`.
+// *
+// * @param expected the expected result of the operation
+// * @param leftOperand the left operand to the operation
+// * @param rightOperand the left operand to the operation
+// * @throws EvaluationException if the result is an exception when it should not be
+// */
+// void _assertLogicalAnd(DartObjectImpl expected, DartObjectImpl leftOperand, DartObjectImpl rightOperand) {
+// if (expected == null) {
+// try {
+// leftOperand.logicalAnd(_typeProvider, rightOperand);
+// JUnitTestCase.fail("Expected an EvaluationException");
+// } on EvaluationException catch (exception) {
+// }
+// } else {
+// DartObjectImpl result = leftOperand.logicalAnd(_typeProvider, rightOperand);
+// JUnitTestCase.assertNotNull(result);
+// JUnitTestCase.assertEquals(expected, result);
+// }
+// }
+// /**
+// * Assert that the logical-not of the operand is the expected value, or that the operation throws
+// * an exception if the expected value is `null`.
+// *
+// * @param expected the expected result of the operation
+// * @param operand the operand to the operation
+// * @throws EvaluationException if the result is an exception when it should not be
+// */
+// void _assertLogicalNot(DartObjectImpl expected, DartObjectImpl operand) {
+// if (expected == null) {
+// try {
+// operand.logicalNot(_typeProvider);
+// JUnitTestCase.fail("Expected an EvaluationException");
+// } on EvaluationException catch (exception) {
+// }
+// } else {
+// DartObjectImpl result = operand.logicalNot(_typeProvider);
+// JUnitTestCase.assertNotNull(result);
+// JUnitTestCase.assertEquals(expected, result);
+// }
+// }
+// /**
+// * Assert that the result of logical-oring the left and right operands is the expected value, or
+// * that the operation throws an exception if the expected value is `null`.
+// *
+// * @param expected the expected result of the operation
+// * @param leftOperand the left operand to the operation
+// * @param rightOperand the left operand to the operation
+// * @throws EvaluationException if the result is an exception when it should not be
+// */
+// void _assertLogicalOr(DartObjectImpl expected, DartObjectImpl leftOperand, DartObjectImpl rightOperand) {
+// if (expected == null) {
+// try {
+// leftOperand.logicalOr(_typeProvider, rightOperand);
+// JUnitTestCase.fail("Expected an EvaluationException");
+// } on EvaluationException catch (exception) {
+// }
+// } else {
+// DartObjectImpl result = leftOperand.logicalOr(_typeProvider, rightOperand);
+// JUnitTestCase.assertNotNull(result);
+// JUnitTestCase.assertEquals(expected, result);
+// }
+// }
+// /**
+// * Assert that the result of subtracting the left and right operands is the expected value, or
+// * that the operation throws an exception if the expected value is `null`.
+// *
+// * @param expected the expected result of the operation
+// * @param leftOperand the left operand to the operation
+// * @param rightOperand the left operand to the operation
+// * @throws EvaluationException if the result is an exception when it should not be
+// */
+// void _assertMinus(DartObjectImpl expected, DartObjectImpl leftOperand, DartObjectImpl rightOperand) {
+// if (expected == null) {
+// try {
+// leftOperand.minus(_typeProvider, rightOperand);
+// JUnitTestCase.fail("Expected an EvaluationException");
+// } on EvaluationException catch (exception) {
+// }
+// } else {
+// DartObjectImpl result = leftOperand.minus(_typeProvider, rightOperand);
+// JUnitTestCase.assertNotNull(result);
+// JUnitTestCase.assertEquals(expected, result);
+// }
+// }
+// /**
+// * Assert that the negation of the operand is the expected value, or that the operation throws an
+// * exception if the expected value is `null`.
+// *
+// * @param expected the expected result of the operation
+// * @param operand the operand to the operation
+// * @throws EvaluationException if the result is an exception when it should not be
+// */
+// void _assertNegated(DartObjectImpl expected, DartObjectImpl operand) {
+// if (expected == null) {
+// try {
+// operand.negated(_typeProvider);
+// JUnitTestCase.fail("Expected an EvaluationException");
+// } on EvaluationException catch (exception) {
+// }
+// } else {
+// DartObjectImpl result = operand.negated(_typeProvider);
+// JUnitTestCase.assertNotNull(result);
+// JUnitTestCase.assertEquals(expected, result);
+// }
+// }
+// /**
+// * Assert that the result of comparing the left and right operands for inequality is the expected
+// * value, or that the operation throws an exception if the expected value is `null`.
+// *
+// * @param expected the expected result of the operation
+// * @param leftOperand the left operand to the operation
+// * @param rightOperand the left operand to the operation
+// * @throws EvaluationException if the result is an exception when it should not be
+// */
+// void _assertNotEqual(DartObjectImpl expected, DartObjectImpl leftOperand, DartObjectImpl rightOperand) {
+// if (expected == null) {
+// try {
+// leftOperand.notEqual(_typeProvider, rightOperand);
+// JUnitTestCase.fail("Expected an EvaluationException");
+// } on EvaluationException catch (exception) {
+// }
+// } else {
+// DartObjectImpl result = leftOperand.notEqual(_typeProvider, rightOperand);
+// JUnitTestCase.assertNotNull(result);
+// JUnitTestCase.assertEquals(expected, result);
+// }
+// }
+// /**
+// * Assert that converting the operand to a string is the expected value, or that the operation
+// * throws an exception if the expected value is `null`.
+// *
+// * @param expected the expected result of the operation
+// * @param operand the operand to the operation
+// * @throws EvaluationException if the result is an exception when it should not be
+// */
+// void _assertPerformToString(DartObjectImpl expected, DartObjectImpl operand) {
+// if (expected == null) {
+// try {
+// operand.performToString(_typeProvider);
+// JUnitTestCase.fail("Expected an EvaluationException");
+// } on EvaluationException catch (exception) {
+// }
+// } else {
+// DartObjectImpl result = operand.performToString(_typeProvider);
+// JUnitTestCase.assertNotNull(result);
+// JUnitTestCase.assertEquals(expected, result);
+// }
+// }
+// /**
+// * Assert that the result of taking the remainder of the left and right operands is the expected
+// * value, or that the operation throws an exception if the expected value is `null`.
+// *
+// * @param expected the expected result of the operation
+// * @param leftOperand the left operand to the operation
+// * @param rightOperand the left operand to the operation
+// * @throws EvaluationException if the result is an exception when it should not be
+// */
+// void _assertRemainder(DartObjectImpl expected, DartObjectImpl leftOperand, DartObjectImpl rightOperand) {
+// if (expected == null) {
+// try {
+// leftOperand.remainder(_typeProvider, rightOperand);
+// JUnitTestCase.fail("Expected an EvaluationException");
+// } on EvaluationException catch (exception) {
+// }
+// } else {
+// DartObjectImpl result = leftOperand.remainder(_typeProvider, rightOperand);
+// JUnitTestCase.assertNotNull(result);
+// JUnitTestCase.assertEquals(expected, result);
+// }
+// }
+// /**
+// * Assert that the result of multiplying the left and right operands is the expected value, or
+// * that the operation throws an exception if the expected value is `null`.
+// *
+// * @param expected the expected result of the operation
+// * @param leftOperand the left operand to the operation
+// * @param rightOperand the left operand to the operation
+// * @throws EvaluationException if the result is an exception when it should not be
+// */
+// void _assertShiftLeft(DartObjectImpl expected, DartObjectImpl leftOperand, DartObjectImpl rightOperand) {
+// if (expected == null) {
+// try {
+// leftOperand.shiftLeft(_typeProvider, rightOperand);
+// JUnitTestCase.fail("Expected an EvaluationException");
+// } on EvaluationException catch (exception) {
+// }
+// } else {
+// DartObjectImpl result = leftOperand.shiftLeft(_typeProvider, rightOperand);
+// JUnitTestCase.assertNotNull(result);
+// JUnitTestCase.assertEquals(expected, result);
+// }
+// }
+// /**
+// * Assert that the result of multiplying the left and right operands is the expected value, or
+// * that the operation throws an exception if the expected value is `null`.
+// *
+// * @param expected the expected result of the operation
+// * @param leftOperand the left operand to the operation
+// * @param rightOperand the left operand to the operation
+// * @throws EvaluationException if the result is an exception when it should not be
+// */
+// void _assertShiftRight(DartObjectImpl expected, DartObjectImpl leftOperand, DartObjectImpl rightOperand) {
+// if (expected == null) {
+// try {
+// leftOperand.shiftRight(_typeProvider, rightOperand);
+// JUnitTestCase.fail("Expected an EvaluationException");
+// } on EvaluationException catch (exception) {
+// }
+// } else {
+// DartObjectImpl result = leftOperand.shiftRight(_typeProvider, rightOperand);
+// JUnitTestCase.assertNotNull(result);
+// JUnitTestCase.assertEquals(expected, result);
+// }
+// }
+// /**
+// * Assert that the result of multiplying the left and right operands is the expected value, or
+// * that the operation throws an exception if the expected value is `null`.
+// *
+// * @param expected the expected result of the operation
+// * @param leftOperand the left operand to the operation
+// * @param rightOperand the left operand to the operation
+// * @throws EvaluationException if the result is an exception when it should not be
+// */
+// void _assertTimes(DartObjectImpl expected, DartObjectImpl leftOperand, DartObjectImpl rightOperand) {
+// if (expected == null) {
+// try {
+// leftOperand.times(_typeProvider, rightOperand);
+// JUnitTestCase.fail("Expected an EvaluationException");
+// } on EvaluationException catch (exception) {
+// }
+// } else {
+// DartObjectImpl result = leftOperand.times(_typeProvider, rightOperand);
+// JUnitTestCase.assertNotNull(result);
+// JUnitTestCase.assertEquals(expected, result);
+// }
+// }
+// DartObjectImpl _boolValue(bool value) {
+// if (value == null) {
+// return new DartObjectImpl(_typeProvider.boolType, BoolState.UNKNOWN_VALUE);
+// } else if (identical(value, false)) {
+// return new DartObjectImpl(_typeProvider.boolType, BoolState.FALSE_STATE);
+// } else if (identical(value, true)) {
+// return new DartObjectImpl(_typeProvider.boolType, BoolState.TRUE_STATE);
+// }
+// JUnitTestCase.fail("Invalid boolean value used in test");
+// return null;
+// }
+// DartObjectImpl _doubleValue(double value) {
+// if (value == null) {
+// return new DartObjectImpl(_typeProvider.doubleType, DoubleState.UNKNOWN_VALUE);
+// } else {
+// return new DartObjectImpl(_typeProvider.doubleType, new DoubleState(value));
+// }
+// }
+// DartObjectImpl _dynamicValue() => new DartObjectImpl(_typeProvider.nullType, DynamicState.DYNAMIC_STATE);
+// DartObjectImpl _intValue(int value) {
+// if (value == null) {
+// return new DartObjectImpl(_typeProvider.intType, IntState.UNKNOWN_VALUE);
+// } else {
+// return new DartObjectImpl(_typeProvider.intType, new IntState(value.longValue()));
+// }
+// }
+// DartObjectImpl _listValue(List<DartObjectImpl> elements) => new DartObjectImpl(_typeProvider.listType, new ListState(elements));
+// DartObjectImpl _mapValue(List<DartObjectImpl> keyElementPairs) {
+// HashMap<DartObjectImpl, DartObjectImpl> map = new HashMap<DartObjectImpl, DartObjectImpl>();
+// int count = keyElementPairs.length;
+// for (int i = 0; i < count;) {
+// map[keyElementPairs[i++]] = keyElementPairs[i++];
+// }
+// return new DartObjectImpl(_typeProvider.mapType, new MapState(map));
+// }
+// DartObjectImpl _nullValue() => new DartObjectImpl(_typeProvider.nullType, NullState.NULL_STATE);
+// DartObjectImpl _numValue() => new DartObjectImpl(_typeProvider.nullType, NumState.UNKNOWN_VALUE);
+// DartObjectImpl _stringValue(String value) {
+// if (value == null) {
+// return new DartObjectImpl(_typeProvider.stringType, StringState.UNKNOWN_VALUE);
+// } else {
+// return new DartObjectImpl(_typeProvider.stringType, new StringState(value));
+// }
+// }
+// DartObjectImpl _symbolValue(String value) => new DartObjectImpl(_typeProvider.symbolType, new SymbolState(value));
+// static dartSuite() {
+// _ut.group('DartObjectImplTest', () {
+// _ut.test('test_add_invalid_knownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_add_invalid_knownInt);
+// });
+// _ut.test('test_add_knownDouble_knownDouble', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_add_knownDouble_knownDouble);
+// });
+// _ut.test('test_add_knownDouble_knownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_add_knownDouble_knownInt);
+// });
+// _ut.test('test_add_knownDouble_unknownDouble', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_add_knownDouble_unknownDouble);
+// });
+// _ut.test('test_add_knownDouble_unknownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_add_knownDouble_unknownInt);
+// });
+// _ut.test('test_add_knownInt_invalid', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_add_knownInt_invalid);
+// });
+// _ut.test('test_add_knownInt_knownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_add_knownInt_knownInt);
+// });
+// _ut.test('test_add_knownInt_unknownDouble', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_add_knownInt_unknownDouble);
+// });
+// _ut.test('test_add_knownInt_unknownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_add_knownInt_unknownInt);
+// });
+// _ut.test('test_add_unknownDouble_knownDouble', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_add_unknownDouble_knownDouble);
+// });
+// _ut.test('test_add_unknownDouble_knownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_add_unknownDouble_knownInt);
+// });
+// _ut.test('test_add_unknownInt_knownDouble', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_add_unknownInt_knownDouble);
+// });
+// _ut.test('test_add_unknownInt_knownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_add_unknownInt_knownInt);
+// });
+// _ut.test('test_bitAnd_invalid_knownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_bitAnd_invalid_knownInt);
+// });
+// _ut.test('test_bitAnd_knownInt_invalid', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_bitAnd_knownInt_invalid);
+// });
+// _ut.test('test_bitAnd_knownInt_knownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_bitAnd_knownInt_knownInt);
+// });
+// _ut.test('test_bitAnd_knownInt_unknownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_bitAnd_knownInt_unknownInt);
+// });
+// _ut.test('test_bitAnd_unknownInt_knownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_bitAnd_unknownInt_knownInt);
+// });
+// _ut.test('test_bitAnd_unknownInt_unknownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_bitAnd_unknownInt_unknownInt);
+// });
+// _ut.test('test_bitNot_invalid', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_bitNot_invalid);
+// });
+// _ut.test('test_bitNot_knownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_bitNot_knownInt);
+// });
+// _ut.test('test_bitNot_unknownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_bitNot_unknownInt);
+// });
+// _ut.test('test_bitOr_invalid_knownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_bitOr_invalid_knownInt);
+// });
+// _ut.test('test_bitOr_knownInt_invalid', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_bitOr_knownInt_invalid);
+// });
+// _ut.test('test_bitOr_knownInt_knownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_bitOr_knownInt_knownInt);
+// });
+// _ut.test('test_bitOr_knownInt_unknownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_bitOr_knownInt_unknownInt);
+// });
+// _ut.test('test_bitOr_unknownInt_knownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_bitOr_unknownInt_knownInt);
+// });
+// _ut.test('test_bitOr_unknownInt_unknownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_bitOr_unknownInt_unknownInt);
+// });
+// _ut.test('test_bitXor_invalid_knownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_bitXor_invalid_knownInt);
+// });
+// _ut.test('test_bitXor_knownInt_invalid', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_bitXor_knownInt_invalid);
+// });
+// _ut.test('test_bitXor_knownInt_knownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_bitXor_knownInt_knownInt);
+// });
+// _ut.test('test_bitXor_knownInt_unknownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_bitXor_knownInt_unknownInt);
+// });
+// _ut.test('test_bitXor_unknownInt_knownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_bitXor_unknownInt_knownInt);
+// });
+// _ut.test('test_bitXor_unknownInt_unknownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_bitXor_unknownInt_unknownInt);
+// });
+// _ut.test('test_concatenate_invalid_knownString', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_concatenate_invalid_knownString);
+// });
+// _ut.test('test_concatenate_knownString_invalid', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_concatenate_knownString_invalid);
+// });
+// _ut.test('test_concatenate_knownString_knownString', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_concatenate_knownString_knownString);
+// });
+// _ut.test('test_concatenate_knownString_unknownString', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_concatenate_knownString_unknownString);
+// });
+// _ut.test('test_concatenate_unknownString_knownString', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_concatenate_unknownString_knownString);
+// });
+// _ut.test('test_divide_invalid_knownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_divide_invalid_knownInt);
+// });
+// _ut.test('test_divide_knownDouble_knownDouble', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_divide_knownDouble_knownDouble);
+// });
+// _ut.test('test_divide_knownDouble_knownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_divide_knownDouble_knownInt);
+// });
+// _ut.test('test_divide_knownDouble_unknownDouble', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_divide_knownDouble_unknownDouble);
+// });
+// _ut.test('test_divide_knownDouble_unknownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_divide_knownDouble_unknownInt);
+// });
+// _ut.test('test_divide_knownInt_invalid', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_divide_knownInt_invalid);
+// });
+// _ut.test('test_divide_knownInt_knownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_divide_knownInt_knownInt);
+// });
+// _ut.test('test_divide_knownInt_unknownDouble', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_divide_knownInt_unknownDouble);
+// });
+// _ut.test('test_divide_knownInt_unknownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_divide_knownInt_unknownInt);
+// });
+// _ut.test('test_divide_unknownDouble_knownDouble', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_divide_unknownDouble_knownDouble);
+// });
+// _ut.test('test_divide_unknownDouble_knownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_divide_unknownDouble_knownInt);
+// });
+// _ut.test('test_divide_unknownInt_knownDouble', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_divide_unknownInt_knownDouble);
+// });
+// _ut.test('test_divide_unknownInt_knownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_divide_unknownInt_knownInt);
+// });
+// _ut.test('test_equalEqual_bool_false', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_equalEqual_bool_false);
+// });
+// _ut.test('test_equalEqual_bool_true', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_equalEqual_bool_true);
+// });
+// _ut.test('test_equalEqual_bool_unknown', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_equalEqual_bool_unknown);
+// });
+// _ut.test('test_equalEqual_double_false', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_equalEqual_double_false);
+// });
+// _ut.test('test_equalEqual_double_true', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_equalEqual_double_true);
+// });
+// _ut.test('test_equalEqual_double_unknown', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_equalEqual_double_unknown);
+// });
+// _ut.test('test_equalEqual_int_false', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_equalEqual_int_false);
+// });
+// _ut.test('test_equalEqual_int_true', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_equalEqual_int_true);
+// });
+// _ut.test('test_equalEqual_int_unknown', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_equalEqual_int_unknown);
+// });
+// _ut.test('test_equalEqual_list_empty', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_equalEqual_list_empty);
+// });
+// _ut.test('test_equalEqual_list_false', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_equalEqual_list_false);
+// });
+// _ut.test('test_equalEqual_map_empty', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_equalEqual_map_empty);
+// });
+// _ut.test('test_equalEqual_map_false', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_equalEqual_map_false);
+// });
+// _ut.test('test_equalEqual_null', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_equalEqual_null);
+// });
+// _ut.test('test_equalEqual_string_false', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_equalEqual_string_false);
+// });
+// _ut.test('test_equalEqual_string_true', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_equalEqual_string_true);
+// });
+// _ut.test('test_equalEqual_string_unknown', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_equalEqual_string_unknown);
+// });
+// _ut.test('test_equals_list_false_differentSizes', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_equals_list_false_differentSizes);
+// });
+// _ut.test('test_equals_list_false_sameSize', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_equals_list_false_sameSize);
+// });
+// _ut.test('test_equals_list_true_empty', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_equals_list_true_empty);
+// });
+// _ut.test('test_equals_list_true_nonEmpty', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_equals_list_true_nonEmpty);
+// });
+// _ut.test('test_equals_map_true_empty', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_equals_map_true_empty);
+// });
+// _ut.test('test_equals_symbol_false', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_equals_symbol_false);
+// });
+// _ut.test('test_equals_symbol_true', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_equals_symbol_true);
+// });
+// _ut.test('test_getValue_bool_false', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_getValue_bool_false);
+// });
+// _ut.test('test_getValue_bool_true', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_getValue_bool_true);
+// });
+// _ut.test('test_getValue_bool_unknown', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_getValue_bool_unknown);
+// });
+// _ut.test('test_getValue_double_known', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_getValue_double_known);
+// });
+// _ut.test('test_getValue_double_unknown', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_getValue_double_unknown);
+// });
+// _ut.test('test_getValue_int_known', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_getValue_int_known);
+// });
+// _ut.test('test_getValue_int_unknown', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_getValue_int_unknown);
+// });
+// _ut.test('test_getValue_list_empty', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_getValue_list_empty);
+// });
+// _ut.test('test_getValue_list_valid', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_getValue_list_valid);
+// });
+// _ut.test('test_getValue_map_empty', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_getValue_map_empty);
+// });
+// _ut.test('test_getValue_map_valid', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_getValue_map_valid);
+// });
+// _ut.test('test_getValue_null', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_getValue_null);
+// });
+// _ut.test('test_getValue_string_known', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_getValue_string_known);
+// });
+// _ut.test('test_getValue_string_unknown', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_getValue_string_unknown);
+// });
+// _ut.test('test_greaterThanOrEqual_invalid_knownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_greaterThanOrEqual_invalid_knownInt);
+// });
+// _ut.test('test_greaterThanOrEqual_knownDouble_knownDouble_false', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_greaterThanOrEqual_knownDouble_knownDouble_false);
+// });
+// _ut.test('test_greaterThanOrEqual_knownDouble_knownDouble_true', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_greaterThanOrEqual_knownDouble_knownDouble_true);
+// });
+// _ut.test('test_greaterThanOrEqual_knownDouble_knownInt_false', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_greaterThanOrEqual_knownDouble_knownInt_false);
+// });
+// _ut.test('test_greaterThanOrEqual_knownDouble_knownInt_true', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_greaterThanOrEqual_knownDouble_knownInt_true);
+// });
+// _ut.test('test_greaterThanOrEqual_knownDouble_unknownDouble', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_greaterThanOrEqual_knownDouble_unknownDouble);
+// });
+// _ut.test('test_greaterThanOrEqual_knownDouble_unknownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_greaterThanOrEqual_knownDouble_unknownInt);
+// });
+// _ut.test('test_greaterThanOrEqual_knownInt_invalid', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_greaterThanOrEqual_knownInt_invalid);
+// });
+// _ut.test('test_greaterThanOrEqual_knownInt_knownInt_false', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_greaterThanOrEqual_knownInt_knownInt_false);
+// });
+// _ut.test('test_greaterThanOrEqual_knownInt_knownInt_true', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_greaterThanOrEqual_knownInt_knownInt_true);
+// });
+// _ut.test('test_greaterThanOrEqual_knownInt_unknownDouble', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_greaterThanOrEqual_knownInt_unknownDouble);
+// });
+// _ut.test('test_greaterThanOrEqual_knownInt_unknownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_greaterThanOrEqual_knownInt_unknownInt);
+// });
+// _ut.test('test_greaterThanOrEqual_unknownDouble_knownDouble', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_greaterThanOrEqual_unknownDouble_knownDouble);
+// });
+// _ut.test('test_greaterThanOrEqual_unknownDouble_knownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_greaterThanOrEqual_unknownDouble_knownInt);
+// });
+// _ut.test('test_greaterThanOrEqual_unknownInt_knownDouble', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_greaterThanOrEqual_unknownInt_knownDouble);
+// });
+// _ut.test('test_greaterThanOrEqual_unknownInt_knownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_greaterThanOrEqual_unknownInt_knownInt);
+// });
+// _ut.test('test_greaterThan_invalid_knownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_greaterThan_invalid_knownInt);
+// });
+// _ut.test('test_greaterThan_knownDouble_knownDouble_false', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_greaterThan_knownDouble_knownDouble_false);
+// });
+// _ut.test('test_greaterThan_knownDouble_knownDouble_true', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_greaterThan_knownDouble_knownDouble_true);
+// });
+// _ut.test('test_greaterThan_knownDouble_knownInt_false', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_greaterThan_knownDouble_knownInt_false);
+// });
+// _ut.test('test_greaterThan_knownDouble_knownInt_true', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_greaterThan_knownDouble_knownInt_true);
+// });
+// _ut.test('test_greaterThan_knownDouble_unknownDouble', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_greaterThan_knownDouble_unknownDouble);
+// });
+// _ut.test('test_greaterThan_knownDouble_unknownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_greaterThan_knownDouble_unknownInt);
+// });
+// _ut.test('test_greaterThan_knownInt_invalid', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_greaterThan_knownInt_invalid);
+// });
+// _ut.test('test_greaterThan_knownInt_knownInt_false', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_greaterThan_knownInt_knownInt_false);
+// });
+// _ut.test('test_greaterThan_knownInt_knownInt_true', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_greaterThan_knownInt_knownInt_true);
+// });
+// _ut.test('test_greaterThan_knownInt_unknownDouble', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_greaterThan_knownInt_unknownDouble);
+// });
+// _ut.test('test_greaterThan_knownInt_unknownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_greaterThan_knownInt_unknownInt);
+// });
+// _ut.test('test_greaterThan_unknownDouble_knownDouble', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_greaterThan_unknownDouble_knownDouble);
+// });
+// _ut.test('test_greaterThan_unknownDouble_knownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_greaterThan_unknownDouble_knownInt);
+// });
+// _ut.test('test_greaterThan_unknownInt_knownDouble', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_greaterThan_unknownInt_knownDouble);
+// });
+// _ut.test('test_greaterThan_unknownInt_knownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_greaterThan_unknownInt_knownInt);
+// });
+// _ut.test('test_hasExactValue_bool_false', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_hasExactValue_bool_false);
+// });
+// _ut.test('test_hasExactValue_bool_true', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_hasExactValue_bool_true);
+// });
+// _ut.test('test_hasExactValue_bool_unknown', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_hasExactValue_bool_unknown);
+// });
+// _ut.test('test_hasExactValue_double_known', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_hasExactValue_double_known);
+// });
+// _ut.test('test_hasExactValue_double_unknown', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_hasExactValue_double_unknown);
+// });
+// _ut.test('test_hasExactValue_dynamic', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_hasExactValue_dynamic);
+// });
+// _ut.test('test_hasExactValue_int_known', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_hasExactValue_int_known);
+// });
+// _ut.test('test_hasExactValue_int_unknown', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_hasExactValue_int_unknown);
+// });
+// _ut.test('test_hasExactValue_list_empty', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_hasExactValue_list_empty);
+// });
+// _ut.test('test_hasExactValue_list_invalid', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_hasExactValue_list_invalid);
+// });
+// _ut.test('test_hasExactValue_list_valid', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_hasExactValue_list_valid);
+// });
+// _ut.test('test_hasExactValue_map_empty', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_hasExactValue_map_empty);
+// });
+// _ut.test('test_hasExactValue_map_invalidKey', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_hasExactValue_map_invalidKey);
+// });
+// _ut.test('test_hasExactValue_map_invalidValue', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_hasExactValue_map_invalidValue);
+// });
+// _ut.test('test_hasExactValue_map_valid', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_hasExactValue_map_valid);
+// });
+// _ut.test('test_hasExactValue_null', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_hasExactValue_null);
+// });
+// _ut.test('test_hasExactValue_num', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_hasExactValue_num);
+// });
+// _ut.test('test_hasExactValue_string_known', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_hasExactValue_string_known);
+// });
+// _ut.test('test_hasExactValue_string_unknown', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_hasExactValue_string_unknown);
+// });
+// _ut.test('test_integerDivide_invalid_knownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_integerDivide_invalid_knownInt);
+// });
+// _ut.test('test_integerDivide_knownDouble_knownDouble', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_integerDivide_knownDouble_knownDouble);
+// });
+// _ut.test('test_integerDivide_knownDouble_knownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_integerDivide_knownDouble_knownInt);
+// });
+// _ut.test('test_integerDivide_knownDouble_unknownDouble', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_integerDivide_knownDouble_unknownDouble);
+// });
+// _ut.test('test_integerDivide_knownDouble_unknownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_integerDivide_knownDouble_unknownInt);
+// });
+// _ut.test('test_integerDivide_knownInt_invalid', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_integerDivide_knownInt_invalid);
+// });
+// _ut.test('test_integerDivide_knownInt_knownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_integerDivide_knownInt_knownInt);
+// });
+// _ut.test('test_integerDivide_knownInt_unknownDouble', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_integerDivide_knownInt_unknownDouble);
+// });
+// _ut.test('test_integerDivide_knownInt_unknownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_integerDivide_knownInt_unknownInt);
+// });
+// _ut.test('test_integerDivide_unknownDouble_knownDouble', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_integerDivide_unknownDouble_knownDouble);
+// });
+// _ut.test('test_integerDivide_unknownDouble_knownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_integerDivide_unknownDouble_knownInt);
+// });
+// _ut.test('test_integerDivide_unknownInt_knownDouble', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_integerDivide_unknownInt_knownDouble);
+// });
+// _ut.test('test_integerDivide_unknownInt_knownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_integerDivide_unknownInt_knownInt);
+// });
+// _ut.test('test_isBoolNumStringOrNull_bool_false', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_isBoolNumStringOrNull_bool_false);
+// });
+// _ut.test('test_isBoolNumStringOrNull_bool_true', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_isBoolNumStringOrNull_bool_true);
+// });
+// _ut.test('test_isBoolNumStringOrNull_bool_unknown', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_isBoolNumStringOrNull_bool_unknown);
+// });
+// _ut.test('test_isBoolNumStringOrNull_double_known', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_isBoolNumStringOrNull_double_known);
+// });
+// _ut.test('test_isBoolNumStringOrNull_double_unknown', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_isBoolNumStringOrNull_double_unknown);
+// });
+// _ut.test('test_isBoolNumStringOrNull_dynamic', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_isBoolNumStringOrNull_dynamic);
+// });
+// _ut.test('test_isBoolNumStringOrNull_int_known', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_isBoolNumStringOrNull_int_known);
+// });
+// _ut.test('test_isBoolNumStringOrNull_int_unknown', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_isBoolNumStringOrNull_int_unknown);
+// });
+// _ut.test('test_isBoolNumStringOrNull_list', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_isBoolNumStringOrNull_list);
+// });
+// _ut.test('test_isBoolNumStringOrNull_null', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_isBoolNumStringOrNull_null);
+// });
+// _ut.test('test_isBoolNumStringOrNull_num', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_isBoolNumStringOrNull_num);
+// });
+// _ut.test('test_isBoolNumStringOrNull_string_known', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_isBoolNumStringOrNull_string_known);
+// });
+// _ut.test('test_isBoolNumStringOrNull_string_unknown', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_isBoolNumStringOrNull_string_unknown);
+// });
+// _ut.test('test_lessThanOrEqual_invalid_knownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_lessThanOrEqual_invalid_knownInt);
+// });
+// _ut.test('test_lessThanOrEqual_knownDouble_knownDouble_false', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_lessThanOrEqual_knownDouble_knownDouble_false);
+// });
+// _ut.test('test_lessThanOrEqual_knownDouble_knownDouble_true', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_lessThanOrEqual_knownDouble_knownDouble_true);
+// });
+// _ut.test('test_lessThanOrEqual_knownDouble_knownInt_false', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_lessThanOrEqual_knownDouble_knownInt_false);
+// });
+// _ut.test('test_lessThanOrEqual_knownDouble_knownInt_true', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_lessThanOrEqual_knownDouble_knownInt_true);
+// });
+// _ut.test('test_lessThanOrEqual_knownDouble_unknownDouble', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_lessThanOrEqual_knownDouble_unknownDouble);
+// });
+// _ut.test('test_lessThanOrEqual_knownDouble_unknownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_lessThanOrEqual_knownDouble_unknownInt);
+// });
+// _ut.test('test_lessThanOrEqual_knownInt_invalid', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_lessThanOrEqual_knownInt_invalid);
+// });
+// _ut.test('test_lessThanOrEqual_knownInt_knownInt_false', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_lessThanOrEqual_knownInt_knownInt_false);
+// });
+// _ut.test('test_lessThanOrEqual_knownInt_knownInt_true', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_lessThanOrEqual_knownInt_knownInt_true);
+// });
+// _ut.test('test_lessThanOrEqual_knownInt_unknownDouble', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_lessThanOrEqual_knownInt_unknownDouble);
+// });
+// _ut.test('test_lessThanOrEqual_knownInt_unknownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_lessThanOrEqual_knownInt_unknownInt);
+// });
+// _ut.test('test_lessThanOrEqual_unknownDouble_knownDouble', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_lessThanOrEqual_unknownDouble_knownDouble);
+// });
+// _ut.test('test_lessThanOrEqual_unknownDouble_knownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_lessThanOrEqual_unknownDouble_knownInt);
+// });
+// _ut.test('test_lessThanOrEqual_unknownInt_knownDouble', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_lessThanOrEqual_unknownInt_knownDouble);
+// });
+// _ut.test('test_lessThanOrEqual_unknownInt_knownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_lessThanOrEqual_unknownInt_knownInt);
+// });
+// _ut.test('test_lessThan_invalid_knownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_lessThan_invalid_knownInt);
+// });
+// _ut.test('test_lessThan_knownDouble_knownDouble_false', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_lessThan_knownDouble_knownDouble_false);
+// });
+// _ut.test('test_lessThan_knownDouble_knownDouble_true', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_lessThan_knownDouble_knownDouble_true);
+// });
+// _ut.test('test_lessThan_knownDouble_knownInt_false', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_lessThan_knownDouble_knownInt_false);
+// });
+// _ut.test('test_lessThan_knownDouble_knownInt_true', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_lessThan_knownDouble_knownInt_true);
+// });
+// _ut.test('test_lessThan_knownDouble_unknownDouble', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_lessThan_knownDouble_unknownDouble);
+// });
+// _ut.test('test_lessThan_knownDouble_unknownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_lessThan_knownDouble_unknownInt);
+// });
+// _ut.test('test_lessThan_knownInt_invalid', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_lessThan_knownInt_invalid);
+// });
+// _ut.test('test_lessThan_knownInt_knownInt_false', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_lessThan_knownInt_knownInt_false);
+// });
+// _ut.test('test_lessThan_knownInt_knownInt_true', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_lessThan_knownInt_knownInt_true);
+// });
+// _ut.test('test_lessThan_knownInt_unknownDouble', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_lessThan_knownInt_unknownDouble);
+// });
+// _ut.test('test_lessThan_knownInt_unknownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_lessThan_knownInt_unknownInt);
+// });
+// _ut.test('test_lessThan_unknownDouble_knownDouble', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_lessThan_unknownDouble_knownDouble);
+// });
+// _ut.test('test_lessThan_unknownDouble_knownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_lessThan_unknownDouble_knownInt);
+// });
+// _ut.test('test_lessThan_unknownInt_knownDouble', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_lessThan_unknownInt_knownDouble);
+// });
+// _ut.test('test_lessThan_unknownInt_knownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_lessThan_unknownInt_knownInt);
+// });
+// _ut.test('test_logicalAnd_false_false', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_logicalAnd_false_false);
+// });
+// _ut.test('test_logicalAnd_false_null', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_logicalAnd_false_null);
+// });
+// _ut.test('test_logicalAnd_false_string', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_logicalAnd_false_string);
+// });
+// _ut.test('test_logicalAnd_false_true', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_logicalAnd_false_true);
+// });
+// _ut.test('test_logicalAnd_null_false', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_logicalAnd_null_false);
+// });
+// _ut.test('test_logicalAnd_null_true', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_logicalAnd_null_true);
+// });
+// _ut.test('test_logicalAnd_string_false', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_logicalAnd_string_false);
+// });
+// _ut.test('test_logicalAnd_string_true', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_logicalAnd_string_true);
+// });
+// _ut.test('test_logicalAnd_true_false', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_logicalAnd_true_false);
+// });
+// _ut.test('test_logicalAnd_true_null', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_logicalAnd_true_null);
+// });
+// _ut.test('test_logicalAnd_true_string', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_logicalAnd_true_string);
+// });
+// _ut.test('test_logicalAnd_true_true', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_logicalAnd_true_true);
+// });
+// _ut.test('test_logicalNot_false', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_logicalNot_false);
+// });
+// _ut.test('test_logicalNot_null', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_logicalNot_null);
+// });
+// _ut.test('test_logicalNot_string', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_logicalNot_string);
+// });
+// _ut.test('test_logicalNot_true', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_logicalNot_true);
+// });
+// _ut.test('test_logicalNot_unknown', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_logicalNot_unknown);
+// });
+// _ut.test('test_logicalOr_false_false', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_logicalOr_false_false);
+// });
+// _ut.test('test_logicalOr_false_null', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_logicalOr_false_null);
+// });
+// _ut.test('test_logicalOr_false_string', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_logicalOr_false_string);
+// });
+// _ut.test('test_logicalOr_false_true', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_logicalOr_false_true);
+// });
+// _ut.test('test_logicalOr_null_false', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_logicalOr_null_false);
+// });
+// _ut.test('test_logicalOr_null_true', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_logicalOr_null_true);
+// });
+// _ut.test('test_logicalOr_string_false', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_logicalOr_string_false);
+// });
+// _ut.test('test_logicalOr_string_true', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_logicalOr_string_true);
+// });
+// _ut.test('test_logicalOr_true_false', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_logicalOr_true_false);
+// });
+// _ut.test('test_logicalOr_true_null', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_logicalOr_true_null);
+// });
+// _ut.test('test_logicalOr_true_string', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_logicalOr_true_string);
+// });
+// _ut.test('test_logicalOr_true_true', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_logicalOr_true_true);
+// });
+// _ut.test('test_minus_invalid_knownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_minus_invalid_knownInt);
+// });
+// _ut.test('test_minus_knownDouble_knownDouble', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_minus_knownDouble_knownDouble);
+// });
+// _ut.test('test_minus_knownDouble_knownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_minus_knownDouble_knownInt);
+// });
+// _ut.test('test_minus_knownDouble_unknownDouble', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_minus_knownDouble_unknownDouble);
+// });
+// _ut.test('test_minus_knownDouble_unknownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_minus_knownDouble_unknownInt);
+// });
+// _ut.test('test_minus_knownInt_invalid', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_minus_knownInt_invalid);
+// });
+// _ut.test('test_minus_knownInt_knownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_minus_knownInt_knownInt);
+// });
+// _ut.test('test_minus_knownInt_unknownDouble', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_minus_knownInt_unknownDouble);
+// });
+// _ut.test('test_minus_knownInt_unknownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_minus_knownInt_unknownInt);
+// });
+// _ut.test('test_minus_unknownDouble_knownDouble', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_minus_unknownDouble_knownDouble);
+// });
+// _ut.test('test_minus_unknownDouble_knownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_minus_unknownDouble_knownInt);
+// });
+// _ut.test('test_minus_unknownInt_knownDouble', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_minus_unknownInt_knownDouble);
+// });
+// _ut.test('test_minus_unknownInt_knownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_minus_unknownInt_knownInt);
+// });
+// _ut.test('test_negated_double_known', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_negated_double_known);
+// });
+// _ut.test('test_negated_double_unknown', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_negated_double_unknown);
+// });
+// _ut.test('test_negated_int_known', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_negated_int_known);
+// });
+// _ut.test('test_negated_int_unknown', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_negated_int_unknown);
+// });
+// _ut.test('test_negated_string', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_negated_string);
+// });
+// _ut.test('test_notEqual_bool_false', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_notEqual_bool_false);
+// });
+// _ut.test('test_notEqual_bool_true', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_notEqual_bool_true);
+// });
+// _ut.test('test_notEqual_bool_unknown', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_notEqual_bool_unknown);
+// });
+// _ut.test('test_notEqual_double_false', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_notEqual_double_false);
+// });
+// _ut.test('test_notEqual_double_true', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_notEqual_double_true);
+// });
+// _ut.test('test_notEqual_double_unknown', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_notEqual_double_unknown);
+// });
+// _ut.test('test_notEqual_int_false', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_notEqual_int_false);
+// });
+// _ut.test('test_notEqual_int_true', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_notEqual_int_true);
+// });
+// _ut.test('test_notEqual_int_unknown', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_notEqual_int_unknown);
+// });
+// _ut.test('test_notEqual_null', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_notEqual_null);
+// });
+// _ut.test('test_notEqual_string_false', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_notEqual_string_false);
+// });
+// _ut.test('test_notEqual_string_true', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_notEqual_string_true);
+// });
+// _ut.test('test_notEqual_string_unknown', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_notEqual_string_unknown);
+// });
+// _ut.test('test_performToString_bool_false', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_performToString_bool_false);
+// });
+// _ut.test('test_performToString_bool_true', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_performToString_bool_true);
+// });
+// _ut.test('test_performToString_bool_unknown', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_performToString_bool_unknown);
+// });
+// _ut.test('test_performToString_double_known', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_performToString_double_known);
+// });
+// _ut.test('test_performToString_double_unknown', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_performToString_double_unknown);
+// });
+// _ut.test('test_performToString_int_known', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_performToString_int_known);
+// });
+// _ut.test('test_performToString_int_unknown', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_performToString_int_unknown);
+// });
+// _ut.test('test_performToString_null', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_performToString_null);
+// });
+// _ut.test('test_performToString_string_known', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_performToString_string_known);
+// });
+// _ut.test('test_performToString_string_unknown', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_performToString_string_unknown);
+// });
+// _ut.test('test_remainder_invalid_knownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_remainder_invalid_knownInt);
+// });
+// _ut.test('test_remainder_knownDouble_knownDouble', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_remainder_knownDouble_knownDouble);
+// });
+// _ut.test('test_remainder_knownDouble_knownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_remainder_knownDouble_knownInt);
+// });
+// _ut.test('test_remainder_knownDouble_unknownDouble', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_remainder_knownDouble_unknownDouble);
+// });
+// _ut.test('test_remainder_knownDouble_unknownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_remainder_knownDouble_unknownInt);
+// });
+// _ut.test('test_remainder_knownInt_invalid', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_remainder_knownInt_invalid);
+// });
+// _ut.test('test_remainder_knownInt_knownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_remainder_knownInt_knownInt);
+// });
+// _ut.test('test_remainder_knownInt_unknownDouble', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_remainder_knownInt_unknownDouble);
+// });
+// _ut.test('test_remainder_knownInt_unknownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_remainder_knownInt_unknownInt);
+// });
+// _ut.test('test_remainder_unknownDouble_knownDouble', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_remainder_unknownDouble_knownDouble);
+// });
+// _ut.test('test_remainder_unknownDouble_knownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_remainder_unknownDouble_knownInt);
+// });
+// _ut.test('test_remainder_unknownInt_knownDouble', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_remainder_unknownInt_knownDouble);
+// });
+// _ut.test('test_remainder_unknownInt_knownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_remainder_unknownInt_knownInt);
+// });
+// _ut.test('test_shiftLeft_invalid_knownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_shiftLeft_invalid_knownInt);
+// });
+// _ut.test('test_shiftLeft_knownInt_invalid', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_shiftLeft_knownInt_invalid);
+// });
+// _ut.test('test_shiftLeft_knownInt_knownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_shiftLeft_knownInt_knownInt);
+// });
+// _ut.test('test_shiftLeft_knownInt_tooLarge', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_shiftLeft_knownInt_tooLarge);
+// });
+// _ut.test('test_shiftLeft_knownInt_unknownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_shiftLeft_knownInt_unknownInt);
+// });
+// _ut.test('test_shiftLeft_unknownInt_knownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_shiftLeft_unknownInt_knownInt);
+// });
+// _ut.test('test_shiftLeft_unknownInt_unknownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_shiftLeft_unknownInt_unknownInt);
+// });
+// _ut.test('test_shiftRight_invalid_knownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_shiftRight_invalid_knownInt);
+// });
+// _ut.test('test_shiftRight_knownInt_invalid', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_shiftRight_knownInt_invalid);
+// });
+// _ut.test('test_shiftRight_knownInt_knownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_shiftRight_knownInt_knownInt);
+// });
+// _ut.test('test_shiftRight_knownInt_tooLarge', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_shiftRight_knownInt_tooLarge);
+// });
+// _ut.test('test_shiftRight_knownInt_unknownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_shiftRight_knownInt_unknownInt);
+// });
+// _ut.test('test_shiftRight_unknownInt_knownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_shiftRight_unknownInt_knownInt);
+// });
+// _ut.test('test_shiftRight_unknownInt_unknownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_shiftRight_unknownInt_unknownInt);
+// });
+// _ut.test('test_times_invalid_knownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_times_invalid_knownInt);
+// });
+// _ut.test('test_times_knownDouble_knownDouble', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_times_knownDouble_knownDouble);
+// });
+// _ut.test('test_times_knownDouble_knownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_times_knownDouble_knownInt);
+// });
+// _ut.test('test_times_knownDouble_unknownDouble', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_times_knownDouble_unknownDouble);
+// });
+// _ut.test('test_times_knownDouble_unknownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_times_knownDouble_unknownInt);
+// });
+// _ut.test('test_times_knownInt_invalid', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_times_knownInt_invalid);
+// });
+// _ut.test('test_times_knownInt_knownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_times_knownInt_knownInt);
+// });
+// _ut.test('test_times_knownInt_unknownDouble', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_times_knownInt_unknownDouble);
+// });
+// _ut.test('test_times_knownInt_unknownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_times_knownInt_unknownInt);
+// });
+// _ut.test('test_times_unknownDouble_knownDouble', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_times_unknownDouble_knownDouble);
+// });
+// _ut.test('test_times_unknownDouble_knownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_times_unknownDouble_knownInt);
+// });
+// _ut.test('test_times_unknownInt_knownDouble', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_times_unknownInt_knownDouble);
+// });
+// _ut.test('test_times_unknownInt_knownInt', () {
+// final __test = new DartObjectImplTest();
+// runJUnitTest(__test, __test.test_times_unknownInt_knownInt);
+// });
+// });
+// }
+// }
+// class DartUriResolverTest extends JUnitTestCase {
+// void test_creation() {
+// JavaFile sdkDirectory = DirectoryBasedDartSdk.defaultSdkDirectory;
+// JUnitTestCase.assertNotNull(sdkDirectory);
+// DartSdk sdk = new DirectoryBasedDartSdk(sdkDirectory);
+// JUnitTestCase.assertNotNull(new DartUriResolver(sdk));
+// }
+// void test_isDartUri_null_scheme() {
+// Uri uri = parseUriWithException("foo.dart");
+// JUnitTestCase.assertNull(uri.scheme);
+// JUnitTestCase.assertFalse(DartUriResolver.isDartUri(uri));
+// }
+// void test_resolve_dart() {
+// JavaFile sdkDirectory = DirectoryBasedDartSdk.defaultSdkDirectory;
+// JUnitTestCase.assertNotNull(sdkDirectory);
+// DartSdk sdk = new DirectoryBasedDartSdk(sdkDirectory);
+// UriResolver resolver = new DartUriResolver(sdk);
+// Source result = resolver.resolveAbsolute(parseUriWithException("dart:core"));
+// JUnitTestCase.assertNotNull(result);
+// }
+// void test_resolve_dart_nonExistingLibrary() {
+// JavaFile sdkDirectory = DirectoryBasedDartSdk.defaultSdkDirectory;
+// JUnitTestCase.assertNotNull(sdkDirectory);
+// DartSdk sdk = new DirectoryBasedDartSdk(sdkDirectory);
+// UriResolver resolver = new DartUriResolver(sdk);
+// Source result = resolver.resolveAbsolute(parseUriWithException("dart:cor"));
+// JUnitTestCase.assertNull(result);
+// }
+// void test_resolve_nonDart() {
+// JavaFile sdkDirectory = DirectoryBasedDartSdk.defaultSdkDirectory;
+// JUnitTestCase.assertNotNull(sdkDirectory);
+// DartSdk sdk = new DirectoryBasedDartSdk(sdkDirectory);
+// UriResolver resolver = new DartUriResolver(sdk);
+// Source result = resolver.resolveAbsolute(parseUriWithException("package:some/file.dart"));
+// JUnitTestCase.assertNull(result);
+// }
+// static dartSuite() {
+// _ut.group('DartUriResolverTest', () {
+// _ut.test('test_creation', () {
+// final __test = new DartUriResolverTest();
+// runJUnitTest(__test, __test.test_creation);
+// });
+// _ut.test('test_isDartUri_null_scheme', () {
+// final __test = new DartUriResolverTest();
+// runJUnitTest(__test, __test.test_isDartUri_null_scheme);
+// });
+// _ut.test('test_resolve_dart', () {
+// final __test = new DartUriResolverTest();
+// runJUnitTest(__test, __test.test_resolve_dart);
+// });
+// _ut.test('test_resolve_dart_nonExistingLibrary', () {
+// final __test = new DartUriResolverTest();
+// runJUnitTest(__test, __test.test_resolve_dart_nonExistingLibrary);
+// });
+// _ut.test('test_resolve_nonDart', () {
+// final __test = new DartUriResolverTest();
+// runJUnitTest(__test, __test.test_resolve_nonDart);
+// });
+// });
+// }
+// }
+// class DeclaredVariablesTest extends EngineTestCase {
+// void test_getBool_false() {
+// TestTypeProvider typeProvider = new TestTypeProvider();
+// String variableName = "var";
+// DeclaredVariables variables = new DeclaredVariables();
+// variables.define(variableName, "false");
+// DartObject object = variables.getBool(typeProvider, variableName);
+// JUnitTestCase.assertNotNull(object);
+// JUnitTestCase.assertEquals(false, object.boolValue);
+// }
+// void test_getBool_invalid() {
+// TestTypeProvider typeProvider = new TestTypeProvider();
+// String variableName = "var";
+// DeclaredVariables variables = new DeclaredVariables();
+// variables.define(variableName, "not true");
+// _assertNullDartObject(typeProvider, variables.getBool(typeProvider, variableName));
+// }
+// void test_getBool_true() {
+// TestTypeProvider typeProvider = new TestTypeProvider();
+// String variableName = "var";
+// DeclaredVariables variables = new DeclaredVariables();
+// variables.define(variableName, "true");
+// DartObject object = variables.getBool(typeProvider, variableName);
+// JUnitTestCase.assertNotNull(object);
+// JUnitTestCase.assertEquals(true, object.boolValue);
+// }
+// void test_getBool_undefined() {
+// TestTypeProvider typeProvider = new TestTypeProvider();
+// String variableName = "var";
+// DeclaredVariables variables = new DeclaredVariables();
+// _assertUnknownDartObject(variables.getBool(typeProvider, variableName));
+// }
+// void test_getInt_invalid() {
+// TestTypeProvider typeProvider = new TestTypeProvider();
+// String variableName = "var";
+// DeclaredVariables variables = new DeclaredVariables();
+// variables.define(variableName, "four score and seven years");
+// _assertNullDartObject(typeProvider, variables.getInt(typeProvider, variableName));
+// }
+// void test_getInt_undefined() {
+// TestTypeProvider typeProvider = new TestTypeProvider();
+// String variableName = "var";
+// DeclaredVariables variables = new DeclaredVariables();
+// _assertUnknownDartObject(variables.getInt(typeProvider, variableName));
+// }
+// void test_getInt_valid() {
+// TestTypeProvider typeProvider = new TestTypeProvider();
+// String variableName = "var";
+// DeclaredVariables variables = new DeclaredVariables();
+// variables.define(variableName, "23");
+// DartObject object = variables.getInt(typeProvider, variableName);
+// JUnitTestCase.assertNotNull(object);
+// JUnitTestCase.assertEquals(23, object.intValue);
+// }
+// void test_getString_defined() {
+// TestTypeProvider typeProvider = new TestTypeProvider();
+// String variableName = "var";
+// String value = "value";
+// DeclaredVariables variables = new DeclaredVariables();
+// variables.define(variableName, value);
+// DartObject object = variables.getString(typeProvider, variableName);
+// JUnitTestCase.assertNotNull(object);
+// JUnitTestCase.assertEquals(value, object.stringValue);
+// }
+// void test_getString_undefined() {
+// TestTypeProvider typeProvider = new TestTypeProvider();
+// String variableName = "var";
+// DeclaredVariables variables = new DeclaredVariables();
+// _assertUnknownDartObject(variables.getString(typeProvider, variableName));
+// }
+// void _assertNullDartObject(TestTypeProvider typeProvider, DartObject result) {
+// JUnitTestCase.assertEquals(typeProvider.nullType, result.type);
+// }
+// void _assertUnknownDartObject(DartObject result) {
+// JUnitTestCase.assertTrue((result as DartObjectImpl).isUnknown);
+// }
+// static dartSuite() {
+// _ut.group('DeclaredVariablesTest', () {
+// _ut.test('test_getBool_false', () {
+// final __test = new DeclaredVariablesTest();
+// runJUnitTest(__test, __test.test_getBool_false);
+// });
+// _ut.test('test_getBool_invalid', () {
+// final __test = new DeclaredVariablesTest();
+// runJUnitTest(__test, __test.test_getBool_invalid);
+// });
+// _ut.test('test_getBool_true', () {
+// final __test = new DeclaredVariablesTest();
+// runJUnitTest(__test, __test.test_getBool_true);
+// });
+// _ut.test('test_getBool_undefined', () {
+// final __test = new DeclaredVariablesTest();
+// runJUnitTest(__test, __test.test_getBool_undefined);
+// });
+// _ut.test('test_getInt_invalid', () {
+// final __test = new DeclaredVariablesTest();
+// runJUnitTest(__test, __test.test_getInt_invalid);
+// });
+// _ut.test('test_getInt_undefined', () {
+// final __test = new DeclaredVariablesTest();
+// runJUnitTest(__test, __test.test_getInt_undefined);
+// });
+// _ut.test('test_getInt_valid', () {
+// final __test = new DeclaredVariablesTest();
+// runJUnitTest(__test, __test.test_getInt_valid);
+// });
+// _ut.test('test_getString_defined', () {
+// final __test = new DeclaredVariablesTest();
+// runJUnitTest(__test, __test.test_getString_defined);
+// });
+// _ut.test('test_getString_undefined', () {
+// final __test = new DeclaredVariablesTest();
+// runJUnitTest(__test, __test.test_getString_undefined);
+// });
+// });
+// }
+// }
+// class DirectoryBasedDartSdkTest extends JUnitTestCase {
+// void fail_getDocFileFor() {
+// DirectoryBasedDartSdk sdk = _createDartSdk();
+// JavaFile docFile = sdk.getDocFileFor("html");
+// JUnitTestCase.assertNotNull(docFile);
+// }
+// void test_creation() {
+// DirectoryBasedDartSdk sdk = _createDartSdk();
+// JUnitTestCase.assertNotNull(sdk);
+// }
+// void test_fromFile_invalid() {
+// DirectoryBasedDartSdk sdk = _createDartSdk();
+// JUnitTestCase.assertNull(sdk.fromFileUri(new JavaFile("/not/in/the/sdk.dart").toURI()));
+// }
+// void test_fromFile_library() {
+// DirectoryBasedDartSdk sdk = _createDartSdk();
+// Source source = sdk.fromFileUri(new JavaFile.relative(new JavaFile.relative(sdk.libraryDirectory, "core"), "core.dart").toURI());
+// JUnitTestCase.assertNotNull(source);
+// JUnitTestCase.assertTrue(source.isInSystemLibrary);
+// JUnitTestCase.assertEquals("dart:core", source.uri.toString());
+// }
+// void test_fromFile_part() {
+// DirectoryBasedDartSdk sdk = _createDartSdk();
+// Source source = sdk.fromFileUri(new JavaFile.relative(new JavaFile.relative(sdk.libraryDirectory, "core"), "num.dart").toURI());
+// JUnitTestCase.assertNotNull(source);
+// JUnitTestCase.assertTrue(source.isInSystemLibrary);
+// JUnitTestCase.assertEquals("dart:core/num.dart", source.uri.toString());
+// }
+// void test_getDart2JsExecutable() {
+// DirectoryBasedDartSdk sdk = _createDartSdk();
+// JavaFile executable = sdk.dart2JsExecutable;
+// JUnitTestCase.assertNotNull(executable);
+// JUnitTestCase.assertTrue(executable.exists());
+// JUnitTestCase.assertTrue(executable.canExecute());
+// }
+// void test_getDartFmtExecutable() {
+// DirectoryBasedDartSdk sdk = _createDartSdk();
+// JavaFile executable = sdk.dartFmtExecutable;
+// JUnitTestCase.assertNotNull(executable);
+// JUnitTestCase.assertTrue(executable.exists());
+// JUnitTestCase.assertTrue(executable.canExecute());
+// }
+// void test_getDirectory() {
+// DirectoryBasedDartSdk sdk = _createDartSdk();
+// JavaFile directory = sdk.directory;
+// JUnitTestCase.assertNotNull(directory);
+// JUnitTestCase.assertTrue(directory.exists());
+// }
+// void test_getDocDirectory() {
+// DirectoryBasedDartSdk sdk = _createDartSdk();
+// JavaFile directory = sdk.docDirectory;
+// JUnitTestCase.assertNotNull(directory);
+// }
+// void test_getLibraryDirectory() {
+// DirectoryBasedDartSdk sdk = _createDartSdk();
+// JavaFile directory = sdk.libraryDirectory;
+// JUnitTestCase.assertNotNull(directory);
+// JUnitTestCase.assertTrue(directory.exists());
+// }
+// void test_getPubExecutable() {
+// DirectoryBasedDartSdk sdk = _createDartSdk();
+// JavaFile executable = sdk.pubExecutable;
+// JUnitTestCase.assertNotNull(executable);
+// JUnitTestCase.assertTrue(executable.exists());
+// JUnitTestCase.assertTrue(executable.canExecute());
+// }
+// void test_getSdkVersion() {
+// DirectoryBasedDartSdk sdk = _createDartSdk();
+// String version = sdk.sdkVersion;
+// JUnitTestCase.assertNotNull(version);
+// JUnitTestCase.assertTrue(version.length > 0);
+// }
+// void test_getVmExecutable() {
+// DirectoryBasedDartSdk sdk = _createDartSdk();
+// JavaFile executable = sdk.vmExecutable;
+// JUnitTestCase.assertNotNull(executable);
+// JUnitTestCase.assertTrue(executable.exists());
+// JUnitTestCase.assertTrue(executable.canExecute());
+// }
+// DirectoryBasedDartSdk _createDartSdk() {
+// JavaFile sdkDirectory = DirectoryBasedDartSdk.defaultSdkDirectory;
+// JUnitTestCase.assertNotNullMsg("No SDK configured; set the property 'com.google.dart.sdk' on the command line", sdkDirectory);
+// return new DirectoryBasedDartSdk(sdkDirectory);
+// }
+// static dartSuite() {
+// _ut.group('DirectoryBasedDartSdkTest', () {
+// _ut.test('test_creation', () {
+// final __test = new DirectoryBasedDartSdkTest();
+// runJUnitTest(__test, __test.test_creation);
+// });
+// _ut.test('test_fromFile_invalid', () {
+// final __test = new DirectoryBasedDartSdkTest();
+// runJUnitTest(__test, __test.test_fromFile_invalid);
+// });
+// _ut.test('test_fromFile_library', () {
+// final __test = new DirectoryBasedDartSdkTest();
+// runJUnitTest(__test, __test.test_fromFile_library);
+// });
+// _ut.test('test_fromFile_part', () {
+// final __test = new DirectoryBasedDartSdkTest();
+// runJUnitTest(__test, __test.test_fromFile_part);
+// });
+// _ut.test('test_getDart2JsExecutable', () {
+// final __test = new DirectoryBasedDartSdkTest();
+// runJUnitTest(__test, __test.test_getDart2JsExecutable);
+// });
+// _ut.test('test_getDartFmtExecutable', () {
+// final __test = new DirectoryBasedDartSdkTest();
+// runJUnitTest(__test, __test.test_getDartFmtExecutable);
+// });
+// _ut.test('test_getDirectory', () {
+// final __test = new DirectoryBasedDartSdkTest();
+// runJUnitTest(__test, __test.test_getDirectory);
+// });
+// _ut.test('test_getDocDirectory', () {
+// final __test = new DirectoryBasedDartSdkTest();
+// runJUnitTest(__test, __test.test_getDocDirectory);
+// });
+// _ut.test('test_getLibraryDirectory', () {
+// final __test = new DirectoryBasedDartSdkTest();
+// runJUnitTest(__test, __test.test_getLibraryDirectory);
+// });
+// _ut.test('test_getPubExecutable', () {
+// final __test = new DirectoryBasedDartSdkTest();
+// runJUnitTest(__test, __test.test_getPubExecutable);
+// });
+// _ut.test('test_getSdkVersion', () {
+// final __test = new DirectoryBasedDartSdkTest();
+// runJUnitTest(__test, __test.test_getSdkVersion);
+// });
+// _ut.test('test_getVmExecutable', () {
+// final __test = new DirectoryBasedDartSdkTest();
+// runJUnitTest(__test, __test.test_getVmExecutable);
+// });
+// });
+// }
+// }
+// class DirectoryBasedSourceContainerTest extends JUnitTestCase {
+// void test_contains() {
+// JavaFile dir = FileUtilities2.createFile("/does/not/exist");
+// JavaFile file1 = FileUtilities2.createFile("/does/not/exist/some.dart");
+// JavaFile file2 = FileUtilities2.createFile("/does/not/exist/folder/some2.dart");
+// JavaFile file3 = FileUtilities2.createFile("/does/not/exist3/some3.dart");
+// FileBasedSource source1 = new FileBasedSource.con1(file1);
+// FileBasedSource source2 = new FileBasedSource.con1(file2);
+// FileBasedSource source3 = new FileBasedSource.con1(file3);
+// DirectoryBasedSourceContainer container = new DirectoryBasedSourceContainer.con1(dir);
+// JUnitTestCase.assertTrue(container.contains(source1));
+// JUnitTestCase.assertTrue(container.contains(source2));
+// JUnitTestCase.assertFalse(container.contains(source3));
+// }
+// static dartSuite() {
+// _ut.group('DirectoryBasedSourceContainerTest', () {
+// _ut.test('test_contains', () {
+// final __test = new DirectoryBasedSourceContainerTest();
+// runJUnitTest(__test, __test.test_contains);
+// });
+// });
+// }
+// }
+// class ElementBuilderTest extends EngineTestCase {
+// void test_visitCatchClause() {
+// ElementHolder holder = new ElementHolder();
+// ElementBuilder builder = new ElementBuilder(holder);
+// String exceptionParameterName = "e";
+// String stackParameterName = "s";
+// CatchClause clause = AstFactory.catchClause2(exceptionParameterName, stackParameterName, []);
+// clause.accept(builder);
+// List<LocalVariableElement> variables = holder.localVariables;
+// EngineTestCase.assertLength(2, variables);
+// VariableElement exceptionVariable = variables[0];
+// JUnitTestCase.assertNotNull(exceptionVariable);
+// JUnitTestCase.assertEquals(exceptionParameterName, exceptionVariable.name);
+// JUnitTestCase.assertFalse(exceptionVariable.isSynthetic);
+// JUnitTestCase.assertFalse(exceptionVariable.isConst);
+// JUnitTestCase.assertFalse(exceptionVariable.isFinal);
+// JUnitTestCase.assertNull(exceptionVariable.initializer);
+// VariableElement stackVariable = variables[1];
+// JUnitTestCase.assertNotNull(stackVariable);
+// JUnitTestCase.assertEquals(stackParameterName, stackVariable.name);
+// JUnitTestCase.assertFalse(stackVariable.isSynthetic);
+// JUnitTestCase.assertFalse(stackVariable.isConst);
+// JUnitTestCase.assertFalse(stackVariable.isFinal);
+// JUnitTestCase.assertNull(stackVariable.initializer);
+// }
+// void test_visitClassDeclaration_abstract() {
+// ElementHolder holder = new ElementHolder();
+// ElementBuilder builder = new ElementBuilder(holder);
+// String className = "C";
+// ClassDeclaration classDeclaration = AstFactory.classDeclaration(Keyword.ABSTRACT, className, null, null, null, null, []);
+// classDeclaration.accept(builder);
+// List<ClassElement> types = holder.types;
+// EngineTestCase.assertLength(1, types);
+// ClassElement type = types[0];
+// JUnitTestCase.assertNotNull(type);
+// JUnitTestCase.assertEquals(className, type.name);
+// List<TypeParameterElement> typeParameters = type.typeParameters;
+// EngineTestCase.assertLength(0, typeParameters);
+// JUnitTestCase.assertTrue(type.isAbstract);
+// JUnitTestCase.assertFalse(type.isSynthetic);
+// }
+// void test_visitClassDeclaration_minimal() {
+// ElementHolder holder = new ElementHolder();
+// ElementBuilder builder = new ElementBuilder(holder);
+// String className = "C";
+// ClassDeclaration classDeclaration = AstFactory.classDeclaration(null, className, null, null, null, null, []);
+// classDeclaration.accept(builder);
+// List<ClassElement> types = holder.types;
+// EngineTestCase.assertLength(1, types);
+// ClassElement type = types[0];
+// JUnitTestCase.assertNotNull(type);
+// JUnitTestCase.assertEquals(className, type.name);
+// List<TypeParameterElement> typeParameters = type.typeParameters;
+// EngineTestCase.assertLength(0, typeParameters);
+// JUnitTestCase.assertFalse(type.isAbstract);
+// JUnitTestCase.assertFalse(type.isSynthetic);
+// }
+// void test_visitClassDeclaration_parameterized() {
+// ElementHolder holder = new ElementHolder();
+// ElementBuilder builder = new ElementBuilder(holder);
+// String className = "C";
+// String firstVariableName = "E";
+// String secondVariableName = "F";
+// ClassDeclaration classDeclaration = AstFactory.classDeclaration(null, className, AstFactory.typeParameterList([firstVariableName, secondVariableName]), null, null, null, []);
+// classDeclaration.accept(builder);
+// List<ClassElement> types = holder.types;
+// EngineTestCase.assertLength(1, types);
+// ClassElement type = types[0];
+// JUnitTestCase.assertNotNull(type);
+// JUnitTestCase.assertEquals(className, type.name);
+// List<TypeParameterElement> typeParameters = type.typeParameters;
+// EngineTestCase.assertLength(2, typeParameters);
+// JUnitTestCase.assertEquals(firstVariableName, typeParameters[0].name);
+// JUnitTestCase.assertEquals(secondVariableName, typeParameters[1].name);
+// JUnitTestCase.assertFalse(type.isAbstract);
+// JUnitTestCase.assertFalse(type.isSynthetic);
+// }
+// void test_visitClassDeclaration_withMembers() {
+// ElementHolder holder = new ElementHolder();
+// ElementBuilder builder = new ElementBuilder(holder);
+// String className = "C";
+// String typeParameterName = "E";
+// String fieldName = "f";
+// String methodName = "m";
+// ClassDeclaration classDeclaration = AstFactory.classDeclaration(null, className, AstFactory.typeParameterList([typeParameterName]), null, null, null, [
+// AstFactory.fieldDeclaration2(false, null, [AstFactory.variableDeclaration(fieldName)]),
+// AstFactory.methodDeclaration2(null, null, null, null, AstFactory.identifier3(methodName), AstFactory.formalParameterList([]), AstFactory.blockFunctionBody2([]))]);
+// classDeclaration.accept(builder);
+// List<ClassElement> types = holder.types;
+// EngineTestCase.assertLength(1, types);
+// ClassElement type = types[0];
+// JUnitTestCase.assertNotNull(type);
+// JUnitTestCase.assertEquals(className, type.name);
+// JUnitTestCase.assertFalse(type.isAbstract);
+// JUnitTestCase.assertFalse(type.isSynthetic);
+// List<TypeParameterElement> typeParameters = type.typeParameters;
+// EngineTestCase.assertLength(1, typeParameters);
+// TypeParameterElement typeParameter = typeParameters[0];
+// JUnitTestCase.assertNotNull(typeParameter);
+// JUnitTestCase.assertEquals(typeParameterName, typeParameter.name);
+// List<FieldElement> fields = type.fields;
+// EngineTestCase.assertLength(1, fields);
+// FieldElement field = fields[0];
+// JUnitTestCase.assertNotNull(field);
+// JUnitTestCase.assertEquals(fieldName, field.name);
+// List<MethodElement> methods = type.methods;
+// EngineTestCase.assertLength(1, methods);
+// MethodElement method = methods[0];
+// JUnitTestCase.assertNotNull(method);
+// JUnitTestCase.assertEquals(methodName, method.name);
+// }
+// void test_visitConstructorDeclaration_factory() {
+// ElementHolder holder = new ElementHolder();
+// ElementBuilder builder = new ElementBuilder(holder);
+// String className = "A";
+// ConstructorDeclaration constructorDeclaration = AstFactory.constructorDeclaration2(null, Keyword.FACTORY, AstFactory.identifier3(className), null, AstFactory.formalParameterList([]), null, AstFactory.blockFunctionBody2([]));
+// constructorDeclaration.accept(builder);
+// List<ConstructorElement> constructors = holder.constructors;
+// EngineTestCase.assertLength(1, constructors);
+// ConstructorElement constructor = constructors[0];
+// JUnitTestCase.assertNotNull(constructor);
+// JUnitTestCase.assertTrue(constructor.isFactory);
+// JUnitTestCase.assertEquals("", constructor.name);
+// EngineTestCase.assertLength(0, constructor.functions);
+// EngineTestCase.assertLength(0, constructor.labels);
+// EngineTestCase.assertLength(0, constructor.localVariables);
+// EngineTestCase.assertLength(0, constructor.parameters);
+// }
+// void test_visitConstructorDeclaration_minimal() {
+// ElementHolder holder = new ElementHolder();
+// ElementBuilder builder = new ElementBuilder(holder);
+// String className = "A";
+// ConstructorDeclaration constructorDeclaration = AstFactory.constructorDeclaration2(null, null, AstFactory.identifier3(className), null, AstFactory.formalParameterList([]), null, AstFactory.blockFunctionBody2([]));
+// constructorDeclaration.accept(builder);
+// List<ConstructorElement> constructors = holder.constructors;
+// EngineTestCase.assertLength(1, constructors);
+// ConstructorElement constructor = constructors[0];
+// JUnitTestCase.assertNotNull(constructor);
+// JUnitTestCase.assertFalse(constructor.isFactory);
+// JUnitTestCase.assertEquals("", constructor.name);
+// EngineTestCase.assertLength(0, constructor.functions);
+// EngineTestCase.assertLength(0, constructor.labels);
+// EngineTestCase.assertLength(0, constructor.localVariables);
+// EngineTestCase.assertLength(0, constructor.parameters);
+// }
+// void test_visitConstructorDeclaration_named() {
+// ElementHolder holder = new ElementHolder();
+// ElementBuilder builder = new ElementBuilder(holder);
+// String className = "A";
+// String constructorName = "c";
+// ConstructorDeclaration constructorDeclaration = AstFactory.constructorDeclaration2(null, null, AstFactory.identifier3(className), constructorName, AstFactory.formalParameterList([]), null, AstFactory.blockFunctionBody2([]));
+// constructorDeclaration.accept(builder);
+// List<ConstructorElement> constructors = holder.constructors;
+// EngineTestCase.assertLength(1, constructors);
+// ConstructorElement constructor = constructors[0];
+// JUnitTestCase.assertNotNull(constructor);
+// JUnitTestCase.assertFalse(constructor.isFactory);
+// JUnitTestCase.assertEquals(constructorName, constructor.name);
+// EngineTestCase.assertLength(0, constructor.functions);
+// EngineTestCase.assertLength(0, constructor.labels);
+// EngineTestCase.assertLength(0, constructor.localVariables);
+// EngineTestCase.assertLength(0, constructor.parameters);
+// JUnitTestCase.assertSame(constructor, constructorDeclaration.name.staticElement);
+// JUnitTestCase.assertSame(constructor, constructorDeclaration.element);
+// }
+// void test_visitConstructorDeclaration_unnamed() {
+// ElementHolder holder = new ElementHolder();
+// ElementBuilder builder = new ElementBuilder(holder);
+// String className = "A";
+// ConstructorDeclaration constructorDeclaration = AstFactory.constructorDeclaration2(null, null, AstFactory.identifier3(className), null, AstFactory.formalParameterList([]), null, AstFactory.blockFunctionBody2([]));
+// constructorDeclaration.accept(builder);
+// List<ConstructorElement> constructors = holder.constructors;
+// EngineTestCase.assertLength(1, constructors);
+// ConstructorElement constructor = constructors[0];
+// JUnitTestCase.assertNotNull(constructor);
+// JUnitTestCase.assertFalse(constructor.isFactory);
+// JUnitTestCase.assertEquals("", constructor.name);
+// EngineTestCase.assertLength(0, constructor.functions);
+// EngineTestCase.assertLength(0, constructor.labels);
+// EngineTestCase.assertLength(0, constructor.localVariables);
+// EngineTestCase.assertLength(0, constructor.parameters);
+// JUnitTestCase.assertSame(constructor, constructorDeclaration.element);
+// }
+// void test_visitEnumDeclaration() {
+// ElementHolder holder = new ElementHolder();
+// ElementBuilder builder = new ElementBuilder(holder);
+// String enumName = "E";
+// EnumDeclaration enumDeclaration = AstFactory.enumDeclaration2(enumName, ["ONE"]);
+// enumDeclaration.accept(builder);
+// List<ClassElement> enums = holder.enums;
+// EngineTestCase.assertLength(1, enums);
+// ClassElement enumElement = enums[0];
+// JUnitTestCase.assertNotNull(enumElement);
+// JUnitTestCase.assertEquals(enumName, enumElement.name);
+// }
+// void test_visitFieldDeclaration() {
+// ElementHolder holder = new ElementHolder();
+// ElementBuilder builder = new ElementBuilder(holder);
+// String firstFieldName = "x";
+// String secondFieldName = "y";
+// FieldDeclaration fieldDeclaration = AstFactory.fieldDeclaration2(false, null, [
+// AstFactory.variableDeclaration(firstFieldName),
+// AstFactory.variableDeclaration(secondFieldName)]);
+// fieldDeclaration.accept(builder);
+// List<FieldElement> fields = holder.fields;
+// EngineTestCase.assertLength(2, fields);
+// FieldElement firstField = fields[0];
+// JUnitTestCase.assertNotNull(firstField);
+// JUnitTestCase.assertEquals(firstFieldName, firstField.name);
+// JUnitTestCase.assertNull(firstField.initializer);
+// JUnitTestCase.assertFalse(firstField.isConst);
+// JUnitTestCase.assertFalse(firstField.isFinal);
+// JUnitTestCase.assertFalse(firstField.isSynthetic);
+// FieldElement secondField = fields[1];
+// JUnitTestCase.assertNotNull(secondField);
+// JUnitTestCase.assertEquals(secondFieldName, secondField.name);
+// JUnitTestCase.assertNull(secondField.initializer);
+// JUnitTestCase.assertFalse(secondField.isConst);
+// JUnitTestCase.assertFalse(secondField.isFinal);
+// JUnitTestCase.assertFalse(secondField.isSynthetic);
+// }
+// void test_visitFieldFormalParameter() {
+// ElementHolder holder = new ElementHolder();
+// ElementBuilder builder = new ElementBuilder(holder);
+// String parameterName = "p";
+// FieldFormalParameter formalParameter = AstFactory.fieldFormalParameter(null, null, parameterName);
+// formalParameter.accept(builder);
+// List<ParameterElement> parameters = holder.parameters;
+// EngineTestCase.assertLength(1, parameters);
+// ParameterElement parameter = parameters[0];
+// JUnitTestCase.assertNotNull(parameter);
+// JUnitTestCase.assertEquals(parameterName, parameter.name);
+// JUnitTestCase.assertNull(parameter.initializer);
+// JUnitTestCase.assertFalse(parameter.isConst);
+// JUnitTestCase.assertFalse(parameter.isFinal);
+// JUnitTestCase.assertFalse(parameter.isSynthetic);
+// JUnitTestCase.assertEquals(ParameterKind.REQUIRED, parameter.parameterKind);
+// EngineTestCase.assertLength(0, parameter.parameters);
+// }
+// void test_visitFieldFormalParameter_funtionTyped() {
+// ElementHolder holder = new ElementHolder();
+// ElementBuilder builder = new ElementBuilder(holder);
+// String parameterName = "p";
+// FieldFormalParameter formalParameter = AstFactory.fieldFormalParameter(null, null, parameterName, AstFactory.formalParameterList([AstFactory.simpleFormalParameter3("a")]));
+// formalParameter.accept(builder);
+// List<ParameterElement> parameters = holder.parameters;
+// EngineTestCase.assertLength(1, parameters);
+// ParameterElement parameter = parameters[0];
+// JUnitTestCase.assertNotNull(parameter);
+// JUnitTestCase.assertEquals(parameterName, parameter.name);
+// JUnitTestCase.assertNull(parameter.initializer);
+// JUnitTestCase.assertFalse(parameter.isConst);
+// JUnitTestCase.assertFalse(parameter.isFinal);
+// JUnitTestCase.assertFalse(parameter.isSynthetic);
+// JUnitTestCase.assertEquals(ParameterKind.REQUIRED, parameter.parameterKind);
+// EngineTestCase.assertLength(1, parameter.parameters);
+// }
+// void test_visitFormalParameterList() {
+// ElementHolder holder = new ElementHolder();
+// ElementBuilder builder = new ElementBuilder(holder);
+// String firstParameterName = "a";
+// String secondParameterName = "b";
+// FormalParameterList parameterList = AstFactory.formalParameterList([
+// AstFactory.simpleFormalParameter3(firstParameterName),
+// AstFactory.simpleFormalParameter3(secondParameterName)]);
+// parameterList.accept(builder);
+// List<ParameterElement> parameters = holder.parameters;
+// EngineTestCase.assertLength(2, parameters);
+// JUnitTestCase.assertEquals(firstParameterName, parameters[0].name);
+// JUnitTestCase.assertEquals(secondParameterName, parameters[1].name);
+// }
+// void test_visitFunctionDeclaration_getter() {
+// ElementHolder holder = new ElementHolder();
+// ElementBuilder builder = new ElementBuilder(holder);
+// String functionName = "f";
+// FunctionDeclaration declaration = AstFactory.functionDeclaration(null, Keyword.GET, functionName, AstFactory.functionExpression2(AstFactory.formalParameterList([]), AstFactory.blockFunctionBody2([])));
+// declaration.accept(builder);
+// List<PropertyAccessorElement> accessors = holder.accessors;
+// EngineTestCase.assertLength(1, accessors);
+// PropertyAccessorElement accessor = accessors[0];
+// JUnitTestCase.assertNotNull(accessor);
+// JUnitTestCase.assertEquals(functionName, accessor.name);
+// JUnitTestCase.assertSame(accessor, declaration.element);
+// JUnitTestCase.assertSame(accessor, declaration.functionExpression.element);
+// JUnitTestCase.assertTrue(accessor.isGetter);
+// JUnitTestCase.assertFalse(accessor.isSetter);
+// JUnitTestCase.assertFalse(accessor.isSynthetic);
+// PropertyInducingElement variable = accessor.variable;
+// EngineTestCase.assertInstanceOf((obj) => obj is TopLevelVariableElement, TopLevelVariableElement, variable);
+// JUnitTestCase.assertTrue(variable.isSynthetic);
+// }
+// void test_visitFunctionDeclaration_plain() {
+// ElementHolder holder = new ElementHolder();
+// ElementBuilder builder = new ElementBuilder(holder);
+// String functionName = "f";
+// FunctionDeclaration declaration = AstFactory.functionDeclaration(null, null, functionName, AstFactory.functionExpression2(AstFactory.formalParameterList([]), AstFactory.blockFunctionBody2([])));
+// declaration.accept(builder);
+// List<FunctionElement> functions = holder.functions;
+// EngineTestCase.assertLength(1, functions);
+// FunctionElement function = functions[0];
+// JUnitTestCase.assertNotNull(function);
+// JUnitTestCase.assertEquals(functionName, function.name);
+// JUnitTestCase.assertSame(function, declaration.element);
+// JUnitTestCase.assertSame(function, declaration.functionExpression.element);
+// JUnitTestCase.assertFalse(function.isSynthetic);
+// }
+// void test_visitFunctionDeclaration_setter() {
+// ElementHolder holder = new ElementHolder();
+// ElementBuilder builder = new ElementBuilder(holder);
+// String functionName = "f";
+// FunctionDeclaration declaration = AstFactory.functionDeclaration(null, Keyword.SET, functionName, AstFactory.functionExpression2(AstFactory.formalParameterList([]), AstFactory.blockFunctionBody2([])));
+// declaration.accept(builder);
+// List<PropertyAccessorElement> accessors = holder.accessors;
+// EngineTestCase.assertLength(1, accessors);
+// PropertyAccessorElement accessor = accessors[0];
+// JUnitTestCase.assertNotNull(accessor);
+// JUnitTestCase.assertEquals("${functionName}=", accessor.name);
+// JUnitTestCase.assertSame(accessor, declaration.element);
+// JUnitTestCase.assertSame(accessor, declaration.functionExpression.element);
+// JUnitTestCase.assertFalse(accessor.isGetter);
+// JUnitTestCase.assertTrue(accessor.isSetter);
+// JUnitTestCase.assertFalse(accessor.isSynthetic);
+// PropertyInducingElement variable = accessor.variable;
+// EngineTestCase.assertInstanceOf((obj) => obj is TopLevelVariableElement, TopLevelVariableElement, variable);
+// JUnitTestCase.assertTrue(variable.isSynthetic);
+// }
+// void test_visitFunctionExpression() {
+// ElementHolder holder = new ElementHolder();
+// ElementBuilder builder = new ElementBuilder(holder);
+// FunctionExpression expression = AstFactory.functionExpression2(AstFactory.formalParameterList([]), AstFactory.blockFunctionBody2([]));
+// expression.accept(builder);
+// List<FunctionElement> functions = holder.functions;
+// EngineTestCase.assertLength(1, functions);
+// FunctionElement function = functions[0];
+// JUnitTestCase.assertNotNull(function);
+// JUnitTestCase.assertSame(function, expression.element);
+// JUnitTestCase.assertFalse(function.isSynthetic);
+// }
+// void test_visitFunctionTypeAlias() {
+// ElementHolder holder = new ElementHolder();
+// ElementBuilder builder = new ElementBuilder(holder);
+// String aliasName = "F";
+// String parameterName = "E";
+// FunctionTypeAlias aliasNode = AstFactory.typeAlias(null, aliasName, AstFactory.typeParameterList([parameterName]), null);
+// aliasNode.accept(builder);
+// List<FunctionTypeAliasElement> aliases = holder.typeAliases;
+// EngineTestCase.assertLength(1, aliases);
+// FunctionTypeAliasElement alias = aliases[0];
+// JUnitTestCase.assertNotNull(alias);
+// JUnitTestCase.assertEquals(aliasName, alias.name);
+// EngineTestCase.assertLength(0, alias.parameters);
+// List<TypeParameterElement> typeParameters = alias.typeParameters;
+// EngineTestCase.assertLength(1, typeParameters);
+// TypeParameterElement typeParameter = typeParameters[0];
+// JUnitTestCase.assertNotNull(typeParameter);
+// JUnitTestCase.assertEquals(parameterName, typeParameter.name);
+// }
+// void test_visitFunctionTypedFormalParameter() {
+// ElementHolder holder = new ElementHolder();
+// ElementBuilder builder = new ElementBuilder(holder);
+// String parameterName = "p";
+// FunctionTypedFormalParameter formalParameter = AstFactory.functionTypedFormalParameter(null, parameterName, []);
+// _useParameterInMethod(formalParameter, 100, 110);
+// formalParameter.accept(builder);
+// List<ParameterElement> parameters = holder.parameters;
+// EngineTestCase.assertLength(1, parameters);
+// ParameterElement parameter = parameters[0];
+// JUnitTestCase.assertNotNull(parameter);
+// JUnitTestCase.assertEquals(parameterName, parameter.name);
+// JUnitTestCase.assertNull(parameter.initializer);
+// JUnitTestCase.assertFalse(parameter.isConst);
+// JUnitTestCase.assertFalse(parameter.isFinal);
+// JUnitTestCase.assertFalse(parameter.isSynthetic);
+// JUnitTestCase.assertEquals(ParameterKind.REQUIRED, parameter.parameterKind);
+// JUnitTestCase.assertEquals(SourceRangeFactory.rangeStartEnd(100, 110), parameter.visibleRange);
+// }
+// void test_visitLabeledStatement() {
+// ElementHolder holder = new ElementHolder();
+// ElementBuilder builder = new ElementBuilder(holder);
+// String labelName = "l";
+// LabeledStatement statement = AstFactory.labeledStatement(AstFactory.list([AstFactory.label2(labelName)]), AstFactory.breakStatement());
+// statement.accept(builder);
+// List<LabelElement> labels = holder.labels;
+// EngineTestCase.assertLength(1, labels);
+// LabelElement label = labels[0];
+// JUnitTestCase.assertNotNull(label);
+// JUnitTestCase.assertEquals(labelName, label.name);
+// JUnitTestCase.assertFalse(label.isSynthetic);
+// }
+// void test_visitMethodDeclaration_abstract() {
+// ElementHolder holder = new ElementHolder();
+// ElementBuilder builder = new ElementBuilder(holder);
+// String methodName = "m";
+// MethodDeclaration methodDeclaration = AstFactory.methodDeclaration2(null, null, null, null, AstFactory.identifier3(methodName), AstFactory.formalParameterList([]), AstFactory.emptyFunctionBody());
+// methodDeclaration.accept(builder);
+// List<MethodElement> methods = holder.methods;
+// EngineTestCase.assertLength(1, methods);
+// MethodElement method = methods[0];
+// JUnitTestCase.assertNotNull(method);
+// JUnitTestCase.assertEquals(methodName, method.name);
+// EngineTestCase.assertLength(0, method.functions);
+// EngineTestCase.assertLength(0, method.labels);
+// EngineTestCase.assertLength(0, method.localVariables);
+// EngineTestCase.assertLength(0, method.parameters);
+// JUnitTestCase.assertTrue(method.isAbstract);
+// JUnitTestCase.assertFalse(method.isStatic);
+// JUnitTestCase.assertFalse(method.isSynthetic);
+// }
+// void test_visitMethodDeclaration_getter() {
+// ElementHolder holder = new ElementHolder();
+// ElementBuilder builder = new ElementBuilder(holder);
+// String methodName = "m";
+// MethodDeclaration methodDeclaration = AstFactory.methodDeclaration2(null, null, Keyword.GET, null, AstFactory.identifier3(methodName), AstFactory.formalParameterList([]), AstFactory.blockFunctionBody2([]));
+// methodDeclaration.accept(builder);
+// List<FieldElement> fields = holder.fields;
+// EngineTestCase.assertLength(1, fields);
+// FieldElement field = fields[0];
+// JUnitTestCase.assertNotNull(field);
+// JUnitTestCase.assertEquals(methodName, field.name);
+// JUnitTestCase.assertTrue(field.isSynthetic);
+// JUnitTestCase.assertNull(field.setter);
+// PropertyAccessorElement getter = field.getter;
+// JUnitTestCase.assertNotNull(getter);
+// JUnitTestCase.assertFalse(getter.isAbstract);
+// JUnitTestCase.assertTrue(getter.isGetter);
+// JUnitTestCase.assertFalse(getter.isSynthetic);
+// JUnitTestCase.assertEquals(methodName, getter.name);
+// JUnitTestCase.assertEquals(field, getter.variable);
+// EngineTestCase.assertLength(0, getter.functions);
+// EngineTestCase.assertLength(0, getter.labels);
+// EngineTestCase.assertLength(0, getter.localVariables);
+// EngineTestCase.assertLength(0, getter.parameters);
+// }
+// void test_visitMethodDeclaration_getter_abstract() {
+// ElementHolder holder = new ElementHolder();
+// ElementBuilder builder = new ElementBuilder(holder);
+// String methodName = "m";
+// MethodDeclaration methodDeclaration = AstFactory.methodDeclaration2(null, null, Keyword.GET, null, AstFactory.identifier3(methodName), AstFactory.formalParameterList([]), AstFactory.emptyFunctionBody());
+// methodDeclaration.accept(builder);
+// List<FieldElement> fields = holder.fields;
+// EngineTestCase.assertLength(1, fields);
+// FieldElement field = fields[0];
+// JUnitTestCase.assertNotNull(field);
+// JUnitTestCase.assertEquals(methodName, field.name);
+// JUnitTestCase.assertTrue(field.isSynthetic);
+// JUnitTestCase.assertNull(field.setter);
+// PropertyAccessorElement getter = field.getter;
+// JUnitTestCase.assertNotNull(getter);
+// JUnitTestCase.assertTrue(getter.isAbstract);
+// JUnitTestCase.assertTrue(getter.isGetter);
+// JUnitTestCase.assertFalse(getter.isSynthetic);
+// JUnitTestCase.assertEquals(methodName, getter.name);
+// JUnitTestCase.assertEquals(field, getter.variable);
+// EngineTestCase.assertLength(0, getter.functions);
+// EngineTestCase.assertLength(0, getter.labels);
+// EngineTestCase.assertLength(0, getter.localVariables);
+// EngineTestCase.assertLength(0, getter.parameters);
+// }
+// void test_visitMethodDeclaration_getter_external() {
+// ElementHolder holder = new ElementHolder();
+// ElementBuilder builder = new ElementBuilder(holder);
+// String methodName = "m";
+// MethodDeclaration methodDeclaration = AstFactory.methodDeclaration(null, null, Keyword.GET, null, AstFactory.identifier3(methodName), AstFactory.formalParameterList([]));
+// methodDeclaration.accept(builder);
+// List<FieldElement> fields = holder.fields;
+// EngineTestCase.assertLength(1, fields);
+// FieldElement field = fields[0];
+// JUnitTestCase.assertNotNull(field);
+// JUnitTestCase.assertEquals(methodName, field.name);
+// JUnitTestCase.assertTrue(field.isSynthetic);
+// JUnitTestCase.assertNull(field.setter);
+// PropertyAccessorElement getter = field.getter;
+// JUnitTestCase.assertNotNull(getter);
+// JUnitTestCase.assertFalse(getter.isAbstract);
+// JUnitTestCase.assertTrue(getter.isGetter);
+// JUnitTestCase.assertFalse(getter.isSynthetic);
+// JUnitTestCase.assertEquals(methodName, getter.name);
+// JUnitTestCase.assertEquals(field, getter.variable);
+// EngineTestCase.assertLength(0, getter.functions);
+// EngineTestCase.assertLength(0, getter.labels);
+// EngineTestCase.assertLength(0, getter.localVariables);
+// EngineTestCase.assertLength(0, getter.parameters);
+// }
+// void test_visitMethodDeclaration_minimal() {
+// ElementHolder holder = new ElementHolder();
+// ElementBuilder builder = new ElementBuilder(holder);
+// String methodName = "m";
+// MethodDeclaration methodDeclaration = AstFactory.methodDeclaration2(null, null, null, null, AstFactory.identifier3(methodName), AstFactory.formalParameterList([]), AstFactory.blockFunctionBody2([]));
+// methodDeclaration.accept(builder);
+// List<MethodElement> methods = holder.methods;
+// EngineTestCase.assertLength(1, methods);
+// MethodElement method = methods[0];
+// JUnitTestCase.assertNotNull(method);
+// JUnitTestCase.assertEquals(methodName, method.name);
+// EngineTestCase.assertLength(0, method.functions);
+// EngineTestCase.assertLength(0, method.labels);
+// EngineTestCase.assertLength(0, method.localVariables);
+// EngineTestCase.assertLength(0, method.parameters);
+// JUnitTestCase.assertFalse(method.isAbstract);
+// JUnitTestCase.assertFalse(method.isStatic);
+// JUnitTestCase.assertFalse(method.isSynthetic);
+// }
+// void test_visitMethodDeclaration_operator() {
+// ElementHolder holder = new ElementHolder();
+// ElementBuilder builder = new ElementBuilder(holder);
+// String methodName = "+";
+// MethodDeclaration methodDeclaration = AstFactory.methodDeclaration2(null, null, null, Keyword.OPERATOR, AstFactory.identifier3(methodName), AstFactory.formalParameterList([AstFactory.simpleFormalParameter3("addend")]), AstFactory.blockFunctionBody2([]));
+// methodDeclaration.accept(builder);
+// List<MethodElement> methods = holder.methods;
+// EngineTestCase.assertLength(1, methods);
+// MethodElement method = methods[0];
+// JUnitTestCase.assertNotNull(method);
+// JUnitTestCase.assertEquals(methodName, method.name);
+// EngineTestCase.assertLength(0, method.functions);
+// EngineTestCase.assertLength(0, method.labels);
+// EngineTestCase.assertLength(0, method.localVariables);
+// EngineTestCase.assertLength(1, method.parameters);
+// JUnitTestCase.assertFalse(method.isAbstract);
+// JUnitTestCase.assertFalse(method.isStatic);
+// JUnitTestCase.assertFalse(method.isSynthetic);
+// }
+// void test_visitMethodDeclaration_setter() {
+// ElementHolder holder = new ElementHolder();
+// ElementBuilder builder = new ElementBuilder(holder);
+// String methodName = "m";
+// MethodDeclaration methodDeclaration = AstFactory.methodDeclaration2(null, null, Keyword.SET, null, AstFactory.identifier3(methodName), AstFactory.formalParameterList([]), AstFactory.blockFunctionBody2([]));
+// methodDeclaration.accept(builder);
+// List<FieldElement> fields = holder.fields;
+// EngineTestCase.assertLength(1, fields);
+// FieldElement field = fields[0];
+// JUnitTestCase.assertNotNull(field);
+// JUnitTestCase.assertEquals(methodName, field.name);
+// JUnitTestCase.assertTrue(field.isSynthetic);
+// JUnitTestCase.assertNull(field.getter);
+// PropertyAccessorElement setter = field.setter;
+// JUnitTestCase.assertNotNull(setter);
+// JUnitTestCase.assertFalse(setter.isAbstract);
+// JUnitTestCase.assertTrue(setter.isSetter);
+// JUnitTestCase.assertFalse(setter.isSynthetic);
+// JUnitTestCase.assertEquals("${methodName}=", setter.name);
+// JUnitTestCase.assertEquals(methodName, setter.displayName);
+// JUnitTestCase.assertEquals(field, setter.variable);
+// EngineTestCase.assertLength(0, setter.functions);
+// EngineTestCase.assertLength(0, setter.labels);
+// EngineTestCase.assertLength(0, setter.localVariables);
+// EngineTestCase.assertLength(0, setter.parameters);
+// }
+// void test_visitMethodDeclaration_setter_abstract() {
+// ElementHolder holder = new ElementHolder();
+// ElementBuilder builder = new ElementBuilder(holder);
+// String methodName = "m";
+// MethodDeclaration methodDeclaration = AstFactory.methodDeclaration2(null, null, Keyword.SET, null, AstFactory.identifier3(methodName), AstFactory.formalParameterList([]), AstFactory.emptyFunctionBody());
+// methodDeclaration.accept(builder);
+// List<FieldElement> fields = holder.fields;
+// EngineTestCase.assertLength(1, fields);
+// FieldElement field = fields[0];
+// JUnitTestCase.assertNotNull(field);
+// JUnitTestCase.assertEquals(methodName, field.name);
+// JUnitTestCase.assertTrue(field.isSynthetic);
+// JUnitTestCase.assertNull(field.getter);
+// PropertyAccessorElement setter = field.setter;
+// JUnitTestCase.assertNotNull(setter);
+// JUnitTestCase.assertTrue(setter.isAbstract);
+// JUnitTestCase.assertTrue(setter.isSetter);
+// JUnitTestCase.assertFalse(setter.isSynthetic);
+// JUnitTestCase.assertEquals("${methodName}=", setter.name);
+// JUnitTestCase.assertEquals(methodName, setter.displayName);
+// JUnitTestCase.assertEquals(field, setter.variable);
+// EngineTestCase.assertLength(0, setter.functions);
+// EngineTestCase.assertLength(0, setter.labels);
+// EngineTestCase.assertLength(0, setter.localVariables);
+// EngineTestCase.assertLength(0, setter.parameters);
+// }
+// void test_visitMethodDeclaration_setter_external() {
+// ElementHolder holder = new ElementHolder();
+// ElementBuilder builder = new ElementBuilder(holder);
+// String methodName = "m";
+// MethodDeclaration methodDeclaration = AstFactory.methodDeclaration(null, null, Keyword.SET, null, AstFactory.identifier3(methodName), AstFactory.formalParameterList([]));
+// methodDeclaration.accept(builder);
+// List<FieldElement> fields = holder.fields;
+// EngineTestCase.assertLength(1, fields);
+// FieldElement field = fields[0];
+// JUnitTestCase.assertNotNull(field);
+// JUnitTestCase.assertEquals(methodName, field.name);
+// JUnitTestCase.assertTrue(field.isSynthetic);
+// JUnitTestCase.assertNull(field.getter);
+// PropertyAccessorElement setter = field.setter;
+// JUnitTestCase.assertNotNull(setter);
+// JUnitTestCase.assertFalse(setter.isAbstract);
+// JUnitTestCase.assertTrue(setter.isSetter);
+// JUnitTestCase.assertFalse(setter.isSynthetic);
+// JUnitTestCase.assertEquals("${methodName}=", setter.name);
+// JUnitTestCase.assertEquals(methodName, setter.displayName);
+// JUnitTestCase.assertEquals(field, setter.variable);
+// EngineTestCase.assertLength(0, setter.functions);
+// EngineTestCase.assertLength(0, setter.labels);
+// EngineTestCase.assertLength(0, setter.localVariables);
+// EngineTestCase.assertLength(0, setter.parameters);
+// }
+// void test_visitMethodDeclaration_static() {
+// ElementHolder holder = new ElementHolder();
+// ElementBuilder builder = new ElementBuilder(holder);
+// String methodName = "m";
+// MethodDeclaration methodDeclaration = AstFactory.methodDeclaration2(Keyword.STATIC, null, null, null, AstFactory.identifier3(methodName), AstFactory.formalParameterList([]), AstFactory.blockFunctionBody2([]));
+// methodDeclaration.accept(builder);
+// List<MethodElement> methods = holder.methods;
+// EngineTestCase.assertLength(1, methods);
+// MethodElement method = methods[0];
+// JUnitTestCase.assertNotNull(method);
+// JUnitTestCase.assertEquals(methodName, method.name);
+// EngineTestCase.assertLength(0, method.functions);
+// EngineTestCase.assertLength(0, method.labels);
+// EngineTestCase.assertLength(0, method.localVariables);
+// EngineTestCase.assertLength(0, method.parameters);
+// JUnitTestCase.assertFalse(method.isAbstract);
+// JUnitTestCase.assertTrue(method.isStatic);
+// JUnitTestCase.assertFalse(method.isSynthetic);
+// }
+// void test_visitMethodDeclaration_withMembers() {
+// ElementHolder holder = new ElementHolder();
+// ElementBuilder builder = new ElementBuilder(holder);
+// String methodName = "m";
+// String parameterName = "p";
+// String localVariableName = "v";
+// String labelName = "l";
+// String exceptionParameterName = "e";
+// MethodDeclaration methodDeclaration = AstFactory.methodDeclaration2(null, null, null, null, AstFactory.identifier3(methodName), AstFactory.formalParameterList([AstFactory.simpleFormalParameter3(parameterName)]), AstFactory.blockFunctionBody2([
+// AstFactory.variableDeclarationStatement2(Keyword.VAR, [AstFactory.variableDeclaration(localVariableName)]),
+// AstFactory.tryStatement2(AstFactory.block([AstFactory.labeledStatement(AstFactory.list([AstFactory.label2(labelName)]), AstFactory.returnStatement())]), [AstFactory.catchClause(exceptionParameterName, [])])]));
+// methodDeclaration.accept(builder);
+// List<MethodElement> methods = holder.methods;
+// EngineTestCase.assertLength(1, methods);
+// MethodElement method = methods[0];
+// JUnitTestCase.assertNotNull(method);
+// JUnitTestCase.assertEquals(methodName, method.name);
+// JUnitTestCase.assertFalse(method.isAbstract);
+// JUnitTestCase.assertFalse(method.isStatic);
+// JUnitTestCase.assertFalse(method.isSynthetic);
+// List<VariableElement> parameters = method.parameters;
+// EngineTestCase.assertLength(1, parameters);
+// VariableElement parameter = parameters[0];
+// JUnitTestCase.assertNotNull(parameter);
+// JUnitTestCase.assertEquals(parameterName, parameter.name);
+// List<VariableElement> localVariables = method.localVariables;
+// EngineTestCase.assertLength(2, localVariables);
+// VariableElement firstVariable = localVariables[0];
+// VariableElement secondVariable = localVariables[1];
+// JUnitTestCase.assertNotNull(firstVariable);
+// JUnitTestCase.assertNotNull(secondVariable);
+// JUnitTestCase.assertTrue((firstVariable.name == localVariableName && secondVariable.name == exceptionParameterName) || (firstVariable.name == exceptionParameterName && secondVariable.name == localVariableName));
+// List<LabelElement> labels = method.labels;
+// EngineTestCase.assertLength(1, labels);
+// LabelElement label = labels[0];
+// JUnitTestCase.assertNotNull(label);
+// JUnitTestCase.assertEquals(labelName, label.name);
+// }
+// void test_visitNamedFormalParameter() {
+// ElementHolder holder = new ElementHolder();
+// ElementBuilder builder = new ElementBuilder(holder);
+// String parameterName = "p";
+// DefaultFormalParameter formalParameter = AstFactory.namedFormalParameter(AstFactory.simpleFormalParameter3(parameterName), AstFactory.identifier3("b"));
+// _useParameterInMethod(formalParameter, 100, 110);
+// formalParameter.accept(builder);
+// List<ParameterElement> parameters = holder.parameters;
+// EngineTestCase.assertLength(1, parameters);
+// ParameterElement parameter = parameters[0];
+// JUnitTestCase.assertNotNull(parameter);
+// JUnitTestCase.assertEquals(parameterName, parameter.name);
+// JUnitTestCase.assertFalse(parameter.isConst);
+// JUnitTestCase.assertFalse(parameter.isFinal);
+// JUnitTestCase.assertFalse(parameter.isSynthetic);
+// JUnitTestCase.assertEquals(ParameterKind.NAMED, parameter.parameterKind);
+// JUnitTestCase.assertEquals(SourceRangeFactory.rangeStartEnd(100, 110), parameter.visibleRange);
+// FunctionElement initializer = parameter.initializer;
+// JUnitTestCase.assertNotNull(initializer);
+// JUnitTestCase.assertTrue(initializer.isSynthetic);
+// }
+// void test_visitSimpleFormalParameter() {
+// ElementHolder holder = new ElementHolder();
+// ElementBuilder builder = new ElementBuilder(holder);
+// String parameterName = "p";
+// SimpleFormalParameter formalParameter = AstFactory.simpleFormalParameter3(parameterName);
+// _useParameterInMethod(formalParameter, 100, 110);
+// formalParameter.accept(builder);
+// List<ParameterElement> parameters = holder.parameters;
+// EngineTestCase.assertLength(1, parameters);
+// ParameterElement parameter = parameters[0];
+// JUnitTestCase.assertNotNull(parameter);
+// JUnitTestCase.assertEquals(parameterName, parameter.name);
+// JUnitTestCase.assertNull(parameter.initializer);
+// JUnitTestCase.assertFalse(parameter.isConst);
+// JUnitTestCase.assertFalse(parameter.isFinal);
+// JUnitTestCase.assertFalse(parameter.isSynthetic);
+// JUnitTestCase.assertEquals(ParameterKind.REQUIRED, parameter.parameterKind);
+// JUnitTestCase.assertEquals(SourceRangeFactory.rangeStartEnd(100, 110), parameter.visibleRange);
+// }
+// void test_visitTypeAlias_minimal() {
+// ElementHolder holder = new ElementHolder();
+// ElementBuilder builder = new ElementBuilder(holder);
+// String aliasName = "F";
+// TypeAlias typeAlias = AstFactory.typeAlias(null, aliasName, null, null);
+// typeAlias.accept(builder);
+// List<FunctionTypeAliasElement> aliases = holder.typeAliases;
+// EngineTestCase.assertLength(1, aliases);
+// FunctionTypeAliasElement alias = aliases[0];
+// JUnitTestCase.assertNotNull(alias);
+// JUnitTestCase.assertEquals(aliasName, alias.name);
+// JUnitTestCase.assertNotNull(alias.type);
+// JUnitTestCase.assertFalse(alias.isSynthetic);
+// }
+// void test_visitTypeAlias_withFormalParameters() {
+// ElementHolder holder = new ElementHolder();
+// ElementBuilder builder = new ElementBuilder(holder);
+// String aliasName = "F";
+// String firstParameterName = "x";
+// String secondParameterName = "y";
+// TypeAlias typeAlias = AstFactory.typeAlias(null, aliasName, AstFactory.typeParameterList([]), AstFactory.formalParameterList([
+// AstFactory.simpleFormalParameter3(firstParameterName),
+// AstFactory.simpleFormalParameter3(secondParameterName)]));
+// typeAlias.accept(builder);
+// List<FunctionTypeAliasElement> aliases = holder.typeAliases;
+// EngineTestCase.assertLength(1, aliases);
+// FunctionTypeAliasElement alias = aliases[0];
+// JUnitTestCase.assertNotNull(alias);
+// JUnitTestCase.assertEquals(aliasName, alias.name);
+// JUnitTestCase.assertNotNull(alias.type);
+// JUnitTestCase.assertFalse(alias.isSynthetic);
+// List<VariableElement> parameters = alias.parameters;
+// EngineTestCase.assertLength(2, parameters);
+// JUnitTestCase.assertEquals(firstParameterName, parameters[0].name);
+// JUnitTestCase.assertEquals(secondParameterName, parameters[1].name);
+// List<TypeParameterElement> typeParameters = alias.typeParameters;
+// JUnitTestCase.assertNotNull(typeParameters);
+// EngineTestCase.assertLength(0, typeParameters);
+// }
+// void test_visitTypeAlias_withTypeParameters() {
+// ElementHolder holder = new ElementHolder();
+// ElementBuilder builder = new ElementBuilder(holder);
+// String aliasName = "F";
+// String firstTypeParameterName = "A";
+// String secondTypeParameterName = "B";
+// TypeAlias typeAlias = AstFactory.typeAlias(null, aliasName, AstFactory.typeParameterList([firstTypeParameterName, secondTypeParameterName]), AstFactory.formalParameterList([]));
+// typeAlias.accept(builder);
+// List<FunctionTypeAliasElement> aliases = holder.typeAliases;
+// EngineTestCase.assertLength(1, aliases);
+// FunctionTypeAliasElement alias = aliases[0];
+// JUnitTestCase.assertNotNull(alias);
+// JUnitTestCase.assertEquals(aliasName, alias.name);
+// JUnitTestCase.assertNotNull(alias.type);
+// JUnitTestCase.assertFalse(alias.isSynthetic);
+// List<VariableElement> parameters = alias.parameters;
+// JUnitTestCase.assertNotNull(parameters);
+// EngineTestCase.assertLength(0, parameters);
+// List<TypeParameterElement> typeParameters = alias.typeParameters;
+// EngineTestCase.assertLength(2, typeParameters);
+// JUnitTestCase.assertEquals(firstTypeParameterName, typeParameters[0].name);
+// JUnitTestCase.assertEquals(secondTypeParameterName, typeParameters[1].name);
+// }
+// void test_visitTypeParameter() {
+// ElementHolder holder = new ElementHolder();
+// ElementBuilder builder = new ElementBuilder(holder);
+// String parameterName = "E";
+// TypeParameter typeParameter = AstFactory.typeParameter(parameterName);
+// typeParameter.accept(builder);
+// List<TypeParameterElement> typeParameters = holder.typeParameters;
+// EngineTestCase.assertLength(1, typeParameters);
+// TypeParameterElement typeParameterElement = typeParameters[0];
+// JUnitTestCase.assertNotNull(typeParameterElement);
+// JUnitTestCase.assertEquals(parameterName, typeParameterElement.name);
+// JUnitTestCase.assertNull(typeParameterElement.bound);
+// JUnitTestCase.assertFalse(typeParameterElement.isSynthetic);
+// }
+// void test_visitVariableDeclaration_inConstructor() {
+// ElementHolder holder = new ElementHolder();
+// ElementBuilder builder = new ElementBuilder(holder);
+// //
+// // C() {var v;}
+// //
+// String variableName = "v";
+// VariableDeclaration variable = AstFactory.variableDeclaration2(variableName, null);
+// Statement statement = AstFactory.variableDeclarationStatement2(null, [variable]);
+// ConstructorDeclaration constructor = AstFactory.constructorDeclaration2(null, null, AstFactory.identifier3("C"), "C", AstFactory.formalParameterList([]), null, AstFactory.blockFunctionBody2([statement]));
+// constructor.accept(builder);
+// List<ConstructorElement> constructors = holder.constructors;
+// EngineTestCase.assertLength(1, constructors);
+// List<LocalVariableElement> variableElements = constructors[0].localVariables;
+// EngineTestCase.assertLength(1, variableElements);
+// LocalVariableElement variableElement = variableElements[0];
+// JUnitTestCase.assertEquals(variableName, variableElement.name);
+// }
+// void test_visitVariableDeclaration_inMethod() {
+// ElementHolder holder = new ElementHolder();
+// ElementBuilder builder = new ElementBuilder(holder);
+// //
+// // m() {var v;}
+// //
+// String variableName = "v";
+// VariableDeclaration variable = AstFactory.variableDeclaration2(variableName, null);
+// Statement statement = AstFactory.variableDeclarationStatement2(null, [variable]);
+// MethodDeclaration constructor = AstFactory.methodDeclaration2(null, null, null, null, AstFactory.identifier3("m"), AstFactory.formalParameterList([]), AstFactory.blockFunctionBody2([statement]));
+// constructor.accept(builder);
+// List<MethodElement> methods = holder.methods;
+// EngineTestCase.assertLength(1, methods);
+// List<LocalVariableElement> variableElements = methods[0].localVariables;
+// EngineTestCase.assertLength(1, variableElements);
+// LocalVariableElement variableElement = variableElements[0];
+// JUnitTestCase.assertEquals(variableName, variableElement.name);
+// }
+// void test_visitVariableDeclaration_localNestedInField() {
+// ElementHolder holder = new ElementHolder();
+// ElementBuilder builder = new ElementBuilder(holder);
+// //
+// // var f = () {var v;}
+// //
+// String variableName = "v";
+// VariableDeclaration variable = AstFactory.variableDeclaration2(variableName, null);
+// Statement statement = AstFactory.variableDeclarationStatement2(null, [variable]);
+// Expression initializer = AstFactory.functionExpression2(AstFactory.formalParameterList([]), AstFactory.blockFunctionBody2([statement]));
+// String fieldName = "f";
+// VariableDeclaration field = AstFactory.variableDeclaration2(fieldName, initializer);
+// FieldDeclaration fieldDeclaration = AstFactory.fieldDeclaration2(false, null, [field]);
+// fieldDeclaration.accept(builder);
+// List<FieldElement> variables = holder.fields;
+// EngineTestCase.assertLength(1, variables);
+// FieldElement fieldElement = variables[0];
+// JUnitTestCase.assertNotNull(fieldElement);
+// FunctionElement initializerElement = fieldElement.initializer;
+// JUnitTestCase.assertNotNull(initializerElement);
+// List<FunctionElement> functionElements = initializerElement.functions;
+// EngineTestCase.assertLength(1, functionElements);
+// List<LocalVariableElement> variableElements = functionElements[0].localVariables;
+// EngineTestCase.assertLength(1, variableElements);
+// LocalVariableElement variableElement = variableElements[0];
+// JUnitTestCase.assertEquals(variableName, variableElement.name);
+// JUnitTestCase.assertFalse(variableElement.isConst);
+// JUnitTestCase.assertFalse(variableElement.isFinal);
+// JUnitTestCase.assertFalse(variableElement.isSynthetic);
+// }
+// void test_visitVariableDeclaration_noInitializer() {
+// ElementHolder holder = new ElementHolder();
+// ElementBuilder builder = new ElementBuilder(holder);
+// String variableName = "v";
+// VariableDeclaration variableDeclaration = AstFactory.variableDeclaration2(variableName, null);
+// AstFactory.variableDeclarationList2(null, [variableDeclaration]);
+// variableDeclaration.accept(builder);
+// List<TopLevelVariableElement> variables = holder.topLevelVariables;
+// EngineTestCase.assertLength(1, variables);
+// TopLevelVariableElement variable = variables[0];
+// JUnitTestCase.assertNotNull(variable);
+// JUnitTestCase.assertNull(variable.initializer);
+// JUnitTestCase.assertEquals(variableName, variable.name);
+// JUnitTestCase.assertFalse(variable.isConst);
+// JUnitTestCase.assertFalse(variable.isFinal);
+// JUnitTestCase.assertFalse(variable.isSynthetic);
+// JUnitTestCase.assertNotNull(variable.getter);
+// JUnitTestCase.assertNotNull(variable.setter);
+// }
+// void _useParameterInMethod(FormalParameter formalParameter, int blockOffset, int blockEnd) {
+// Block block = AstFactory.block([]);
+// block.leftBracket.offset = blockOffset;
+// block.rightBracket.offset = blockEnd - 1;
+// BlockFunctionBody body = AstFactory.blockFunctionBody(block);
+// AstFactory.methodDeclaration2(null, null, null, null, AstFactory.identifier3("main"), AstFactory.formalParameterList([formalParameter]), body);
+// }
+// static dartSuite() {
+// _ut.group('ElementBuilderTest', () {
+// _ut.test('test_visitCatchClause', () {
+// final __test = new ElementBuilderTest();
+// runJUnitTest(__test, __test.test_visitCatchClause);
+// });
+// _ut.test('test_visitClassDeclaration_abstract', () {
+// final __test = new ElementBuilderTest();
+// runJUnitTest(__test, __test.test_visitClassDeclaration_abstract);
+// });
+// _ut.test('test_visitClassDeclaration_minimal', () {
+// final __test = new ElementBuilderTest();
+// runJUnitTest(__test, __test.test_visitClassDeclaration_minimal);
+// });
+// _ut.test('test_visitClassDeclaration_parameterized', () {
+// final __test = new ElementBuilderTest();
+// runJUnitTest(__test, __test.test_visitClassDeclaration_parameterized);
+// });
+// _ut.test('test_visitClassDeclaration_withMembers', () {
+// final __test = new ElementBuilderTest();
+// runJUnitTest(__test, __test.test_visitClassDeclaration_withMembers);
+// });
+// _ut.test('test_visitConstructorDeclaration_factory', () {
+// final __test = new ElementBuilderTest();
+// runJUnitTest(__test, __test.test_visitConstructorDeclaration_factory);
+// });
+// _ut.test('test_visitConstructorDeclaration_minimal', () {
+// final __test = new ElementBuilderTest();
+// runJUnitTest(__test, __test.test_visitConstructorDeclaration_minimal);
+// });
+// _ut.test('test_visitConstructorDeclaration_named', () {
+// final __test = new ElementBuilderTest();
+// runJUnitTest(__test, __test.test_visitConstructorDeclaration_named);
+// });
+// _ut.test('test_visitConstructorDeclaration_unnamed', () {
+// final __test = new ElementBuilderTest();
+// runJUnitTest(__test, __test.test_visitConstructorDeclaration_unnamed);
+// });
+// _ut.test('test_visitEnumDeclaration', () {
+// final __test = new ElementBuilderTest();
+// runJUnitTest(__test, __test.test_visitEnumDeclaration);
+// });
+// _ut.test('test_visitFieldDeclaration', () {
+// final __test = new ElementBuilderTest();
+// runJUnitTest(__test, __test.test_visitFieldDeclaration);
+// });
+// _ut.test('test_visitFieldFormalParameter', () {
+// final __test = new ElementBuilderTest();
+// runJUnitTest(__test, __test.test_visitFieldFormalParameter);
+// });
+// _ut.test('test_visitFieldFormalParameter_funtionTyped', () {
+// final __test = new ElementBuilderTest();
+// runJUnitTest(__test, __test.test_visitFieldFormalParameter_funtionTyped);
+// });
+// _ut.test('test_visitFormalParameterList', () {
+// final __test = new ElementBuilderTest();
+// runJUnitTest(__test, __test.test_visitFormalParameterList);
+// });
+// _ut.test('test_visitFunctionDeclaration_getter', () {
+// final __test = new ElementBuilderTest();
+// runJUnitTest(__test, __test.test_visitFunctionDeclaration_getter);
+// });
+// _ut.test('test_visitFunctionDeclaration_plain', () {
+// final __test = new ElementBuilderTest();
+// runJUnitTest(__test, __test.test_visitFunctionDeclaration_plain);
+// });
+// _ut.test('test_visitFunctionDeclaration_setter', () {
+// final __test = new ElementBuilderTest();
+// runJUnitTest(__test, __test.test_visitFunctionDeclaration_setter);
+// });
+// _ut.test('test_visitFunctionExpression', () {
+// final __test = new ElementBuilderTest();
+// runJUnitTest(__test, __test.test_visitFunctionExpression);
+// });
+// _ut.test('test_visitFunctionTypeAlias', () {
+// final __test = new ElementBuilderTest();
+// runJUnitTest(__test, __test.test_visitFunctionTypeAlias);
+// });
+// _ut.test('test_visitFunctionTypedFormalParameter', () {
+// final __test = new ElementBuilderTest();
+// runJUnitTest(__test, __test.test_visitFunctionTypedFormalParameter);
+// });
+// _ut.test('test_visitLabeledStatement', () {
+// final __test = new ElementBuilderTest();
+// runJUnitTest(__test, __test.test_visitLabeledStatement);
+// });
+// _ut.test('test_visitMethodDeclaration_abstract', () {
+// final __test = new ElementBuilderTest();
+// runJUnitTest(__test, __test.test_visitMethodDeclaration_abstract);
+// });
+// _ut.test('test_visitMethodDeclaration_getter', () {
+// final __test = new ElementBuilderTest();
+// runJUnitTest(__test, __test.test_visitMethodDeclaration_getter);
+// });
+// _ut.test('test_visitMethodDeclaration_getter_abstract', () {
+// final __test = new ElementBuilderTest();
+// runJUnitTest(__test, __test.test_visitMethodDeclaration_getter_abstract);
+// });
+// _ut.test('test_visitMethodDeclaration_getter_external', () {
+// final __test = new ElementBuilderTest();
+// runJUnitTest(__test, __test.test_visitMethodDeclaration_getter_external);
+// });
+// _ut.test('test_visitMethodDeclaration_minimal', () {
+// final __test = new ElementBuilderTest();
+// runJUnitTest(__test, __test.test_visitMethodDeclaration_minimal);
+// });
+// _ut.test('test_visitMethodDeclaration_operator', () {
+// final __test = new ElementBuilderTest();
+// runJUnitTest(__test, __test.test_visitMethodDeclaration_operator);
+// });
+// _ut.test('test_visitMethodDeclaration_setter', () {
+// final __test = new ElementBuilderTest();
+// runJUnitTest(__test, __test.test_visitMethodDeclaration_setter);
+// });
+// _ut.test('test_visitMethodDeclaration_setter_abstract', () {
+// final __test = new ElementBuilderTest();
+// runJUnitTest(__test, __test.test_visitMethodDeclaration_setter_abstract);
+// });
+// _ut.test('test_visitMethodDeclaration_setter_external', () {
+// final __test = new ElementBuilderTest();
+// runJUnitTest(__test, __test.test_visitMethodDeclaration_setter_external);
+// });
+// _ut.test('test_visitMethodDeclaration_static', () {
+// final __test = new ElementBuilderTest();
+// runJUnitTest(__test, __test.test_visitMethodDeclaration_static);
+// });
+// _ut.test('test_visitMethodDeclaration_withMembers', () {
+// final __test = new ElementBuilderTest();
+// runJUnitTest(__test, __test.test_visitMethodDeclaration_withMembers);
+// });
+// _ut.test('test_visitNamedFormalParameter', () {
+// final __test = new ElementBuilderTest();
+// runJUnitTest(__test, __test.test_visitNamedFormalParameter);
+// });
+// _ut.test('test_visitSimpleFormalParameter', () {
+// final __test = new ElementBuilderTest();
+// runJUnitTest(__test, __test.test_visitSimpleFormalParameter);
+// });
+// _ut.test('test_visitTypeAlias_minimal', () {
+// final __test = new ElementBuilderTest();
+// runJUnitTest(__test, __test.test_visitTypeAlias_minimal);
+// });
+// _ut.test('test_visitTypeAlias_withFormalParameters', () {
+// final __test = new ElementBuilderTest();
+// runJUnitTest(__test, __test.test_visitTypeAlias_withFormalParameters);
+// });
+// _ut.test('test_visitTypeAlias_withTypeParameters', () {
+// final __test = new ElementBuilderTest();
+// runJUnitTest(__test, __test.test_visitTypeAlias_withTypeParameters);
+// });
+// _ut.test('test_visitTypeParameter', () {
+// final __test = new ElementBuilderTest();
+// runJUnitTest(__test, __test.test_visitTypeParameter);
+// });
+// _ut.test('test_visitVariableDeclaration_inConstructor', () {
+// final __test = new ElementBuilderTest();
+// runJUnitTest(__test, __test.test_visitVariableDeclaration_inConstructor);
+// });
+// _ut.test('test_visitVariableDeclaration_inMethod', () {
+// final __test = new ElementBuilderTest();
+// runJUnitTest(__test, __test.test_visitVariableDeclaration_inMethod);
+// });
+// _ut.test('test_visitVariableDeclaration_localNestedInField', () {
+// final __test = new ElementBuilderTest();
+// runJUnitTest(__test, __test.test_visitVariableDeclaration_localNestedInField);
+// });
+// _ut.test('test_visitVariableDeclaration_noInitializer', () {
+// final __test = new ElementBuilderTest();
+// runJUnitTest(__test, __test.test_visitVariableDeclaration_noInitializer);
+// });
+// });
+// }
+// }
+// class ElementLocatorTest extends ResolverTestCase {
+// void fail_locate_ExportDirective() {
+// AstNode id = _findNodeIn("export", ["export 'dart:core';"]);
+// Element element = ElementLocator.locate(id);
+// EngineTestCase.assertInstanceOf((obj) => obj is ImportElement, ImportElement, element);
+// }
+// void fail_locate_Identifier_libraryDirective() {
+// AstNode id = _findNodeIn("foo", ["library foo.bar;"]);
+// Element element = ElementLocator.locate(id);
+// EngineTestCase.assertInstanceOf((obj) => obj is LibraryElement, LibraryElement, element);
+// }
+// void fail_locate_Identifier_partOfDirective() {
+// // Can't resolve the library element without the library declaration.
+// // AstNode id = findNodeIn("foo", "part of foo.bar;");
+// // Element element = ElementLocator.locate(id);
+// // assertInstanceOf(LibraryElement.class, element);
+// JUnitTestCase.fail("Test this case");
+// }
+// void test_locate_AssignmentExpression() {
+// AstNode id = _findNodeIn("+=", ["int x = 0;", "void main() {", " x += 1;", "}"]);
+// Element element = ElementLocator.locate(id);
+// EngineTestCase.assertInstanceOf((obj) => obj is MethodElement, MethodElement, element);
+// }
+// void test_locate_BinaryExpression() {
+// AstNode id = _findNodeIn("+", ["var x = 3 + 4;"]);
+// Element element = ElementLocator.locate(id);
+// EngineTestCase.assertInstanceOf((obj) => obj is MethodElement, MethodElement, element);
+// }
+// void test_locate_ClassDeclaration() {
+// AstNode id = _findNodeIn("class", ["class A { }"]);
+// Element element = ElementLocator.locate(id);
+// EngineTestCase.assertInstanceOf((obj) => obj is ClassElement, ClassElement, element);
+// }
+// void test_locate_CompilationUnit() {
+// CompilationUnit cu = _resolveContents(["// only comment"]);
+// JUnitTestCase.assertNotNull(cu.element);
+// Element element = ElementLocator.locate(cu);
+// JUnitTestCase.assertSame(cu.element, element);
+// }
+// void test_locate_ConstructorDeclaration() {
+// AstNode id = _findNodeIndexedIn("bar", 0, ["class A {", " A.bar() {}", "}"]);
+// ConstructorDeclaration declaration = id.getAncestor((node) => node is ConstructorDeclaration);
+// Element element = ElementLocator.locate(declaration);
+// EngineTestCase.assertInstanceOf((obj) => obj is ConstructorElement, ConstructorElement, element);
+// }
+// void test_locate_FunctionDeclaration() {
+// AstNode id = _findNodeIn("f", ["int f() => 3;"]);
+// FunctionDeclaration declaration = id.getAncestor((node) => node is FunctionDeclaration);
+// Element element = ElementLocator.locate(declaration);
+// EngineTestCase.assertInstanceOf((obj) => obj is FunctionElement, FunctionElement, element);
+// }
+// void test_locate_Identifier_annotationClass_namedConstructor_forSimpleFormalParameter() {
+// AstNode id = _findNodeIndexedIn("Class", 2, [
+// "class Class {",
+// " const Class.name();",
+// "}",
+// "void main(@Class.name() parameter) {",
+// "}"]);
+// Element element = ElementLocator.locate(id);
+// EngineTestCase.assertInstanceOf((obj) => obj is ClassElement, ClassElement, element);
+// }
+// void test_locate_Identifier_annotationClass_unnamedConstructor_forSimpleFormalParameter() {
+// AstNode id = _findNodeIndexedIn("Class", 2, [
+// "class Class {",
+// " const Class();",
+// "}",
+// "void main(@Class() parameter) {",
+// "}"]);
+// Element element = ElementLocator.locate(id);
+// EngineTestCase.assertInstanceOf((obj) => obj is ConstructorElement, ConstructorElement, element);
+// }
+// void test_locate_Identifier_className() {
+// AstNode id = _findNodeIn("A", ["class A { }"]);
+// Element element = ElementLocator.locate(id);
+// EngineTestCase.assertInstanceOf((obj) => obj is ClassElement, ClassElement, element);
+// }
+// void test_locate_Identifier_constructor_named() {
+// AstNode id = _findNodeIndexedIn("bar", 0, ["class A {", " A.bar() {}", "}"]);
+// Element element = ElementLocator.locate(id);
+// EngineTestCase.assertInstanceOf((obj) => obj is ConstructorElement, ConstructorElement, element);
+// }
+// void test_locate_Identifier_constructor_unnamed() {
+// AstNode id = _findNodeIndexedIn("A", 1, ["class A {", " A() {}", "}"]);
+// Element element = ElementLocator.locate(id);
+// EngineTestCase.assertInstanceOf((obj) => obj is ConstructorElement, ConstructorElement, element);
+// }
+// void test_locate_Identifier_fieldName() {
+// AstNode id = _findNodeIn("x", ["class A { var x; }"]);
+// Element element = ElementLocator.locate(id);
+// EngineTestCase.assertInstanceOf((obj) => obj is FieldElement, FieldElement, element);
+// }
+// void test_locate_Identifier_propertAccess() {
+// AstNode id = _findNodeIn("length", ["void main() {", " int x = 'foo'.length;", "}"]);
+// Element element = ElementLocator.locate(id);
+// EngineTestCase.assertInstanceOf((obj) => obj is PropertyAccessorElement, PropertyAccessorElement, element);
+// }
+// void test_locate_ImportDirective() {
+// AstNode id = _findNodeIn("import", ["import 'dart:core';"]);
+// Element element = ElementLocator.locate(id);
+// EngineTestCase.assertInstanceOf((obj) => obj is ImportElement, ImportElement, element);
+// }
+// void test_locate_IndexExpression() {
+// AstNode id = _findNodeIndexedIn("\\[", 1, [
+// "void main() {",
+// " List x = [1, 2];",
+// " var y = x[0];",
+// "}"]);
+// Element element = ElementLocator.locate(id);
+// EngineTestCase.assertInstanceOf((obj) => obj is MethodElement, MethodElement, element);
+// }
+// void test_locate_InstanceCreationExpression() {
+// AstNode node = _findNodeIndexedIn("A(", 0, ["class A {}", "void main() {", " new A();", "}"]);
+// Element element = ElementLocator.locate(node);
+// EngineTestCase.assertInstanceOf((obj) => obj is ConstructorElement, ConstructorElement, element);
+// }
+// void test_locate_InstanceCreationExpression_type_prefixedIdentifier() {
+// // prepare: new pref.A()
+// SimpleIdentifier identifier = AstFactory.identifier3("A");
+// PrefixedIdentifier prefixedIdentifier = AstFactory.identifier4("pref", identifier);
+// InstanceCreationExpression creation = AstFactory.instanceCreationExpression2(Keyword.NEW, AstFactory.typeName3(prefixedIdentifier, []), []);
+// // set ConstructorElement
+// ClassElement classElement = ElementFactory.classElement2("A", []);
+// ConstructorElement constructorElement = ElementFactory.constructorElement2(classElement, null, []);
+// creation.constructorName.staticElement = constructorElement;
+// // verify that "A" is resolved to ConstructorElement
+// Element element = ElementLocator.locate(identifier);
+// JUnitTestCase.assertSame(constructorElement, element);
+// }
+// void test_locate_InstanceCreationExpression_type_simpleIdentifier() {
+// // prepare: new A()
+// SimpleIdentifier identifier = AstFactory.identifier3("A");
+// InstanceCreationExpression creation = AstFactory.instanceCreationExpression2(Keyword.NEW, AstFactory.typeName3(identifier, []), []);
+// // set ConstructorElement
+// ClassElement classElement = ElementFactory.classElement2("A", []);
+// ConstructorElement constructorElement = ElementFactory.constructorElement2(classElement, null, []);
+// creation.constructorName.staticElement = constructorElement;
+// // verify that "A" is resolved to ConstructorElement
+// Element element = ElementLocator.locate(identifier);
+// JUnitTestCase.assertSame(constructorElement, element);
+// }
+// void test_locate_LibraryDirective() {
+// AstNode id = _findNodeIn("library", ["library foo;"]);
+// Element element = ElementLocator.locate(id);
+// EngineTestCase.assertInstanceOf((obj) => obj is LibraryElement, LibraryElement, element);
+// }
+// void test_locate_MethodDeclaration() {
+// AstNode id = _findNodeIn("m", ["class A {", " void m() {}", "}"]);
+// MethodDeclaration declaration = id.getAncestor((node) => node is MethodDeclaration);
+// Element element = ElementLocator.locate(declaration);
+// EngineTestCase.assertInstanceOf((obj) => obj is MethodElement, MethodElement, element);
+// }
+// void test_locate_MethodInvocation_method() {
+// AstNode id = _findNodeIndexedIn("bar", 1, [
+// "class A {",
+// " int bar() => 42;",
+// "}",
+// "void main() {",
+// " var f = new A().bar();",
+// "}"]);
+// Element element = ElementLocator.locate(id);
+// EngineTestCase.assertInstanceOf((obj) => obj is MethodElement, MethodElement, element);
+// }
+// void test_locate_MethodInvocation_topLevel() {
+// String contents = EngineTestCase.createSource(["foo(x) {}", "void main() {", " foo(0);", "}"]);
+// CompilationUnit cu = _resolveContents([contents]);
+// MethodInvocation node = AbstractDartTest.findNode(cu, contents.indexOf("foo(0)"), MethodInvocation);
+// Element element = ElementLocator.locate(node);
+// EngineTestCase.assertInstanceOf((obj) => obj is FunctionElement, FunctionElement, element);
+// }
+// void test_locate_PostfixExpression() {
+// AstNode id = _findNodeIn("++", ["int addOne(int x) => x++;"]);
+// Element element = ElementLocator.locate(id);
+// EngineTestCase.assertInstanceOf((obj) => obj is MethodElement, MethodElement, element);
+// }
+// void test_locate_PrefixedIdentifier() {
+// AstNode id = _findNodeIn("int", ["import 'dart:core' as core;", "core.int value;"]);
+// PrefixedIdentifier identifier = id.getAncestor((node) => node is PrefixedIdentifier);
+// Element element = ElementLocator.locate(identifier);
+// EngineTestCase.assertInstanceOf((obj) => obj is ClassElement, ClassElement, element);
+// }
+// void test_locate_PrefixExpression() {
+// AstNode id = _findNodeIn("++", ["int addOne(int x) => ++x;"]);
+// Element element = ElementLocator.locate(id);
+// EngineTestCase.assertInstanceOf((obj) => obj is MethodElement, MethodElement, element);
+// }
+// void test_locate_StringLiteral_exportUri() {
+// addNamedSource("/foo.dart", "library foo;");
+// AstNode id = _findNodeIn("'foo.dart'", ["export 'foo.dart';"]);
+// Element element = ElementLocator.locate(id);
+// EngineTestCase.assertInstanceOf((obj) => obj is LibraryElement, LibraryElement, element);
+// }
+// void test_locate_StringLiteral_expression() {
+// AstNode id = _findNodeIn("abc", ["var x = 'abc';"]);
+// Element element = ElementLocator.locate(id);
+// JUnitTestCase.assertNull(element);
+// }
+// void test_locate_StringLiteral_importUri() {
+// addNamedSource("/foo.dart", "library foo; class A {}");
+// AstNode id = _findNodeIn("'foo.dart'", ["import 'foo.dart'; class B extends A {}"]);
+// Element element = ElementLocator.locate(id);
+// EngineTestCase.assertInstanceOf((obj) => obj is LibraryElement, LibraryElement, element);
+// }
+// void test_locate_StringLiteral_partUri() {
+// addNamedSource("/foo.dart", "part of app;");
+// AstNode id = _findNodeIn("'foo.dart'", ["library app; part 'foo.dart';"]);
+// Element element = ElementLocator.locate(id);
+// EngineTestCase.assertInstanceOf((obj) => obj is CompilationUnitElement, CompilationUnitElement, element);
+// }
+// void test_locate_VariableDeclaration() {
+// AstNode id = _findNodeIn("x", ["var x = 'abc';"]);
+// VariableDeclaration declaration = id.getAncestor((node) => node is VariableDeclaration);
+// Element element = ElementLocator.locate(declaration);
+// EngineTestCase.assertInstanceOf((obj) => obj is TopLevelVariableElement, TopLevelVariableElement, element);
+// }
+// void test_locateWithOffset_BinaryExpression() {
+// AstNode id = _findNodeIn("+", ["var x = 3 + 4;"]);
+// Element element = ElementLocator.locateWithOffset(id, 0);
+// EngineTestCase.assertInstanceOf((obj) => obj is MethodElement, MethodElement, element);
+// }
+// void test_locateWithOffset_StringLiteral() {
+// AstNode id = _findNodeIn("abc", ["var x = 'abc';"]);
+// Element element = ElementLocator.locateWithOffset(id, 1);
+// JUnitTestCase.assertNull(element);
+// }
+// @override
+// void reset() {
+// AnalysisOptionsImpl analysisOptions = new AnalysisOptionsImpl();
+// analysisOptions.hint = false;
+// resetWithOptions(analysisOptions);
+// }
+// /**
+// * Find the first AST node matching a pattern in the resolved AST for the given source.
+// *
+// * @param nodePattern the (unique) pattern used to identify the node of interest
+// * @param lines the lines to be merged into a single source string
+// * @return the matched node in the resolved AST for the given source lines
+// * @throws Exception if source cannot be verified
+// */
+// AstNode _findNodeIn(String nodePattern, List<String> lines) => _findNodeIndexedIn(nodePattern, 0, lines);
+// /**
+// * Find the AST node matching the given indexed occurrence of a pattern in the resolved AST for
+// * the given source.
+// *
+// * @param nodePattern the pattern used to identify the node of interest
+// * @param index the index of the pattern match of interest
+// * @param lines the lines to be merged into a single source string
+// * @return the matched node in the resolved AST for the given source lines
+// * @throws Exception if source cannot be verified
+// */
+// AstNode _findNodeIndexedIn(String nodePattern, int index, List<String> lines) {
+// String contents = EngineTestCase.createSource(lines);
+// CompilationUnit cu = _resolveContents([contents]);
+// int start = _getOffsetOfMatch(contents, nodePattern, index);
+// int end = start + nodePattern.length;
+// return new NodeLocator.con2(start, end).searchWithin(cu);
+// }
+// int _getOffsetOfMatch(String contents, String pattern, int matchIndex) {
+// if (matchIndex == 0) {
+// return contents.indexOf(pattern);
+// }
+// JavaPatternMatcher matcher = new JavaPatternMatcher(new RegExp(pattern), contents);
+// int count = 0;
+// while (matcher.find()) {
+// if (count == matchIndex) {
+// return matcher.start();
+// }
+// ++count;
+// }
+// return -1;
+// }
+// /**
+// * Parse, resolve and verify the given source lines to produce a fully resolved AST.
+// *
+// * @param lines the lines to be merged into a single source string
+// * @return the result of resolving the AST structure representing the content of the source
+// * @throws Exception if source cannot be verified
+// */
+// CompilationUnit _resolveContents(List<String> lines) {
+// Source source = addSource(EngineTestCase.createSource(lines));
+// LibraryElement library = resolve(source);
+// assertNoErrors(source);
+// verify([source]);
+// return analysisContext.resolveCompilationUnit(source, library);
+// }
+// static dartSuite() {
+// _ut.group('ElementLocatorTest', () {
+// _ut.test('test_locateWithOffset_BinaryExpression', () {
+// final __test = new ElementLocatorTest();
+// runJUnitTest(__test, __test.test_locateWithOffset_BinaryExpression);
+// });
+// _ut.test('test_locateWithOffset_StringLiteral', () {
+// final __test = new ElementLocatorTest();
+// runJUnitTest(__test, __test.test_locateWithOffset_StringLiteral);
+// });
+// _ut.test('test_locate_AssignmentExpression', () {
+// final __test = new ElementLocatorTest();
+// runJUnitTest(__test, __test.test_locate_AssignmentExpression);
+// });
+// _ut.test('test_locate_BinaryExpression', () {
+// final __test = new ElementLocatorTest();
+// runJUnitTest(__test, __test.test_locate_BinaryExpression);
+// });
+// _ut.test('test_locate_ClassDeclaration', () {
+// final __test = new ElementLocatorTest();
+// runJUnitTest(__test, __test.test_locate_ClassDeclaration);
+// });
+// _ut.test('test_locate_CompilationUnit', () {
+// final __test = new ElementLocatorTest();
+// runJUnitTest(__test, __test.test_locate_CompilationUnit);
+// });
+// _ut.test('test_locate_ConstructorDeclaration', () {
+// final __test = new ElementLocatorTest();
+// runJUnitTest(__test, __test.test_locate_ConstructorDeclaration);
+// });
+// _ut.test('test_locate_FunctionDeclaration', () {
+// final __test = new ElementLocatorTest();
+// runJUnitTest(__test, __test.test_locate_FunctionDeclaration);
+// });
+// _ut.test('test_locate_Identifier_annotationClass_namedConstructor_forSimpleFormalParameter', () {
+// final __test = new ElementLocatorTest();
+// runJUnitTest(__test, __test.test_locate_Identifier_annotationClass_namedConstructor_forSimpleFormalParameter);
+// });
+// _ut.test('test_locate_Identifier_annotationClass_unnamedConstructor_forSimpleFormalParameter', () {
+// final __test = new ElementLocatorTest();
+// runJUnitTest(__test, __test.test_locate_Identifier_annotationClass_unnamedConstructor_forSimpleFormalParameter);
+// });
+// _ut.test('test_locate_Identifier_className', () {
+// final __test = new ElementLocatorTest();
+// runJUnitTest(__test, __test.test_locate_Identifier_className);
+// });
+// _ut.test('test_locate_Identifier_constructor_named', () {
+// final __test = new ElementLocatorTest();
+// runJUnitTest(__test, __test.test_locate_Identifier_constructor_named);
+// });
+// _ut.test('test_locate_Identifier_constructor_unnamed', () {
+// final __test = new ElementLocatorTest();
+// runJUnitTest(__test, __test.test_locate_Identifier_constructor_unnamed);
+// });
+// _ut.test('test_locate_Identifier_fieldName', () {
+// final __test = new ElementLocatorTest();
+// runJUnitTest(__test, __test.test_locate_Identifier_fieldName);
+// });
+// _ut.test('test_locate_Identifier_propertAccess', () {
+// final __test = new ElementLocatorTest();
+// runJUnitTest(__test, __test.test_locate_Identifier_propertAccess);
+// });
+// _ut.test('test_locate_ImportDirective', () {
+// final __test = new ElementLocatorTest();
+// runJUnitTest(__test, __test.test_locate_ImportDirective);
+// });
+// _ut.test('test_locate_IndexExpression', () {
+// final __test = new ElementLocatorTest();
+// runJUnitTest(__test, __test.test_locate_IndexExpression);
+// });
+// _ut.test('test_locate_InstanceCreationExpression', () {
+// final __test = new ElementLocatorTest();
+// runJUnitTest(__test, __test.test_locate_InstanceCreationExpression);
+// });
+// _ut.test('test_locate_InstanceCreationExpression_type_prefixedIdentifier', () {
+// final __test = new ElementLocatorTest();
+// runJUnitTest(__test, __test.test_locate_InstanceCreationExpression_type_prefixedIdentifier);
+// });
+// _ut.test('test_locate_InstanceCreationExpression_type_simpleIdentifier', () {
+// final __test = new ElementLocatorTest();
+// runJUnitTest(__test, __test.test_locate_InstanceCreationExpression_type_simpleIdentifier);
+// });
+// _ut.test('test_locate_LibraryDirective', () {
+// final __test = new ElementLocatorTest();
+// runJUnitTest(__test, __test.test_locate_LibraryDirective);
+// });
+// _ut.test('test_locate_MethodDeclaration', () {
+// final __test = new ElementLocatorTest();
+// runJUnitTest(__test, __test.test_locate_MethodDeclaration);
+// });
+// _ut.test('test_locate_MethodInvocation_method', () {
+// final __test = new ElementLocatorTest();
+// runJUnitTest(__test, __test.test_locate_MethodInvocation_method);
+// });
+// _ut.test('test_locate_MethodInvocation_topLevel', () {
+// final __test = new ElementLocatorTest();
+// runJUnitTest(__test, __test.test_locate_MethodInvocation_topLevel);
+// });
+// _ut.test('test_locate_PostfixExpression', () {
+// final __test = new ElementLocatorTest();
+// runJUnitTest(__test, __test.test_locate_PostfixExpression);
+// });
+// _ut.test('test_locate_PrefixExpression', () {
+// final __test = new ElementLocatorTest();
+// runJUnitTest(__test, __test.test_locate_PrefixExpression);
+// });
+// _ut.test('test_locate_PrefixedIdentifier', () {
+// final __test = new ElementLocatorTest();
+// runJUnitTest(__test, __test.test_locate_PrefixedIdentifier);
+// });
+// _ut.test('test_locate_StringLiteral_exportUri', () {
+// final __test = new ElementLocatorTest();
+// runJUnitTest(__test, __test.test_locate_StringLiteral_exportUri);
+// });
+// _ut.test('test_locate_StringLiteral_expression', () {
+// final __test = new ElementLocatorTest();
+// runJUnitTest(__test, __test.test_locate_StringLiteral_expression);
+// });
+// _ut.test('test_locate_StringLiteral_importUri', () {
+// final __test = new ElementLocatorTest();
+// runJUnitTest(__test, __test.test_locate_StringLiteral_importUri);
+// });
+// _ut.test('test_locate_StringLiteral_partUri', () {
+// final __test = new ElementLocatorTest();
+// runJUnitTest(__test, __test.test_locate_StringLiteral_partUri);
+// });
+// _ut.test('test_locate_VariableDeclaration', () {
+// final __test = new ElementLocatorTest();
+// runJUnitTest(__test, __test.test_locate_VariableDeclaration);
+// });
+// });
+// }
+// }
+// class EnumMemberBuilderTest extends EngineTestCase {
+// void test_visitEnumDeclaration_multiple() {
+// String firstName = "ONE";
+// String secondName = "TWO";
+// String thirdName = "THREE";
+// EnumDeclaration enumDeclaration = AstFactory.enumDeclaration2("E", [firstName, secondName, thirdName]);
+// ClassElement enumElement = _buildElement(enumDeclaration);
+// List<FieldElement> fields = enumElement.fields;
+// EngineTestCase.assertLength(6, fields);
+// FieldElement constant = fields[3];
+// JUnitTestCase.assertNotNull(constant);
+// JUnitTestCase.assertEquals(firstName, constant.name);
+// constant = fields[4];
+// JUnitTestCase.assertNotNull(constant);
+// JUnitTestCase.assertEquals(secondName, constant.name);
+// constant = fields[5];
+// JUnitTestCase.assertNotNull(constant);
+// JUnitTestCase.assertEquals(thirdName, constant.name);
+// }
+// void test_visitEnumDeclaration_single() {
+// String firstName = "ONE";
+// EnumDeclaration enumDeclaration = AstFactory.enumDeclaration2("E", [firstName]);
+// ClassElement enumElement = _buildElement(enumDeclaration);
+// List<FieldElement> fields = enumElement.fields;
+// EngineTestCase.assertLength(4, fields);
+// FieldElement field = fields[0];
+// JUnitTestCase.assertNotNull(field);
+// JUnitTestCase.assertEquals("index", field.name);
+// JUnitTestCase.assertFalse(field.isStatic);
+// field = fields[1];
+// JUnitTestCase.assertNotNull(field);
+// JUnitTestCase.assertEquals("_name", field.name);
+// JUnitTestCase.assertFalse(field.isStatic);
+// field = fields[2];
+// JUnitTestCase.assertNotNull(field);
+// JUnitTestCase.assertEquals("values", field.name);
+// JUnitTestCase.assertTrue(field.isStatic);
+// FieldElement constant = fields[3];
+// JUnitTestCase.assertNotNull(constant);
+// JUnitTestCase.assertEquals(firstName, constant.name);
+// }
+// ClassElement _buildElement(EnumDeclaration enumDeclaration) {
+// ElementHolder holder = new ElementHolder();
+// ElementBuilder elementBuilder = new ElementBuilder(holder);
+// enumDeclaration.accept(elementBuilder);
+// EnumMemberBuilder memberBuilder = new EnumMemberBuilder(new TestTypeProvider());
+// enumDeclaration.accept(memberBuilder);
+// List<ClassElement> enums = holder.enums;
+// EngineTestCase.assertLength(1, enums);
+// return enums[0];
+// }
+// static dartSuite() {
+// _ut.group('EnumMemberBuilderTest', () {
+// _ut.test('test_visitEnumDeclaration_multiple', () {
+// final __test = new EnumMemberBuilderTest();
+// runJUnitTest(__test, __test.test_visitEnumDeclaration_multiple);
+// });
+// _ut.test('test_visitEnumDeclaration_single', () {
+// final __test = new EnumMemberBuilderTest();
+// runJUnitTest(__test, __test.test_visitEnumDeclaration_single);
+// });
+// });
+// }
+// }
+// class ErrorReporterTest extends EngineTestCase {
+// /**
+// * Create a type with the given name in a compilation unit with the given name.
+// *
+// * @param fileName the name of the compilation unit containing the class
+// * @param typeName the name of the type to be created
+// * @return the type that was created
+// */
+// InterfaceType createType(String fileName, String typeName) {
+// CompilationUnitElementImpl unit = ElementFactory.compilationUnit(fileName);
+// ClassElementImpl element = ElementFactory.classElement2(typeName, []);
+// unit.types = <ClassElement> [element];
+// return element.type;
+// }
+// void test_creation() {
+// GatheringErrorListener listener = new GatheringErrorListener();
+// TestSource source = new TestSource();
+// JUnitTestCase.assertNotNull(new ErrorReporter(listener, source));
+// }
+// void test_reportTypeErrorForNode_differentNames() {
+// DartType firstType = createType("/test1.dart", "A");
+// DartType secondType = createType("/test2.dart", "B");
+// GatheringErrorListener listener = new GatheringErrorListener();
+// ErrorReporter reporter = new ErrorReporter(listener, firstType.element.source);
+// reporter.reportTypeErrorForNode(StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, AstFactory.identifier3("x"), [firstType, secondType]);
+// AnalysisError error = listener.errors[0];
+// JUnitTestCase.assertTrue(error.message.indexOf("(") < 0);
+// }
+// void test_reportTypeErrorForNode_sameName() {
+// String typeName = "A";
+// DartType firstType = createType("/test1.dart", typeName);
+// DartType secondType = createType("/test2.dart", typeName);
+// GatheringErrorListener listener = new GatheringErrorListener();
+// ErrorReporter reporter = new ErrorReporter(listener, firstType.element.source);
+// reporter.reportTypeErrorForNode(StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, AstFactory.identifier3("x"), [firstType, secondType]);
+// AnalysisError error = listener.errors[0];
+// JUnitTestCase.assertTrue(error.message.indexOf("(") >= 0);
+// }
+// static dartSuite() {
+// _ut.group('ErrorReporterTest', () {
+// _ut.test('test_creation', () {
+// final __test = new ErrorReporterTest();
+// runJUnitTest(__test, __test.test_creation);
+// });
+// _ut.test('test_reportTypeErrorForNode_differentNames', () {
+// final __test = new ErrorReporterTest();
+// runJUnitTest(__test, __test.test_reportTypeErrorForNode_differentNames);
+// });
+// _ut.test('test_reportTypeErrorForNode_sameName', () {
+// final __test = new ErrorReporterTest();
+// runJUnitTest(__test, __test.test_reportTypeErrorForNode_sameName);
+// });
+// });
+// }
+// }
+// class ErrorSeverityTest extends EngineTestCase {
+// void test_max_error_error() {
+// JUnitTestCase.assertSame(ErrorSeverity.ERROR, ERROR.max(ErrorSeverity.ERROR));
+// }
+// void test_max_error_none() {
+// JUnitTestCase.assertSame(ErrorSeverity.ERROR, ERROR.max(ErrorSeverity.NONE));
+// }
+// void test_max_error_warning() {
+// JUnitTestCase.assertSame(ErrorSeverity.ERROR, ERROR.max(ErrorSeverity.WARNING));
+// }
+// void test_max_none_error() {
+// JUnitTestCase.assertSame(ErrorSeverity.ERROR, NONE.max(ErrorSeverity.ERROR));
+// }
+// void test_max_none_none() {
+// JUnitTestCase.assertSame(ErrorSeverity.NONE, NONE.max(ErrorSeverity.NONE));
+// }
+// void test_max_none_warning() {
+// JUnitTestCase.assertSame(ErrorSeverity.WARNING, NONE.max(ErrorSeverity.WARNING));
+// }
+// void test_max_warning_error() {
+// JUnitTestCase.assertSame(ErrorSeverity.ERROR, WARNING.max(ErrorSeverity.ERROR));
+// }
+// void test_max_warning_none() {
+// JUnitTestCase.assertSame(ErrorSeverity.WARNING, WARNING.max(ErrorSeverity.NONE));
+// }
+// void test_max_warning_warning() {
+// JUnitTestCase.assertSame(ErrorSeverity.WARNING, WARNING.max(ErrorSeverity.WARNING));
+// }
+// static dartSuite() {
+// _ut.group('ErrorSeverityTest', () {
+// _ut.test('test_max_error_error', () {
+// final __test = new ErrorSeverityTest();
+// runJUnitTest(__test, __test.test_max_error_error);
+// });
+// _ut.test('test_max_error_none', () {
+// final __test = new ErrorSeverityTest();
+// runJUnitTest(__test, __test.test_max_error_none);
+// });
+// _ut.test('test_max_error_warning', () {
+// final __test = new ErrorSeverityTest();
+// runJUnitTest(__test, __test.test_max_error_warning);
+// });
+// _ut.test('test_max_none_error', () {
+// final __test = new ErrorSeverityTest();
+// runJUnitTest(__test, __test.test_max_none_error);
+// });
+// _ut.test('test_max_none_none', () {
+// final __test = new ErrorSeverityTest();
+// runJUnitTest(__test, __test.test_max_none_none);
+// });
+// _ut.test('test_max_none_warning', () {
+// final __test = new ErrorSeverityTest();
+// runJUnitTest(__test, __test.test_max_none_warning);
+// });
+// _ut.test('test_max_warning_error', () {
+// final __test = new ErrorSeverityTest();
+// runJUnitTest(__test, __test.test_max_warning_error);
+// });
+// _ut.test('test_max_warning_none', () {
+// final __test = new ErrorSeverityTest();
+// runJUnitTest(__test, __test.test_max_warning_none);
+// });
+// _ut.test('test_max_warning_warning', () {
+// final __test = new ErrorSeverityTest();
+// runJUnitTest(__test, __test.test_max_warning_warning);
+// });
+// });
+// }
+// }
+// class ExitDetectorTest extends ParserTestCase {
+// void fail_doStatement_continue_with_label() {
+// _assertFalse("{ x: do { continue x; } while(true); }");
+// }
+// void fail_whileStatement_continue_with_label() {
+// _assertFalse("{ x: while (true) { continue x; } }");
+// }
+// void fail_whileStatement_doStatement_scopeRequired() {
+// _assertTrue("{ while (true) { x: do { continue x; } while(true); }");
+// }
+// void test_asExpression() {
+// _assertFalse("a as Object;");
+// }
+// void test_asExpression_throw() {
+// _assertTrue("throw '' as Object;");
+// }
+// void test_assertStatement() {
+// _assertFalse("assert(a);");
+// }
+// void test_assertStatement_throw() {
+// _assertTrue("assert((throw 0));");
+// }
+// void test_assignmentExpression() {
+// _assertFalse("v = 1;");
+// }
+// void test_assignmentExpression_lhs_throw() {
+// _assertTrue("a[throw ''] = 0;");
+// }
+// void test_assignmentExpression_rhs_throw() {
+// _assertTrue("v = throw '';");
+// }
+// void test_binaryExpression_and() {
+// _assertFalse("a && b;");
+// }
+// void test_binaryExpression_and_lhs() {
+// _assertTrue("throw '' && b;");
+// }
+// void test_binaryExpression_and_rhs() {
+// _assertTrue("a && (throw '');");
+// }
+// void test_binaryExpression_and_rhs2() {
+// _assertTrue("false && (throw '');");
+// }
+// void test_binaryExpression_and_rhs3() {
+// _assertFalse("true && (throw '');");
+// }
+// void test_binaryExpression_or() {
+// _assertFalse("a || b;");
+// }
+// void test_binaryExpression_or_lhs() {
+// _assertTrue("throw '' || b;");
+// }
+// void test_binaryExpression_or_rhs() {
+// _assertTrue("a || (throw '');");
+// }
+// void test_binaryExpression_or_rhs2() {
+// _assertTrue("true || (throw '');");
+// }
+// void test_binaryExpression_or_rhs3() {
+// _assertFalse("false || (throw '');");
+// }
+// void test_block_empty() {
+// _assertFalse("{}");
+// }
+// void test_block_noReturn() {
+// _assertFalse("{ int i = 0; }");
+// }
+// void test_block_return() {
+// _assertTrue("{ return 0; }");
+// }
+// void test_block_returnNotLast() {
+// _assertTrue("{ return 0; throw 'a'; }");
+// }
+// void test_block_throwNotLast() {
+// _assertTrue("{ throw 0; x = null; }");
+// }
+// void test_cascadeExpression_argument() {
+// _assertTrue("a..b(throw '');");
+// }
+// void test_cascadeExpression_index() {
+// _assertTrue("a..[throw ''];");
+// }
+// void test_cascadeExpression_target() {
+// _assertTrue("throw ''..b();");
+// }
+// void test_conditional_ifElse_bothThrows() {
+// _assertTrue("c ? throw '' : throw '';");
+// }
+// void test_conditional_ifElse_elseThrows() {
+// _assertFalse("c ? i : throw '';");
+// }
+// void test_conditional_ifElse_noThrow() {
+// _assertFalse("c ? i : j;");
+// }
+// void test_conditional_ifElse_thenThrow() {
+// _assertFalse("c ? throw '' : j;");
+// }
+// void test_creation() {
+// JUnitTestCase.assertNotNull(new ExitDetector());
+// }
+// void test_doStatement_throwCondition() {
+// _assertTrue("{ do {} while (throw ''); }");
+// }
+// void test_doStatement_true_break() {
+// _assertFalse("{ do { break; } while (true); }");
+// }
+// void test_doStatement_true_continue() {
+// _assertTrue("{ do { continue; } while (true); }");
+// }
+// void test_doStatement_true_if_return() {
+// _assertTrue("{ do { if (true) {return null;} } while (true); }");
+// }
+// void test_doStatement_true_noBreak() {
+// _assertTrue("{ do {} while (true); }");
+// }
+// void test_doStatement_true_return() {
+// _assertTrue("{ do { return null; } while (true); }");
+// }
+// void test_emptyStatement() {
+// _assertFalse(";");
+// }
+// void test_forEachStatement() {
+// _assertFalse("for (element in list) {}");
+// }
+// void test_forEachStatement_throw() {
+// _assertTrue("for (element in throw '') {}");
+// }
+// void test_forStatement_condition() {
+// _assertTrue("for (; throw 0;) {}");
+// }
+// void test_forStatement_implicitTrue() {
+// _assertTrue("for (;;) {}");
+// }
+// void test_forStatement_implicitTrue_break() {
+// _assertFalse("for (;;) { break; }");
+// }
+// void test_forStatement_initialization() {
+// _assertTrue("for (i = throw 0;;) {}");
+// }
+// void test_forStatement_true() {
+// _assertTrue("for (; true; ) {}");
+// }
+// void test_forStatement_true_break() {
+// _assertFalse("{ for (; true; ) { break; } }");
+// }
+// void test_forStatement_true_continue() {
+// _assertTrue("{ for (; true; ) { continue; } }");
+// }
+// void test_forStatement_true_if_return() {
+// _assertTrue("{ for (; true; ) { if (true) {return null;} } }");
+// }
+// void test_forStatement_true_noBreak() {
+// _assertTrue("{ for (; true; ) {} }");
+// }
+// void test_forStatement_updaters() {
+// _assertTrue("for (;; i++, throw 0) {}");
+// }
+// void test_forStatement_variableDeclaration() {
+// _assertTrue("for (int i = throw 0;;) {}");
+// }
+// void test_functionExpression() {
+// _assertFalse("(){};");
+// }
+// void test_functionExpression_bodyThrows() {
+// _assertFalse("(int i) => throw '';");
+// }
+// void test_functionExpressionInvocation() {
+// _assertFalse("f(g);");
+// }
+// void test_functionExpressionInvocation_argumentThrows() {
+// _assertTrue("f(throw '');");
+// }
+// void test_functionExpressionInvocation_targetThrows() {
+// _assertTrue("throw ''(g);");
+// }
+// void test_identifier_prefixedIdentifier() {
+// _assertFalse("a.b;");
+// }
+// void test_identifier_simpleIdentifier() {
+// _assertFalse("a;");
+// }
+// void test_if_false_else_return() {
+// _assertTrue("if (false) {} else { return 0; }");
+// }
+// void test_if_false_noReturn() {
+// _assertFalse("if (false) {}");
+// }
+// void test_if_false_return() {
+// _assertFalse("if (false) { return 0; }");
+// }
+// void test_if_noReturn() {
+// _assertFalse("if (c) i++;");
+// }
+// void test_if_return() {
+// _assertFalse("if (c) return 0;");
+// }
+// void test_if_true_noReturn() {
+// _assertFalse("if (true) {}");
+// }
+// void test_if_true_return() {
+// _assertTrue("if (true) { return 0; }");
+// }
+// void test_ifElse_bothReturn() {
+// _assertTrue("if (c) return 0; else return 1;");
+// }
+// void test_ifElse_elseReturn() {
+// _assertFalse("if (c) i++; else return 1;");
+// }
+// void test_ifElse_noReturn() {
+// _assertFalse("if (c) i++; else j++;");
+// }
+// void test_ifElse_thenReturn() {
+// _assertFalse("if (c) return 0; else j++;");
+// }
+// void test_indexExpression() {
+// _assertFalse("a[b];");
+// }
+// void test_indexExpression_index() {
+// _assertTrue("a[throw ''];");
+// }
+// void test_indexExpression_target() {
+// _assertTrue("throw ''[b];");
+// }
+// void test_instanceCreationExpression() {
+// _assertFalse("new A(b);");
+// }
+// void test_instanceCreationExpression_argumentThrows() {
+// _assertTrue("new A(throw '');");
+// }
+// void test_isExpression() {
+// _assertFalse("A is B;");
+// }
+// void test_isExpression_throws() {
+// _assertTrue("throw '' is B;");
+// }
+// void test_labeledStatement() {
+// _assertFalse("label: a;");
+// }
+// void test_labeledStatement_throws() {
+// _assertTrue("label: throw '';");
+// }
+// void test_literal_boolean() {
+// _assertFalse("true;");
+// }
+// void test_literal_double() {
+// _assertFalse("1.1;");
+// }
+// void test_literal_integer() {
+// _assertFalse("1;");
+// }
+// void test_literal_null() {
+// _assertFalse("null;");
+// }
+// void test_literal_String() {
+// _assertFalse("'str';");
+// }
+// void test_methodInvocation() {
+// _assertFalse("a.b(c);");
+// }
+// void test_methodInvocation_argument() {
+// _assertTrue("a.b(throw '');");
+// }
+// void test_methodInvocation_target() {
+// _assertTrue("throw ''.b(c);");
+// }
+// void test_parenthesizedExpression() {
+// _assertFalse("(a);");
+// }
+// void test_parenthesizedExpression_throw() {
+// _assertTrue("(throw '');");
+// }
+// void test_propertyAccess() {
+// _assertFalse("new Object().a;");
+// }
+// void test_propertyAccess_throws() {
+// _assertTrue("(throw '').a;");
+// }
+// void test_rethrow() {
+// _assertTrue("rethrow;");
+// }
+// void test_return() {
+// _assertTrue("return 0;");
+// }
+// void test_superExpression() {
+// _assertFalse("super.a;");
+// }
+// void test_switch_allReturn() {
+// _assertTrue("switch (i) { case 0: return 0; default: return 1; }");
+// }
+// void test_switch_defaultWithNoStatements() {
+// _assertFalse("switch (i) { case 0: return 0; default: }");
+// }
+// void test_switch_fallThroughToNotReturn() {
+// _assertFalse("switch (i) { case 0: case 1: break; default: return 1; }");
+// }
+// void test_switch_fallThroughToReturn() {
+// _assertTrue("switch (i) { case 0: case 1: return 0; default: return 1; }");
+// }
+// void test_switch_noDefault() {
+// _assertFalse("switch (i) { case 0: return 0; }");
+// }
+// void test_switch_nonReturn() {
+// _assertFalse("switch (i) { case 0: i++; default: return 1; }");
+// }
+// void test_thisExpression() {
+// _assertFalse("this.a;");
+// }
+// void test_throwExpression() {
+// _assertTrue("throw new Object();");
+// }
+// void test_tryStatement_noReturn() {
+// _assertFalse("try {} catch (e, s) {} finally {}");
+// }
+// void test_tryStatement_return_catch() {
+// _assertFalse("try {} catch (e, s) { return 1; } finally {}");
+// }
+// void test_tryStatement_return_finally() {
+// _assertTrue("try {} catch (e, s) {} finally { return 1; }");
+// }
+// void test_tryStatement_return_try() {
+// _assertTrue("try { return 1; } catch (e, s) {} finally {}");
+// }
+// void test_variableDeclarationStatement_noInitializer() {
+// _assertFalse("int i;");
+// }
+// void test_variableDeclarationStatement_noThrow() {
+// _assertFalse("int i = 0;");
+// }
+// void test_variableDeclarationStatement_throw() {
+// _assertTrue("int i = throw new Object();");
+// }
+// void test_whileStatement_false_nonReturn() {
+// _assertFalse("{ while (false) {} }");
+// }
+// void test_whileStatement_throwCondition() {
+// _assertTrue("{ while (throw '') {} }");
+// }
+// void test_whileStatement_true_break() {
+// _assertFalse("{ while (true) { break; } }");
+// }
+// void test_whileStatement_true_continue() {
+// _assertTrue("{ while (true) { continue; } }");
+// }
+// void test_whileStatement_true_if_return() {
+// _assertTrue("{ while (true) { if (true) {return null;} } }");
+// }
+// void test_whileStatement_true_noBreak() {
+// _assertTrue("{ while (true) {} }");
+// }
+// void test_whileStatement_true_return() {
+// _assertTrue("{ while (true) { return null; } }");
+// }
+// void test_whileStatement_true_throw() {
+// _assertTrue("{ while (true) { throw ''; } }");
+// }
+// void _assertFalse(String source) {
+// _assertHasReturn(false, source);
+// }
+// void _assertHasReturn(bool expectedResult, String source) {
+// ExitDetector detector = new ExitDetector();
+// Statement statement = ParserTestCase.parseStatement(source, []);
+// JUnitTestCase.assertSame(expectedResult, statement.accept(detector));
+// }
+// void _assertTrue(String source) {
+// _assertHasReturn(true, source);
+// }
+// static dartSuite() {
+// _ut.group('ExitDetectorTest', () {
+// _ut.test('test_asExpression', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_asExpression);
+// });
+// _ut.test('test_asExpression_throw', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_asExpression_throw);
+// });
+// _ut.test('test_assertStatement', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_assertStatement);
+// });
+// _ut.test('test_assertStatement_throw', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_assertStatement_throw);
+// });
+// _ut.test('test_assignmentExpression', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_assignmentExpression);
+// });
+// _ut.test('test_assignmentExpression_lhs_throw', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_assignmentExpression_lhs_throw);
+// });
+// _ut.test('test_assignmentExpression_rhs_throw', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_assignmentExpression_rhs_throw);
+// });
+// _ut.test('test_binaryExpression_and', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_binaryExpression_and);
+// });
+// _ut.test('test_binaryExpression_and_lhs', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_binaryExpression_and_lhs);
+// });
+// _ut.test('test_binaryExpression_and_rhs', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_binaryExpression_and_rhs);
+// });
+// _ut.test('test_binaryExpression_and_rhs2', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_binaryExpression_and_rhs2);
+// });
+// _ut.test('test_binaryExpression_and_rhs3', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_binaryExpression_and_rhs3);
+// });
+// _ut.test('test_binaryExpression_or', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_binaryExpression_or);
+// });
+// _ut.test('test_binaryExpression_or_lhs', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_binaryExpression_or_lhs);
+// });
+// _ut.test('test_binaryExpression_or_rhs', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_binaryExpression_or_rhs);
+// });
+// _ut.test('test_binaryExpression_or_rhs2', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_binaryExpression_or_rhs2);
+// });
+// _ut.test('test_binaryExpression_or_rhs3', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_binaryExpression_or_rhs3);
+// });
+// _ut.test('test_block_empty', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_block_empty);
+// });
+// _ut.test('test_block_noReturn', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_block_noReturn);
+// });
+// _ut.test('test_block_return', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_block_return);
+// });
+// _ut.test('test_block_returnNotLast', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_block_returnNotLast);
+// });
+// _ut.test('test_block_throwNotLast', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_block_throwNotLast);
+// });
+// _ut.test('test_cascadeExpression_argument', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_cascadeExpression_argument);
+// });
+// _ut.test('test_cascadeExpression_index', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_cascadeExpression_index);
+// });
+// _ut.test('test_cascadeExpression_target', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_cascadeExpression_target);
+// });
+// _ut.test('test_conditional_ifElse_bothThrows', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_conditional_ifElse_bothThrows);
+// });
+// _ut.test('test_conditional_ifElse_elseThrows', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_conditional_ifElse_elseThrows);
+// });
+// _ut.test('test_conditional_ifElse_noThrow', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_conditional_ifElse_noThrow);
+// });
+// _ut.test('test_conditional_ifElse_thenThrow', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_conditional_ifElse_thenThrow);
+// });
+// _ut.test('test_creation', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_creation);
+// });
+// _ut.test('test_doStatement_throwCondition', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_doStatement_throwCondition);
+// });
+// _ut.test('test_doStatement_true_break', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_doStatement_true_break);
+// });
+// _ut.test('test_doStatement_true_continue', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_doStatement_true_continue);
+// });
+// _ut.test('test_doStatement_true_if_return', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_doStatement_true_if_return);
+// });
+// _ut.test('test_doStatement_true_noBreak', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_doStatement_true_noBreak);
+// });
+// _ut.test('test_doStatement_true_return', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_doStatement_true_return);
+// });
+// _ut.test('test_emptyStatement', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_emptyStatement);
+// });
+// _ut.test('test_forEachStatement', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_forEachStatement);
+// });
+// _ut.test('test_forEachStatement_throw', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_forEachStatement_throw);
+// });
+// _ut.test('test_forStatement_condition', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_forStatement_condition);
+// });
+// _ut.test('test_forStatement_implicitTrue', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_forStatement_implicitTrue);
+// });
+// _ut.test('test_forStatement_implicitTrue_break', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_forStatement_implicitTrue_break);
+// });
+// _ut.test('test_forStatement_initialization', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_forStatement_initialization);
+// });
+// _ut.test('test_forStatement_true', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_forStatement_true);
+// });
+// _ut.test('test_forStatement_true_break', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_forStatement_true_break);
+// });
+// _ut.test('test_forStatement_true_continue', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_forStatement_true_continue);
+// });
+// _ut.test('test_forStatement_true_if_return', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_forStatement_true_if_return);
+// });
+// _ut.test('test_forStatement_true_noBreak', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_forStatement_true_noBreak);
+// });
+// _ut.test('test_forStatement_updaters', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_forStatement_updaters);
+// });
+// _ut.test('test_forStatement_variableDeclaration', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_forStatement_variableDeclaration);
+// });
+// _ut.test('test_functionExpression', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_functionExpression);
+// });
+// _ut.test('test_functionExpressionInvocation', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_functionExpressionInvocation);
+// });
+// _ut.test('test_functionExpressionInvocation_argumentThrows', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_functionExpressionInvocation_argumentThrows);
+// });
+// _ut.test('test_functionExpressionInvocation_targetThrows', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_functionExpressionInvocation_targetThrows);
+// });
+// _ut.test('test_functionExpression_bodyThrows', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_functionExpression_bodyThrows);
+// });
+// _ut.test('test_identifier_prefixedIdentifier', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_identifier_prefixedIdentifier);
+// });
+// _ut.test('test_identifier_simpleIdentifier', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_identifier_simpleIdentifier);
+// });
+// _ut.test('test_ifElse_bothReturn', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_ifElse_bothReturn);
+// });
+// _ut.test('test_ifElse_elseReturn', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_ifElse_elseReturn);
+// });
+// _ut.test('test_ifElse_noReturn', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_ifElse_noReturn);
+// });
+// _ut.test('test_ifElse_thenReturn', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_ifElse_thenReturn);
+// });
+// _ut.test('test_if_false_else_return', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_if_false_else_return);
+// });
+// _ut.test('test_if_false_noReturn', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_if_false_noReturn);
+// });
+// _ut.test('test_if_false_return', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_if_false_return);
+// });
+// _ut.test('test_if_noReturn', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_if_noReturn);
+// });
+// _ut.test('test_if_return', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_if_return);
+// });
+// _ut.test('test_if_true_noReturn', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_if_true_noReturn);
+// });
+// _ut.test('test_if_true_return', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_if_true_return);
+// });
+// _ut.test('test_indexExpression', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_indexExpression);
+// });
+// _ut.test('test_indexExpression_index', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_indexExpression_index);
+// });
+// _ut.test('test_indexExpression_target', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_indexExpression_target);
+// });
+// _ut.test('test_instanceCreationExpression', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_instanceCreationExpression);
+// });
+// _ut.test('test_instanceCreationExpression_argumentThrows', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_instanceCreationExpression_argumentThrows);
+// });
+// _ut.test('test_isExpression', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_isExpression);
+// });
+// _ut.test('test_isExpression_throws', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_isExpression_throws);
+// });
+// _ut.test('test_labeledStatement', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_labeledStatement);
+// });
+// _ut.test('test_labeledStatement_throws', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_labeledStatement_throws);
+// });
+// _ut.test('test_literal_String', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_literal_String);
+// });
+// _ut.test('test_literal_boolean', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_literal_boolean);
+// });
+// _ut.test('test_literal_double', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_literal_double);
+// });
+// _ut.test('test_literal_integer', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_literal_integer);
+// });
+// _ut.test('test_literal_null', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_literal_null);
+// });
+// _ut.test('test_methodInvocation', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_methodInvocation);
+// });
+// _ut.test('test_methodInvocation_argument', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_methodInvocation_argument);
+// });
+// _ut.test('test_methodInvocation_target', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_methodInvocation_target);
+// });
+// _ut.test('test_parenthesizedExpression', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_parenthesizedExpression);
+// });
+// _ut.test('test_parenthesizedExpression_throw', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_parenthesizedExpression_throw);
+// });
+// _ut.test('test_propertyAccess', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_propertyAccess);
+// });
+// _ut.test('test_propertyAccess_throws', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_propertyAccess_throws);
+// });
+// _ut.test('test_rethrow', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_rethrow);
+// });
+// _ut.test('test_return', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_return);
+// });
+// _ut.test('test_superExpression', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_superExpression);
+// });
+// _ut.test('test_switch_allReturn', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_switch_allReturn);
+// });
+// _ut.test('test_switch_defaultWithNoStatements', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_switch_defaultWithNoStatements);
+// });
+// _ut.test('test_switch_fallThroughToNotReturn', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_switch_fallThroughToNotReturn);
+// });
+// _ut.test('test_switch_fallThroughToReturn', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_switch_fallThroughToReturn);
+// });
+// _ut.test('test_switch_noDefault', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_switch_noDefault);
+// });
+// _ut.test('test_switch_nonReturn', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_switch_nonReturn);
+// });
+// _ut.test('test_thisExpression', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_thisExpression);
+// });
+// _ut.test('test_throwExpression', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_throwExpression);
+// });
+// _ut.test('test_tryStatement_noReturn', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_tryStatement_noReturn);
+// });
+// _ut.test('test_tryStatement_return_catch', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_tryStatement_return_catch);
+// });
+// _ut.test('test_tryStatement_return_finally', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_tryStatement_return_finally);
+// });
+// _ut.test('test_tryStatement_return_try', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_tryStatement_return_try);
+// });
+// _ut.test('test_variableDeclarationStatement_noInitializer', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_variableDeclarationStatement_noInitializer);
+// });
+// _ut.test('test_variableDeclarationStatement_noThrow', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_variableDeclarationStatement_noThrow);
+// });
+// _ut.test('test_variableDeclarationStatement_throw', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_variableDeclarationStatement_throw);
+// });
+// _ut.test('test_whileStatement_false_nonReturn', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_whileStatement_false_nonReturn);
+// });
+// _ut.test('test_whileStatement_throwCondition', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_whileStatement_throwCondition);
+// });
+// _ut.test('test_whileStatement_true_break', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_whileStatement_true_break);
+// });
+// _ut.test('test_whileStatement_true_continue', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_whileStatement_true_continue);
+// });
+// _ut.test('test_whileStatement_true_if_return', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_whileStatement_true_if_return);
+// });
+// _ut.test('test_whileStatement_true_noBreak', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_whileStatement_true_noBreak);
+// });
+// _ut.test('test_whileStatement_true_return', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_whileStatement_true_return);
+// });
+// _ut.test('test_whileStatement_true_throw', () {
+// final __test = new ExitDetectorTest();
+// runJUnitTest(__test, __test.test_whileStatement_true_throw);
+// });
+// });
+// }
+// }
+// /**
+// * An explicit package: resolver. This UriResolver shells out to pub, calling it's list-package-dirs
+// * command. It parses the resulting json map, which maps symbolic package references to their
+// * concrete locations on disk.
+// *
+// * <pre>
+// *{
+// *"packages": {
+// *"foo": "path/to/foo",
+// *"bar": "path/to/bar"
+// *},
+// *"input_files": [
+// *...
+// *]
+// *},
+// *</pre>
+// */
+// class ExplicitPackageUriResolver extends UriResolver {
+// /**
+// * The name of the `package` scheme.
+// */
+// static String PACKAGE_SCHEME = "package";
+// static String PUB_LIST_COMMAND = "list-package-dirs";
+// /**
+// * Return `true` if the given URI is a `package` URI.
+// *
+// * @param uri the URI being tested
+// * @return `true` if the given URI is a `package` URI
+// */
+// static bool isPackageUri(Uri uri) => PACKAGE_SCHEME == uri.scheme;
+// final JavaFile rootDir;
+// final DirectoryBasedDartSdk _sdk;
+// Map<String, List<JavaFile>> packageMap;
+// /**
+// * Create a new ExplicitPackageUriResolver.
+// *
+// * @param sdk the sdk; this is used to locate the pub command to run
+// * @param rootDir the directory for which we'll be resolving package information
+// */
+// ExplicitPackageUriResolver(this._sdk, this.rootDir) {
+// if (rootDir == null) {
+// throw new IllegalArgumentException("the root dir must not be null");
+// }
+// }
+// List<String> get command => <String> [_sdk.pubExecutable.getAbsolutePath(), PUB_LIST_COMMAND];
+// @override
+// Source resolveAbsolute(Uri uri) {
+// if (!isPackageUri(uri)) {
+// return null;
+// }
+// String path = uri.path;
+// if (path == null) {
+// path = uri.path;
+// if (path == null) {
+// return null;
+// }
+// }
+// String pkgName;
+// String relPath;
+// int index = path.indexOf('/');
+// if (index == -1) {
+// // No slash
+// pkgName = path;
+// relPath = "";
+// } else if (index == 0) {
+// // Leading slash is invalid
+// return null;
+// } else {
+// // <pkgName>/<relPath>
+// pkgName = path.substring(0, index);
+// relPath = path.substring(index + 1);
+// }
+// if (packageMap == null) {
+// packageMap = calculatePackageMap();
+// }
+// List<JavaFile> dirs = packageMap[pkgName];
+// if (dirs != null) {
+// for (JavaFile packageDir in dirs) {
+// if (packageDir.exists()) {
+// JavaFile resolvedFile = new JavaFile.relative(packageDir, relPath.replaceAll('/', new String.fromCharCode(JavaFile.separatorChar)));
+// if (resolvedFile.exists()) {
+// return new FileBasedSource.con2(uri, resolvedFile);
+// }
+// }
+// }
+// }
+// //
+// // Return a FileBasedSource that doesn't exist. This helps provide more meaningful error
+// // messages to users (a missing file error, as opposed to an invalid uri error).
+// //
+// String fullPackagePath = "${pkgName}/${relPath}";
+// return new FileBasedSource.con2(uri, new JavaFile.relative(rootDir, fullPackagePath.replaceAll('/', new String.fromCharCode(JavaFile.separatorChar))));
+// }
+// String resolvePathToPackage(String path) {
+// if (packageMap == null) {
+// return null;
+// }
+// for (String key in packageMap.keys.toSet()) {
+// List<JavaFile> files = packageMap[key];
+// for (JavaFile file in files) {
+// try {
+// if (file.getCanonicalPath().endsWith(path)) {
+// return key;
+// }
+// } on JavaIOException catch (e) {
+// }
+// }
+// }
+// return null;
+// }
+// @override
+// Uri restoreAbsolute(Source source) {
+// if (packageMap == null) {
+// return null;
+// }
+// if (source is FileBasedSource) {
+// String sourcePath = (source as FileBasedSource).file.getPath();
+// for (MapEntry<String, List<JavaFile>> entry in getMapEntrySet(packageMap)) {
+// for (JavaFile pkgFolder in entry.getValue()) {
+// String pkgCanonicalPath = pkgFolder.getAbsolutePath();
+// if (sourcePath.startsWith(pkgCanonicalPath)) {
+// String packageName = entry.getKey();
+// String relPath = sourcePath.substring(pkgCanonicalPath.length);
+// return parseUriWithException("${PACKAGE_SCHEME}:${packageName}${relPath}");
+// }
+// }
+// }
+// }
+// return null;
+// }
+// Map<String, List<JavaFile>> calculatePackageMap() {
+// ProcessBuilder builder = new ProcessBuilder(command);
+// builder.directory(rootDir);
+// ProcessRunner runner = new ProcessRunner(builder);
+// try {
+// if (runProcess(runner) == 0) {
+// return parsePackageMap(runner.getStdOut());
+// } else {
+// AnalysisEngine.instance.logger.logInformation("pub ${PUB_LIST_COMMAND} failed: exit code ${runner.getExitCode()}");
+// }
+// } on JavaIOException catch (ioe) {
+// AnalysisEngine.instance.logger.logInformation2("error running pub ${PUB_LIST_COMMAND}", ioe);
+// } on JSONException catch (e) {
+// AnalysisEngine.instance.logger.logError2("malformed json from pub ${PUB_LIST_COMMAND}", e);
+// }
+// return new HashMap<String, List<JavaFile>>();
+// }
+// Map<String, List<JavaFile>> parsePackageMap(String jsonText) {
+// Map<String, List<JavaFile>> map = new HashMap<String, List<JavaFile>>();
+// JSONObject obj = new JSONObject(jsonText);
+// JSONObject packages = obj.optJSONObject("packages");
+// if (packages != null) {
+// JavaIterator keys = packages.keys();
+// while (keys.hasNext) {
+// Object key = keys.next();
+// if (key is String) {
+// String strKey = key as String;
+// List<JavaFile> files = new List<JavaFile>();
+// map[strKey] = files;
+// Object val = packages.get(strKey);
+// if (val is String) {
+// String path = val as String;
+// files.add(new JavaFile(path));
+// } else if (val is JSONArray) {
+// JSONArray arr = val as JSONArray;
+// for (int i = 0; i < arr.length(); i++) {
+// files.add(new JavaFile(arr.getString(i)));
+// }
+// }
+// }
+// }
+// }
+// return map;
+// }
+// /**
+// * Run the external process and return the exit value once the external process has completed.
+// *
+// * @param runner the external process runner
+// * @return the external process exit code
+// */
+// int runProcess(ProcessRunner runner) => runner.runSync(0);
+// }
+// class ExplicitPackageUriResolverTest extends JUnitTestCase {
+// void test_creation() {
+// JavaFile directory = FileUtilities2.createFile("/does/not/exist/foo_project");
+// JUnitTestCase.assertNotNull(new ExplicitPackageUriResolver(null, directory));
+// }
+// void test_resolve_invalid() {
+// JavaFile projectDir = new JavaFile("foo_project");
+// UriResolver resolver = new ExplicitPackageUriResolverTest_MockExplicitPackageUriResolver.con1(projectDir);
+// // Invalid: URI
+// try {
+// parseUriWithException("package:");
+// JUnitTestCase.fail("Expected exception");
+// } on URISyntaxException catch (e) {
+// }
+// // Invalid: just slash
+// Source result = resolver.resolveAbsolute(parseUriWithException("package:/"));
+// JUnitTestCase.assertNull(result);
+// // Invalid: leading slash... or should we gracefully degrade and ignore the leading slash?
+// result = resolver.resolveAbsolute(parseUriWithException("package:/foo"));
+// JUnitTestCase.assertNull(result);
+// }
+// void test_resolve_nonPackage() {
+// JavaFile directory = FileUtilities2.createFile("/does/not/exist/foo_project");
+// UriResolver resolver = new ExplicitPackageUriResolverTest_MockExplicitPackageUriResolver.con1(directory);
+// Source result = resolver.resolveAbsolute(parseUriWithException("dart:core"));
+// JUnitTestCase.assertNull(result);
+// }
+// void test_resolve_resolvePathToPackage() {
+// JavaFile directory = FileUtilities2.createFile("/src/foo/bar/baz/lib");
+// String packages = "{\"packages\":{\"unittest\": [\"/dart/unittest/lib\"],\"foo.bar.baz\": [\"/src/foo/bar/baz/lib\",\"/gen/foo/bar/baz\"]}}";
+// ExplicitPackageUriResolver resolver = new ExplicitPackageUriResolverTest_MockExplicitPackageUriResolver.con2(directory, packages);
+// String resolvedPath = resolver.resolvePathToPackage("${JavaFile.separator}baz${JavaFile.separator}lib");
+// JUnitTestCase.assertNotNull(resolvedPath);
+// JUnitTestCase.assertEquals("foo.bar.baz", resolvedPath);
+// resolvedPath = resolver.resolvePathToPackage("${JavaFile.separator}dart${JavaFile.separator}mypackage");
+// JUnitTestCase.assertNull(resolvedPath);
+// }
+// @override
+// void tearDown() {
+// FileUtilities2.deleteTempDir();
+// }
+// static dartSuite() {
+// _ut.group('ExplicitPackageUriResolverTest', () {
+// _ut.test('test_creation', () {
+// final __test = new ExplicitPackageUriResolverTest();
+// runJUnitTest(__test, __test.test_creation);
+// });
+// _ut.test('test_resolve_invalid', () {
+// final __test = new ExplicitPackageUriResolverTest();
+// runJUnitTest(__test, __test.test_resolve_invalid);
+// });
+// _ut.test('test_resolve_nonPackage', () {
+// final __test = new ExplicitPackageUriResolverTest();
+// runJUnitTest(__test, __test.test_resolve_nonPackage);
+// });
+// _ut.test('test_resolve_resolvePathToPackage', () {
+// final __test = new ExplicitPackageUriResolverTest();
+// runJUnitTest(__test, __test.test_resolve_resolvePathToPackage);
+// });
+// });
+// }
+// }
+// class ExplicitPackageUriResolverTest_MockExplicitPackageUriResolver extends ExplicitPackageUriResolver {
+// String _jsonText = "{\"foo\":\"bar\"}";
+// ExplicitPackageUriResolverTest_MockExplicitPackageUriResolver.con1(JavaFile rootDir) : super(null, rootDir);
+// ExplicitPackageUriResolverTest_MockExplicitPackageUriResolver.con2(JavaFile rootDir, String jsonPackageList) : super(null, rootDir) {
+// if (!jsonPackageList.isEmpty) {
+// _jsonText = jsonPackageList;
+// packageMap = calculatePackageMap();
+// }
+// }
+// @override
+// Map<String, List<JavaFile>> calculatePackageMap() {
+// try {
+// return parsePackageMap(_jsonText);
+// } on JSONException catch (e) {
+// return new HashMap<String, List<JavaFile>>();
+// }
+// }
+// }
+// class ExpressionVisitor_AngularTest_verify extends ExpressionVisitor {
+// ResolutionVerifier verifier;
+// ExpressionVisitor_AngularTest_verify(this.verifier) : super();
+// @override
+// void visitExpression(Expression expression) {
+// expression.accept(verifier);
+// }
+// }
+// class FileBasedSourceTest extends JUnitTestCase {
+// void test_equals_false_differentFiles() {
+// JavaFile file1 = FileUtilities2.createFile("/does/not/exist1.dart");
+// JavaFile file2 = FileUtilities2.createFile("/does/not/exist2.dart");
+// FileBasedSource source1 = new FileBasedSource.con1(file1);
+// FileBasedSource source2 = new FileBasedSource.con1(file2);
+// JUnitTestCase.assertFalse(source1 == source2);
+// }
+// void test_equals_false_null() {
+// JavaFile file = FileUtilities2.createFile("/does/not/exist1.dart");
+// FileBasedSource source1 = new FileBasedSource.con1(file);
+// JUnitTestCase.assertFalse(source1 == null);
+// }
+// void test_equals_true() {
+// JavaFile file1 = FileUtilities2.createFile("/does/not/exist.dart");
+// JavaFile file2 = FileUtilities2.createFile("/does/not/exist.dart");
+// FileBasedSource source1 = new FileBasedSource.con1(file1);
+// FileBasedSource source2 = new FileBasedSource.con1(file2);
+// JUnitTestCase.assertTrue(source1 == source2);
+// }
+// void test_getEncoding() {
+// SourceFactory factory = new SourceFactory([new FileUriResolver()]);
+// String fullPath = "/does/not/exist.dart";
+// JavaFile file = FileUtilities2.createFile(fullPath);
+// FileBasedSource source = new FileBasedSource.con1(file);
+// JUnitTestCase.assertEquals(source, factory.fromEncoding(source.encoding));
+// }
+// void test_getFullName() {
+// String fullPath = "/does/not/exist.dart";
+// JavaFile file = FileUtilities2.createFile(fullPath);
+// FileBasedSource source = new FileBasedSource.con1(file);
+// JUnitTestCase.assertEquals(file.getAbsolutePath(), source.fullName);
+// }
+// void test_getShortName() {
+// JavaFile file = FileUtilities2.createFile("/does/not/exist.dart");
+// FileBasedSource source = new FileBasedSource.con1(file);
+// JUnitTestCase.assertEquals("exist.dart", source.shortName);
+// }
+// void test_hashCode() {
+// JavaFile file1 = FileUtilities2.createFile("/does/not/exist.dart");
+// JavaFile file2 = FileUtilities2.createFile("/does/not/exist.dart");
+// FileBasedSource source1 = new FileBasedSource.con1(file1);
+// FileBasedSource source2 = new FileBasedSource.con1(file2);
+// JUnitTestCase.assertEquals(source1.hashCode, source2.hashCode);
+// }
+// void test_isInSystemLibrary_contagious() {
+// JavaFile sdkDirectory = DirectoryBasedDartSdk.defaultSdkDirectory;
+// JUnitTestCase.assertNotNull(sdkDirectory);
+// DartSdk sdk = new DirectoryBasedDartSdk(sdkDirectory);
+// UriResolver resolver = new DartUriResolver(sdk);
+// SourceFactory factory = new SourceFactory([resolver]);
+// // resolve dart:core
+// Source result = resolver.resolveAbsolute(parseUriWithException("dart:core"));
+// JUnitTestCase.assertNotNull(result);
+// JUnitTestCase.assertTrue(result.isInSystemLibrary);
+// // system libraries reference only other system libraries
+// Source partSource = factory.resolveUri(result, "num.dart");
+// JUnitTestCase.assertNotNull(partSource);
+// JUnitTestCase.assertTrue(partSource.isInSystemLibrary);
+// }
+// void test_isInSystemLibrary_false() {
+// JavaFile file = FileUtilities2.createFile("/does/not/exist.dart");
+// FileBasedSource source = new FileBasedSource.con1(file);
+// JUnitTestCase.assertNotNull(source);
+// JUnitTestCase.assertEquals(file.getAbsolutePath(), source.fullName);
+// JUnitTestCase.assertFalse(source.isInSystemLibrary);
+// }
+// void test_issue14500() {
+// // see https://code.google.com/p/dart/issues/detail?id=14500
+// FileBasedSource source = new FileBasedSource.con1(FileUtilities2.createFile("/some/packages/foo:bar.dart"));
+// JUnitTestCase.assertNotNull(source);
+// JUnitTestCase.assertFalse(source.exists());
+// }
+// void test_resolveRelative_dart_fileName() {
+// JavaFile file = FileUtilities2.createFile("/a/b/test.dart");
+// FileBasedSource source = new FileBasedSource.con2(parseUriWithException("dart:test"), file);
+// JUnitTestCase.assertNotNull(source);
+// Uri relative = source.resolveRelativeUri(parseUriWithException("lib.dart"));
+// JUnitTestCase.assertNotNull(relative);
+// JUnitTestCase.assertEquals("dart:test/lib.dart", relative.toString());
+// }
+// void test_resolveRelative_dart_filePath() {
+// JavaFile file = FileUtilities2.createFile("/a/b/test.dart");
+// FileBasedSource source = new FileBasedSource.con2(parseUriWithException("dart:test"), file);
+// JUnitTestCase.assertNotNull(source);
+// Uri relative = source.resolveRelativeUri(parseUriWithException("c/lib.dart"));
+// JUnitTestCase.assertNotNull(relative);
+// JUnitTestCase.assertEquals("dart:test/c/lib.dart", relative.toString());
+// }
+// void test_resolveRelative_dart_filePathWithParent() {
+// JavaFile file = FileUtilities2.createFile("/a/b/test.dart");
+// FileBasedSource source = new FileBasedSource.con2(parseUriWithException("dart:test/b/test.dart"), file);
+// JUnitTestCase.assertNotNull(source);
+// Uri relative = source.resolveRelativeUri(parseUriWithException("../c/lib.dart"));
+// JUnitTestCase.assertNotNull(relative);
+// JUnitTestCase.assertEquals("dart:test/c/lib.dart", relative.toString());
+// }
+// void test_resolveRelative_file_fileName() {
+// if (OSUtilities.isWindows()) {
+// // On Windows, the URI that is produced includes a drive letter, which I believe is not
+// // consistent across all machines that might run this test.
+// return;
+// }
+// JavaFile file = FileUtilities2.createFile("/a/b/test.dart");
+// FileBasedSource source = new FileBasedSource.con1(file);
+// JUnitTestCase.assertNotNull(source);
+// Uri relative = source.resolveRelativeUri(parseUriWithException("lib.dart"));
+// JUnitTestCase.assertNotNull(relative);
+// JUnitTestCase.assertEquals("file:/a/b/lib.dart", relative.toString());
+// }
+// void test_resolveRelative_file_filePath() {
+// if (OSUtilities.isWindows()) {
+// // On Windows, the URI that is produced includes a drive letter, which I believe is not
+// // consistent across all machines that might run this test.
+// return;
+// }
+// JavaFile file = FileUtilities2.createFile("/a/b/test.dart");
+// FileBasedSource source = new FileBasedSource.con1(file);
+// JUnitTestCase.assertNotNull(source);
+// Uri relative = source.resolveRelativeUri(parseUriWithException("c/lib.dart"));
+// JUnitTestCase.assertNotNull(relative);
+// JUnitTestCase.assertEquals("file:/a/b/c/lib.dart", relative.toString());
+// }
+// void test_resolveRelative_file_filePathWithParent() {
+// if (OSUtilities.isWindows()) {
+// // On Windows, the URI that is produced includes a drive letter, which I believe is not
+// // consistent across all machines that might run this test.
+// return;
+// }
+// JavaFile file = FileUtilities2.createFile("/a/b/test.dart");
+// FileBasedSource source = new FileBasedSource.con1(file);
+// JUnitTestCase.assertNotNull(source);
+// Uri relative = source.resolveRelativeUri(parseUriWithException("../c/lib.dart"));
+// JUnitTestCase.assertNotNull(relative);
+// JUnitTestCase.assertEquals("file:/a/c/lib.dart", relative.toString());
+// }
+// void test_resolveRelative_package_fileName() {
+// JavaFile file = FileUtilities2.createFile("/a/b/test.dart");
+// FileBasedSource source = new FileBasedSource.con2(parseUriWithException("package:b/test.dart"), file);
+// JUnitTestCase.assertNotNull(source);
+// Uri relative = source.resolveRelativeUri(parseUriWithException("lib.dart"));
+// JUnitTestCase.assertNotNull(relative);
+// JUnitTestCase.assertEquals("package:b/lib.dart", relative.toString());
+// }
+// void test_resolveRelative_package_fileNameWithoutPackageName() {
+// JavaFile file = FileUtilities2.createFile("/a/b/test.dart");
+// FileBasedSource source = new FileBasedSource.con2(parseUriWithException("package:test.dart"), file);
+// JUnitTestCase.assertNotNull(source);
+// Uri relative = source.resolveRelativeUri(parseUriWithException("lib.dart"));
+// JUnitTestCase.assertNotNull(relative);
+// JUnitTestCase.assertEquals("package:lib.dart", relative.toString());
+// }
+// void test_resolveRelative_package_filePath() {
+// JavaFile file = FileUtilities2.createFile("/a/b/test.dart");
+// FileBasedSource source = new FileBasedSource.con2(parseUriWithException("package:b/test.dart"), file);
+// JUnitTestCase.assertNotNull(source);
+// Uri relative = source.resolveRelativeUri(parseUriWithException("c/lib.dart"));
+// JUnitTestCase.assertNotNull(relative);
+// JUnitTestCase.assertEquals("package:b/c/lib.dart", relative.toString());
+// }
+// void test_resolveRelative_package_filePathWithParent() {
+// JavaFile file = FileUtilities2.createFile("/a/b/test.dart");
+// FileBasedSource source = new FileBasedSource.con2(parseUriWithException("package:a/b/test.dart"), file);
+// JUnitTestCase.assertNotNull(source);
+// Uri relative = source.resolveRelativeUri(parseUriWithException("../c/lib.dart"));
+// JUnitTestCase.assertNotNull(relative);
+// JUnitTestCase.assertEquals("package:a/c/lib.dart", relative.toString());
+// }
+// void test_system() {
+// JavaFile file = FileUtilities2.createFile("/does/not/exist.dart");
+// FileBasedSource source = new FileBasedSource.con2(parseUriWithException("dart:core"), file);
+// JUnitTestCase.assertNotNull(source);
+// JUnitTestCase.assertEquals(file.getAbsolutePath(), source.fullName);
+// JUnitTestCase.assertTrue(source.isInSystemLibrary);
+// }
+// static dartSuite() {
+// _ut.group('FileBasedSourceTest', () {
+// _ut.test('test_equals_false_differentFiles', () {
+// final __test = new FileBasedSourceTest();
+// runJUnitTest(__test, __test.test_equals_false_differentFiles);
+// });
+// _ut.test('test_equals_false_null', () {
+// final __test = new FileBasedSourceTest();
+// runJUnitTest(__test, __test.test_equals_false_null);
+// });
+// _ut.test('test_equals_true', () {
+// final __test = new FileBasedSourceTest();
+// runJUnitTest(__test, __test.test_equals_true);
+// });
+// _ut.test('test_getEncoding', () {
+// final __test = new FileBasedSourceTest();
+// runJUnitTest(__test, __test.test_getEncoding);
+// });
+// _ut.test('test_getFullName', () {
+// final __test = new FileBasedSourceTest();
+// runJUnitTest(__test, __test.test_getFullName);
+// });
+// _ut.test('test_getShortName', () {
+// final __test = new FileBasedSourceTest();
+// runJUnitTest(__test, __test.test_getShortName);
+// });
+// _ut.test('test_hashCode', () {
+// final __test = new FileBasedSourceTest();
+// runJUnitTest(__test, __test.test_hashCode);
+// });
+// _ut.test('test_isInSystemLibrary_contagious', () {
+// final __test = new FileBasedSourceTest();
+// runJUnitTest(__test, __test.test_isInSystemLibrary_contagious);
+// });
+// _ut.test('test_isInSystemLibrary_false', () {
+// final __test = new FileBasedSourceTest();
+// runJUnitTest(__test, __test.test_isInSystemLibrary_false);
+// });
+// _ut.test('test_issue14500', () {
+// final __test = new FileBasedSourceTest();
+// runJUnitTest(__test, __test.test_issue14500);
+// });
+// _ut.test('test_resolveRelative_dart_fileName', () {
+// final __test = new FileBasedSourceTest();
+// runJUnitTest(__test, __test.test_resolveRelative_dart_fileName);
+// });
+// _ut.test('test_resolveRelative_dart_filePath', () {
+// final __test = new FileBasedSourceTest();
+// runJUnitTest(__test, __test.test_resolveRelative_dart_filePath);
+// });
+// _ut.test('test_resolveRelative_dart_filePathWithParent', () {
+// final __test = new FileBasedSourceTest();
+// runJUnitTest(__test, __test.test_resolveRelative_dart_filePathWithParent);
+// });
+// _ut.test('test_resolveRelative_file_fileName', () {
+// final __test = new FileBasedSourceTest();
+// runJUnitTest(__test, __test.test_resolveRelative_file_fileName);
+// });
+// _ut.test('test_resolveRelative_file_filePath', () {
+// final __test = new FileBasedSourceTest();
+// runJUnitTest(__test, __test.test_resolveRelative_file_filePath);
+// });
+// _ut.test('test_resolveRelative_file_filePathWithParent', () {
+// final __test = new FileBasedSourceTest();
+// runJUnitTest(__test, __test.test_resolveRelative_file_filePathWithParent);
+// });
+// _ut.test('test_resolveRelative_package_fileName', () {
+// final __test = new FileBasedSourceTest();
+// runJUnitTest(__test, __test.test_resolveRelative_package_fileName);
+// });
+// _ut.test('test_resolveRelative_package_fileNameWithoutPackageName', () {
+// final __test = new FileBasedSourceTest();
+// runJUnitTest(__test, __test.test_resolveRelative_package_fileNameWithoutPackageName);
+// });
+// _ut.test('test_resolveRelative_package_filePath', () {
+// final __test = new FileBasedSourceTest();
+// runJUnitTest(__test, __test.test_resolveRelative_package_filePath);
+// });
+// _ut.test('test_resolveRelative_package_filePathWithParent', () {
+// final __test = new FileBasedSourceTest();
+// runJUnitTest(__test, __test.test_resolveRelative_package_filePathWithParent);
+// });
+// _ut.test('test_system', () {
+// final __test = new FileBasedSourceTest();
+// runJUnitTest(__test, __test.test_system);
+// });
+// });
+// }
+// }
+// class FileUriResolverTest extends JUnitTestCase {
+// void test_creation() {
+// JUnitTestCase.assertNotNull(new FileUriResolver());
+// }
+// void test_resolve_file() {
+// UriResolver resolver = new FileUriResolver();
+// Source result = resolver.resolveAbsolute(parseUriWithException("file:/does/not/exist.dart"));
+// JUnitTestCase.assertNotNull(result);
+// JUnitTestCase.assertEquals(FileUtilities2.createFile("/does/not/exist.dart").getAbsolutePath(), result.fullName);
+// }
+// void test_resolve_nonFile() {
+// UriResolver resolver = new FileUriResolver();
+// Source result = resolver.resolveAbsolute(parseUriWithException("dart:core"));
+// JUnitTestCase.assertNull(result);
+// }
+// static dartSuite() {
+// _ut.group('FileUriResolverTest', () {
+// _ut.test('test_creation', () {
+// final __test = new FileUriResolverTest();
+// runJUnitTest(__test, __test.test_creation);
+// });
+// _ut.test('test_resolve_file', () {
+// final __test = new FileUriResolverTest();
+// runJUnitTest(__test, __test.test_resolve_file);
+// });
+// _ut.test('test_resolve_nonFile', () {
+// final __test = new FileUriResolverTest();
+// runJUnitTest(__test, __test.test_resolve_nonFile);
+// });
+// });
+// }
+// }
+// /**
+// * The class `FileUtilities2` implements utility methods used to create and manipulate files.
+// */
+// class FileUtilities2 {
+// /**
+// * A temporary directory used during testing and cleared via [deleteTempDir].
+// */
+// static JavaFile _TEMP_DIR = new JavaFile(JavaSystemIO.getProperty("java.io.tmpdir"), "AnalysisEngineTestTmp");
+// /**
+// * Create a file with the given path after replacing any forward slashes ('/') in the path with
+// * the current file separator.
+// *
+// * @param path the path of the file to be created
+// * @return the file representing the path
+// */
+// static JavaFile createFile(String path) => new JavaFile(_convertPath(path)).getAbsoluteFile();
+// /**
+// * Create a new symlink or throw an exception if creation of symlinks is not supported. Use
+// * [isSymLinkSupported] to determine if this method will work on the current platform.
+// *
+// * @param existingFile the existing file to which the new symlink should point (not `null`,
+// * and must exist)
+// * @param linkFile the symlink to be created (not `null`, but must not exist)
+// */
+// static void createSymLink(JavaFile existingFile, JavaFile linkFile) {
+// JUnitTestCase.assertTrueMsg("Creation of symlinks is not supported", isSymLinkSupported);
+// JUnitTestCase.assertTrueMsg("Target file does not exist", existingFile.exists());
+// JUnitTestCase.assertFalseMsg("Link already exists", linkFile.exists());
+// ProcessRunner runner = new ProcessRunner(<String> ["ln", "-s", existingFile.getPath(), linkFile.getPath()]);
+// int exitCode = runner.runSync(10000);
+// if (exitCode != 0) {
+// JUnitTestCase.fail("Symlink creation failed [${exitCode}] ${linkFile}");
+// }
+// }
+// /**
+// * Create a temporary directory. Call [deleteTempDir] in the [TestCase] tearDown
+// * method to delete all temporary files and directories.
+// *
+// * @param name the name of the temporary directory (not `null`, not empty)
+// * @return the directory created (not `null`)
+// */
+// static JavaFile createTempDir(String name) {
+// JavaFile dir = new JavaFile.relative(_TEMP_DIR, name);
+// if (dir.mkdirs()) {
+// return dir;
+// }
+// throw new JavaIOException("Failed to create directory ${dir}");
+// }
+// /**
+// * Create a temporary file. Call [deleteTempDir] in the [TestCase] tearDown method
+// * to delete all temporary files and directories.
+// *
+// * @param name the name of the temporary file (not `null`, not empty)
+// * @return the file (not `null`)
+// */
+// static JavaFile createTempFile(String name, String content) {
+// JavaFile file = new JavaFile.relative(_TEMP_DIR, name);
+// if (file.createNewFile()) {
+// return file;
+// }
+// throw new JavaIOException("Failed to create file ${file}");
+// }
+// /**
+// * Delete the contents of the given directory, given that we know it is a directory.
+// *
+// * @param dir the directory whose contents are to be deleted
+// */
+// static void deleteDirectory(JavaFile dir) {
+// for (JavaFile file in dir.listFiles()) {
+// if (file.isDirectory()) {
+// deleteDirectory(file);
+// } else {
+// if (!file.delete()) {
+// throw new JavaIOException("Failed to delete ${file}");
+// }
+// }
+// }
+// if (!dir.delete()) {
+// throw new JavaIOException("Failed to delete ${dir}");
+// }
+// }
+// /**
+// * Delete symlink or throw an exception if creation of symlinks is not supported. Use
+// * [isSymLinkSupported] to determine if this method will work on the current platform.
+// *
+// * @param linkFile the symlink to be deleted (not `null`, and must exist)
+// */
+// static void deleteSymLink(JavaFile linkFile) {
+// JUnitTestCase.assertTrueMsg("Creation of symlinks is not supported", isSymLinkSupported);
+// JUnitTestCase.assertTrueMsg("Link does not exist", linkFile.exists());
+// ProcessRunner runner = new ProcessRunner(<String> ["rm", linkFile.getPath()]);
+// int exitCode = runner.runSync(10000);
+// if (exitCode != 0) {
+// JUnitTestCase.fail("Symlink deletion failed [${exitCode}] ${linkFile}");
+// }
+// }
+// /**
+// * Delete the temporary directory. This should called from the [TestCase] tearDown method of
+// * any test case which calls [createTempDir] or [createTempFile].
+// */
+// static void deleteTempDir() {
+// if (_TEMP_DIR.exists()) {
+// deleteDirectory(_TEMP_DIR);
+// }
+// }
+// /**
+// * Determine if creation of symlinks via [createSymLink] is supported.
+// *
+// * @return `true` if symlinks can be created, else false
+// */
+// static bool get isSymLinkSupported => !OSUtilities.isWindows();
+// /**
+// * Convert all forward slashes in the given path to the current file separator.
+// *
+// * @param path the path to be converted
+// * @return the converted path
+// */
+// static String _convertPath(String path) {
+// if (JavaFile.separator == "/") {
+// // We're on a unix-ish OS.
+// return path;
+// } else {
+// // On windows, the path separator is '\'.
+// return path.replaceAll("/", "\\\\");
+// }
+// }
+// }
+// class GeneralizingElementVisitor_AngularTest_findElement extends GeneralizingElementVisitor<Object> {
+// ElementKind kind;
+// String name;
+// List<Element> result;
+// GeneralizingElementVisitor_AngularTest_findElement(this.kind, this.name, this.result) : super();
+// @override
+// Object visitElement(Element element) {
+// if ((kind == null || element.kind == kind) && name == element.name) {
+// result[0] = element;
+// }
+// return super.visitElement(element);
+// }
+// }
+// /**
+// * Utility methods to create HTML nodes.
+// */
+// class HtmlFactory {
+// static XmlAttributeNode attribute(String name, String value) {
+// Token nameToken = _stringToken(name);
+// Token equalsToken = new Token.con1(TokenType.EQ, 0);
+// Token valueToken = _stringToken(value);
+// return new XmlAttributeNode(nameToken, equalsToken, valueToken);
+// }
+// static List list(List<Object> elements) {
+// List elementList = new List();
+// for (Object element in elements) {
+// elementList.add(element);
+// }
+// return elementList;
+// }
+// static HtmlScriptTagNode scriptTag(List<XmlAttributeNode> attributes) => new HtmlScriptTagNode(_ltToken(), _stringToken("script"), list(attributes), _sgtToken(), null, null, null, null);
+// static HtmlScriptTagNode scriptTagWithContent(String contents, List<XmlAttributeNode> attributes) {
+// Token attributeEnd = _gtToken();
+// Token contentToken = _stringToken(contents);
+// attributeEnd.setNext(contentToken);
+// Token contentEnd = _ltsToken();
+// contentToken.setNext(contentEnd);
+// return new HtmlScriptTagNode(_ltToken(), _stringToken("script"), list(attributes), attributeEnd, null, contentEnd, _stringToken("script"), _gtToken());
+// }
+// static XmlTagNode tagNode(String name, List<XmlAttributeNode> attributes) => new XmlTagNode(_ltToken(), _stringToken(name), [], _sgtToken(), null, null, null, null);
+// static Token _gtToken() => new Token.con1(TokenType.GT, 0);
+// static Token _ltsToken() => new Token.con1(TokenType.LT_SLASH, 0);
+// static Token _ltToken() => new Token.con1(TokenType.LT, 0);
+// static Token _sgtToken() => new Token.con1(TokenType.SLASH_GT, 0);
+// static Token _stringToken(String value) => new Token.con2(TokenType.STRING, 0, value);
+// }
+// class HtmlParserTest extends EngineTestCase {
+// /**
+// * The name of the 'script' tag in an HTML file.
+// */
+// static String _TAG_SCRIPT = "script";
+// void fail_parse_scriptWithComment() {
+// String scriptBody = EngineTestCase.createSource([
+// " /**",
+// " * <editable-label bind-value=\"dartAsignableValue\">",
+// " * </editable-label>",
+// " */",
+// " class Foo {}"]);
+// HtmlUnit htmlUnit = parse(EngineTestCase.createSource([
+// " <html>",
+// " <body>",
+// " <script type=\"application/dart\">",
+// scriptBody,
+// " </script>",
+// " </body>",
+// " </html>"]));
+// _validate(htmlUnit, [_t4("html", [_t4("body", [_t("script", _a(["type", "\"application/dart\""]), scriptBody, [])])])]);
+// }
+// void test_parse_attribute() {
+// HtmlUnit htmlUnit = parse("<html><body foo=\"sdfsdf\"></body></html>");
+// _validate(htmlUnit, [_t4("html", [_t("body", _a(["foo", "\"sdfsdf\""]), "", [])])]);
+// XmlTagNode htmlNode = htmlUnit.tagNodes[0];
+// XmlTagNode bodyNode = htmlNode.tagNodes[0];
+// JUnitTestCase.assertEquals("sdfsdf", bodyNode.attributes[0].text);
+// }
+// void test_parse_attribute_EOF() {
+// HtmlUnit htmlUnit = parse("<html><body foo=\"sdfsdf\"");
+// _validate(htmlUnit, [_t4("html", [_t("body", _a(["foo", "\"sdfsdf\""]), "", [])])]);
+// }
+// void test_parse_attribute_EOF_missing_quote() {
+// HtmlUnit htmlUnit = parse("<html><body foo=\"sdfsd");
+// _validate(htmlUnit, [_t4("html", [_t("body", _a(["foo", "\"sdfsd"]), "", [])])]);
+// XmlTagNode htmlNode = htmlUnit.tagNodes[0];
+// XmlTagNode bodyNode = htmlNode.tagNodes[0];
+// JUnitTestCase.assertEquals("sdfsd", bodyNode.attributes[0].text);
+// }
+// void test_parse_attribute_extra_quote() {
+// HtmlUnit htmlUnit = parse("<html><body foo=\"sdfsdf\"\"></body></html>");
+// _validate(htmlUnit, [_t4("html", [_t("body", _a(["foo", "\"sdfsdf\""]), "", [])])]);
+// }
+// void test_parse_attribute_single_quote() {
+// HtmlUnit htmlUnit = parse("<html><body foo='sdfsdf'></body></html>");
+// _validate(htmlUnit, [_t4("html", [_t("body", _a(["foo", "'sdfsdf'"]), "", [])])]);
+// XmlTagNode htmlNode = htmlUnit.tagNodes[0];
+// XmlTagNode bodyNode = htmlNode.tagNodes[0];
+// JUnitTestCase.assertEquals("sdfsdf", bodyNode.attributes[0].text);
+// }
+// void test_parse_comment_embedded() {
+// HtmlUnit htmlUnit = parse("<html <!-- comment -->></html>");
+// _validate(htmlUnit, [_t3("html", "", [])]);
+// }
+// void test_parse_comment_first() {
+// HtmlUnit htmlUnit = parse("<!-- comment --><html></html>");
+// _validate(htmlUnit, [_t3("html", "", [])]);
+// }
+// void test_parse_comment_in_content() {
+// HtmlUnit htmlUnit = parse("<html><!-- comment --></html>");
+// _validate(htmlUnit, [_t3("html", "<!-- comment -->", [])]);
+// }
+// void test_parse_content() {
+// HtmlUnit htmlUnit = parse("<html>\n<p a=\"b\">blat \n </p>\n</html>");
+// // XmlTagNode.getContent() does not include whitespace between '<' and '>' at this time
+// _validate(htmlUnit, [_t3("html", "\n<pa=\"b\">blat \n </p>\n", [_t("p", _a(["a", "\"b\""]), "blat \n ", [])])]);
+// }
+// void test_parse_content_none() {
+// HtmlUnit htmlUnit = parse("<html><p/>blat<p/></html>");
+// _validate(htmlUnit, [_t3("html", "<p/>blat<p/>", [_t3("p", "", []), _t3("p", "", [])])]);
+// }
+// void test_parse_declaration() {
+// HtmlUnit htmlUnit = parse("<!DOCTYPE html>\n\n<html><p></p></html>");
+// _validate(htmlUnit, [_t4("html", [_t3("p", "", [])])]);
+// }
+// void test_parse_directive() {
+// HtmlUnit htmlUnit = parse("<?xml ?>\n\n<html><p></p></html>");
+// _validate(htmlUnit, [_t4("html", [_t3("p", "", [])])]);
+// }
+// void test_parse_getAttribute() {
+// HtmlUnit htmlUnit = parse("<html><body foo=\"sdfsdf\"></body></html>");
+// XmlTagNode htmlNode = htmlUnit.tagNodes[0];
+// XmlTagNode bodyNode = htmlNode.tagNodes[0];
+// JUnitTestCase.assertEquals("sdfsdf", bodyNode.getAttribute("foo").text);
+// JUnitTestCase.assertEquals(null, bodyNode.getAttribute("bar"));
+// JUnitTestCase.assertEquals(null, bodyNode.getAttribute(null));
+// }
+// void test_parse_getAttributeText() {
+// HtmlUnit htmlUnit = parse("<html><body foo=\"sdfsdf\"></body></html>");
+// XmlTagNode htmlNode = htmlUnit.tagNodes[0];
+// XmlTagNode bodyNode = htmlNode.tagNodes[0];
+// JUnitTestCase.assertEquals("sdfsdf", bodyNode.getAttributeText("foo"));
+// JUnitTestCase.assertEquals(null, bodyNode.getAttributeText("bar"));
+// JUnitTestCase.assertEquals(null, bodyNode.getAttributeText(null));
+// }
+// void test_parse_headers() {
+// String code = EngineTestCase.createSource([
+// "<html>",
+// " <body>",
+// " <h2>000</h2>",
+// " <div>",
+// " 111",
+// " </div>",
+// " </body>",
+// "</html>"]);
+// HtmlUnit htmlUnit = parse(code);
+// _validate(htmlUnit, [_t4("html", [_t4("body", [_t3("h2", "000", []), _t4("div", [])])])]);
+// }
+// void test_parse_script() {
+// HtmlUnit htmlUnit = parse("<html><script >here is <p> some</script></html>");
+// _validate(htmlUnit, [_t4("html", [_t3("script", "here is <p> some", [])])]);
+// }
+// void test_parse_self_closing() {
+// HtmlUnit htmlUnit = parse("<html>foo<br>bar</html>");
+// _validate(htmlUnit, [_t3("html", "foo<br>bar", [_t3("br", "", [])])]);
+// }
+// void test_parse_self_closing_declaration() {
+// HtmlUnit htmlUnit = parse("<!DOCTYPE html><html>foo</html>");
+// _validate(htmlUnit, [_t3("html", "foo", [])]);
+// }
+// HtmlUnit parse(String contents) {
+// TestSource source = new TestSource.con1(FileUtilities2.createFile("/test.dart"), contents);
+// AbstractScanner scanner = new StringScanner(source, contents);
+// scanner.passThroughElements = <String> [_TAG_SCRIPT];
+// Token token = scanner.tokenize();
+// LineInfo lineInfo = new LineInfo(scanner.lineStarts);
+// GatheringErrorListener errorListener = new GatheringErrorListener();
+// HtmlUnit unit = new HtmlParser(source, errorListener).parse(token, lineInfo);
+// errorListener.assertNoErrors();
+// return unit;
+// }
+// XmlValidator_Attributes _a(List<String> keyValuePairs) => new XmlValidator_Attributes(keyValuePairs);
+// XmlValidator_Tag _t(String tag, XmlValidator_Attributes attributes, String content, List<XmlValidator_Tag> children) => new XmlValidator_Tag(tag, attributes, content, children);
+// XmlValidator_Tag _t2(String tag, XmlValidator_Attributes attributes, List<XmlValidator_Tag> children) => new XmlValidator_Tag(tag, attributes, null, children);
+// XmlValidator_Tag _t3(String tag, String content, List<XmlValidator_Tag> children) => new XmlValidator_Tag(tag, new XmlValidator_Attributes([]), content, children);
+// XmlValidator_Tag _t4(String tag, List<XmlValidator_Tag> children) => new XmlValidator_Tag(tag, new XmlValidator_Attributes([]), null, children);
+// void _validate(HtmlUnit htmlUnit, List<XmlValidator_Tag> expectedTags) {
+// XmlValidator validator = new XmlValidator();
+// validator.expectTags(expectedTags);
+// htmlUnit.accept(validator);
+// validator.assertValid();
+// }
+// static dartSuite() {
+// _ut.group('HtmlParserTest', () {
+// _ut.test('test_parse_attribute', () {
+// final __test = new HtmlParserTest();
+// runJUnitTest(__test, __test.test_parse_attribute);
+// });
+// _ut.test('test_parse_attribute_EOF', () {
+// final __test = new HtmlParserTest();
+// runJUnitTest(__test, __test.test_parse_attribute_EOF);
+// });
+// _ut.test('test_parse_attribute_EOF_missing_quote', () {
+// final __test = new HtmlParserTest();
+// runJUnitTest(__test, __test.test_parse_attribute_EOF_missing_quote);
+// });
+// _ut.test('test_parse_attribute_extra_quote', () {
+// final __test = new HtmlParserTest();
+// runJUnitTest(__test, __test.test_parse_attribute_extra_quote);
+// });
+// _ut.test('test_parse_attribute_single_quote', () {
+// final __test = new HtmlParserTest();
+// runJUnitTest(__test, __test.test_parse_attribute_single_quote);
+// });
+// _ut.test('test_parse_comment_embedded', () {
+// final __test = new HtmlParserTest();
+// runJUnitTest(__test, __test.test_parse_comment_embedded);
+// });
+// _ut.test('test_parse_comment_first', () {
+// final __test = new HtmlParserTest();
+// runJUnitTest(__test, __test.test_parse_comment_first);
+// });
+// _ut.test('test_parse_comment_in_content', () {
+// final __test = new HtmlParserTest();
+// runJUnitTest(__test, __test.test_parse_comment_in_content);
+// });
+// _ut.test('test_parse_content', () {
+// final __test = new HtmlParserTest();
+// runJUnitTest(__test, __test.test_parse_content);
+// });
+// _ut.test('test_parse_content_none', () {
+// final __test = new HtmlParserTest();
+// runJUnitTest(__test, __test.test_parse_content_none);
+// });
+// _ut.test('test_parse_declaration', () {
+// final __test = new HtmlParserTest();
+// runJUnitTest(__test, __test.test_parse_declaration);
+// });
+// _ut.test('test_parse_directive', () {
+// final __test = new HtmlParserTest();
+// runJUnitTest(__test, __test.test_parse_directive);
+// });
+// _ut.test('test_parse_getAttribute', () {
+// final __test = new HtmlParserTest();
+// runJUnitTest(__test, __test.test_parse_getAttribute);
+// });
+// _ut.test('test_parse_getAttributeText', () {
+// final __test = new HtmlParserTest();
+// runJUnitTest(__test, __test.test_parse_getAttributeText);
+// });
+// _ut.test('test_parse_headers', () {
+// final __test = new HtmlParserTest();
+// runJUnitTest(__test, __test.test_parse_headers);
+// });
+// _ut.test('test_parse_script', () {
+// final __test = new HtmlParserTest();
+// runJUnitTest(__test, __test.test_parse_script);
+// });
+// _ut.test('test_parse_self_closing', () {
+// final __test = new HtmlParserTest();
+// runJUnitTest(__test, __test.test_parse_self_closing);
+// });
+// _ut.test('test_parse_self_closing_declaration', () {
+// final __test = new HtmlParserTest();
+// runJUnitTest(__test, __test.test_parse_self_closing_declaration);
+// });
+// });
+// }
+// }
+// class HtmlTagInfoBuilderTest extends HtmlParserTest {
+// void test_buider() {
+// HtmlTagInfoBuilder builder = new HtmlTagInfoBuilder();
+// HtmlUnit unit = parse(EngineTestCase.createSource([
+// "<html>",
+// " <body>",
+// " <div id=\"x\"></div>",
+// " <p class='c'></p>",
+// " <div class='c'></div>",
+// " </body>",
+// "</html>"]));
+// unit.accept(builder);
+// HtmlTagInfo info = builder.getTagInfo();
+// JUnitTestCase.assertNotNull(info);
+// List<String> allTags = info.getAllTags();
+// EngineTestCase.assertLength(4, allTags);
+// JUnitTestCase.assertEquals("div", info.getTagWithId("x"));
+// List<String> tagsWithClass = info.getTagsWithClass("c");
+// EngineTestCase.assertLength(2, tagsWithClass);
+// }
+// static dartSuite() {
+// _ut.group('HtmlTagInfoBuilderTest', () {
+// _ut.test('test_buider', () {
+// final __test = new HtmlTagInfoBuilderTest();
+// runJUnitTest(__test, __test.test_buider);
+// });
+// _ut.test('test_parse_attribute', () {
+// final __test = new HtmlTagInfoBuilderTest();
+// runJUnitTest(__test, __test.test_parse_attribute);
+// });
+// _ut.test('test_parse_attribute_EOF', () {
+// final __test = new HtmlTagInfoBuilderTest();
+// runJUnitTest(__test, __test.test_parse_attribute_EOF);
+// });
+// _ut.test('test_parse_attribute_EOF_missing_quote', () {
+// final __test = new HtmlTagInfoBuilderTest();
+// runJUnitTest(__test, __test.test_parse_attribute_EOF_missing_quote);
+// });
+// _ut.test('test_parse_attribute_extra_quote', () {
+// final __test = new HtmlTagInfoBuilderTest();
+// runJUnitTest(__test, __test.test_parse_attribute_extra_quote);
+// });
+// _ut.test('test_parse_attribute_single_quote', () {
+// final __test = new HtmlTagInfoBuilderTest();
+// runJUnitTest(__test, __test.test_parse_attribute_single_quote);
+// });
+// _ut.test('test_parse_comment_embedded', () {
+// final __test = new HtmlTagInfoBuilderTest();
+// runJUnitTest(__test, __test.test_parse_comment_embedded);
+// });
+// _ut.test('test_parse_comment_first', () {
+// final __test = new HtmlTagInfoBuilderTest();
+// runJUnitTest(__test, __test.test_parse_comment_first);
+// });
+// _ut.test('test_parse_comment_in_content', () {
+// final __test = new HtmlTagInfoBuilderTest();
+// runJUnitTest(__test, __test.test_parse_comment_in_content);
+// });
+// _ut.test('test_parse_content', () {
+// final __test = new HtmlTagInfoBuilderTest();
+// runJUnitTest(__test, __test.test_parse_content);
+// });
+// _ut.test('test_parse_content_none', () {
+// final __test = new HtmlTagInfoBuilderTest();
+// runJUnitTest(__test, __test.test_parse_content_none);
+// });
+// _ut.test('test_parse_declaration', () {
+// final __test = new HtmlTagInfoBuilderTest();
+// runJUnitTest(__test, __test.test_parse_declaration);
+// });
+// _ut.test('test_parse_directive', () {
+// final __test = new HtmlTagInfoBuilderTest();
+// runJUnitTest(__test, __test.test_parse_directive);
+// });
+// _ut.test('test_parse_getAttribute', () {
+// final __test = new HtmlTagInfoBuilderTest();
+// runJUnitTest(__test, __test.test_parse_getAttribute);
+// });
+// _ut.test('test_parse_getAttributeText', () {
+// final __test = new HtmlTagInfoBuilderTest();
+// runJUnitTest(__test, __test.test_parse_getAttributeText);
+// });
+// _ut.test('test_parse_headers', () {
+// final __test = new HtmlTagInfoBuilderTest();
+// runJUnitTest(__test, __test.test_parse_headers);
+// });
+// _ut.test('test_parse_script', () {
+// final __test = new HtmlTagInfoBuilderTest();
+// runJUnitTest(__test, __test.test_parse_script);
+// });
+// _ut.test('test_parse_self_closing', () {
+// final __test = new HtmlTagInfoBuilderTest();
+// runJUnitTest(__test, __test.test_parse_self_closing);
+// });
+// _ut.test('test_parse_self_closing_declaration', () {
+// final __test = new HtmlTagInfoBuilderTest();
+// runJUnitTest(__test, __test.test_parse_self_closing_declaration);
+// });
+// });
+// }
+// }
+// class HtmlUnitBuilderTest extends EngineTestCase {
+// AnalysisContextImpl _context;
+// void test_embedded_script() {
+// HtmlElementImpl element = _build(EngineTestCase.createSource([
+// "<html>",
+// "<script type=\"application/dart\">foo=2;</script>",
+// "</html>"]));
+// _validate(element, [_s(_l([_v("foo")]))]);
+// }
+// void test_embedded_script_no_content() {
+// HtmlElementImpl element = _build(EngineTestCase.createSource([
+// "<html>",
+// "<script type=\"application/dart\"></script>",
+// "</html>"]));
+// _validate(element, [_s(_l([]))]);
+// }
+// void test_external_script() {
+// HtmlElementImpl element = _build(EngineTestCase.createSource([
+// "<html>",
+// "<script type=\"application/dart\" src=\"other.dart\"/>",
+// "</html>"]));
+// _validate(element, [_s2("other.dart")]);
+// }
+// void test_external_script_no_source() {
+// HtmlElementImpl element = _build(EngineTestCase.createSource([
+// "<html>",
+// "<script type=\"application/dart\"/>",
+// "</html>"]));
+// _validate(element, [_s2(null as String)]);
+// }
+// void test_external_script_with_content() {
+// HtmlElementImpl element = _build(EngineTestCase.createSource([
+// "<html>",
+// "<script type=\"application/dart\" src=\"other.dart\">blat=2;</script>",
+// "</html>"]));
+// _validate(element, [_s2("other.dart")]);
+// }
+// void test_no_scripts() {
+// HtmlElementImpl element = _build(EngineTestCase.createSource(["<!DOCTYPE html>", "<html><p></p></html>"]));
+// _validate(element, []);
+// }
+// void test_two_dart_scripts() {
+// HtmlElementImpl element = _build(EngineTestCase.createSource([
+// "<html>",
+// "<script type=\"application/dart\">bar=2;</script>",
+// "<script type=\"application/dart\" src=\"other.dart\"/>",
+// "<script src=\"dart.js\"/>",
+// "</html>"]));
+// _validate(element, [_s(_l([_v("bar")])), _s2("other.dart")]);
+// }
+// @override
+// void setUp() {
+// _context = AnalysisContextFactory.contextWithCore();
+// }
+// HtmlUnitBuilderTest_ExpectedLibrary _l(List<HtmlUnitBuilderTest_ExpectedVariable> expectedVariables) => new HtmlUnitBuilderTest_ExpectedLibrary(this, expectedVariables);
+// HtmlElementImpl _build(String contents) {
+// TestSource source = new TestSource.con1(FileUtilities2.createFile("/test.html"), contents);
+// ChangeSet changeSet = new ChangeSet();
+// changeSet.addedSource(source);
+// _context.applyChanges(changeSet);
+// HtmlUnitBuilder builder = new HtmlUnitBuilder(_context);
+// return builder.buildHtmlElement(source, _context.getModificationStamp(source), _context.parseHtmlUnit(source));
+// }
+// HtmlUnitBuilderTest_ExpectedScript _s(HtmlUnitBuilderTest_ExpectedLibrary expectedLibrary) => new HtmlUnitBuilderTest_ExpectedScript.con1(expectedLibrary);
+// HtmlUnitBuilderTest_ExpectedScript _s2(String scriptSourcePath) => new HtmlUnitBuilderTest_ExpectedScript.con2(scriptSourcePath);
+// HtmlUnitBuilderTest_ExpectedVariable _v(String varName) => new HtmlUnitBuilderTest_ExpectedVariable(varName);
+// void _validate(HtmlElementImpl element, List<HtmlUnitBuilderTest_ExpectedScript> expectedScripts) {
+// JUnitTestCase.assertSame(_context, element.context);
+// List<HtmlScriptElement> scripts = element.scripts;
+// JUnitTestCase.assertNotNull(scripts);
+// EngineTestCase.assertLength(expectedScripts.length, scripts);
+// for (int scriptIndex = 0; scriptIndex < scripts.length; scriptIndex++) {
+// expectedScripts[scriptIndex]._validate(scriptIndex, scripts[scriptIndex]);
+// }
+// }
+// static dartSuite() {
+// _ut.group('HtmlUnitBuilderTest', () {
+// _ut.test('test_embedded_script', () {
+// final __test = new HtmlUnitBuilderTest();
+// runJUnitTest(__test, __test.test_embedded_script);
+// });
+// _ut.test('test_embedded_script_no_content', () {
+// final __test = new HtmlUnitBuilderTest();
+// runJUnitTest(__test, __test.test_embedded_script_no_content);
+// });
+// _ut.test('test_external_script', () {
+// final __test = new HtmlUnitBuilderTest();
+// runJUnitTest(__test, __test.test_external_script);
+// });
+// _ut.test('test_external_script_no_source', () {
+// final __test = new HtmlUnitBuilderTest();
+// runJUnitTest(__test, __test.test_external_script_no_source);
+// });
+// _ut.test('test_external_script_with_content', () {
+// final __test = new HtmlUnitBuilderTest();
+// runJUnitTest(__test, __test.test_external_script_with_content);
+// });
+// _ut.test('test_no_scripts', () {
+// final __test = new HtmlUnitBuilderTest();
+// runJUnitTest(__test, __test.test_no_scripts);
+// });
+// _ut.test('test_two_dart_scripts', () {
+// final __test = new HtmlUnitBuilderTest();
+// runJUnitTest(__test, __test.test_two_dart_scripts);
+// });
+// });
+// }
+// }
+// class HtmlUnitBuilderTest_ExpectedLibrary {
+// final HtmlUnitBuilderTest HtmlUnitBuilderTest_this;
+// final List<HtmlUnitBuilderTest_ExpectedVariable> _expectedVariables;
+// HtmlUnitBuilderTest_ExpectedLibrary(this.HtmlUnitBuilderTest_this, this._expectedVariables);
+// void _validate(int scriptIndex, EmbeddedHtmlScriptElementImpl script) {
+// LibraryElement library = script.scriptLibrary;
+// JUnitTestCase.assertNotNullMsg("script ${scriptIndex}", library);
+// JUnitTestCase.assertSameMsg("script ${scriptIndex}", HtmlUnitBuilderTest_this._context, script.context);
+// CompilationUnitElement unit = library.definingCompilationUnit;
+// JUnitTestCase.assertNotNullMsg("script ${scriptIndex}", unit);
+// List<TopLevelVariableElement> variables = unit.topLevelVariables;
+// EngineTestCase.assertLength(_expectedVariables.length, variables);
+// for (int index = 0; index < variables.length; index++) {
+// _expectedVariables[index].validate(scriptIndex, variables[index]);
+// }
+// JUnitTestCase.assertSameMsg("script ${scriptIndex}", script, library.enclosingElement);
+// }
+// }
+// class HtmlUnitBuilderTest_ExpectedScript {
+// String _expectedExternalScriptName;
+// HtmlUnitBuilderTest_ExpectedLibrary _expectedLibrary;
+// HtmlUnitBuilderTest_ExpectedScript.con1(HtmlUnitBuilderTest_ExpectedLibrary expectedLibrary) {
+// this._expectedExternalScriptName = null;
+// this._expectedLibrary = expectedLibrary;
+// }
+// HtmlUnitBuilderTest_ExpectedScript.con2(String expectedExternalScriptPath) {
+// this._expectedExternalScriptName = expectedExternalScriptPath;
+// this._expectedLibrary = null;
+// }
+// void _validate(int scriptIndex, HtmlScriptElement script) {
+// if (_expectedLibrary != null) {
+// _validateEmbedded(scriptIndex, script);
+// } else {
+// _validateExternal(scriptIndex, script);
+// }
+// }
+// void _validateEmbedded(int scriptIndex, HtmlScriptElement script) {
+// if (script is! EmbeddedHtmlScriptElementImpl) {
+// JUnitTestCase.fail("Expected script ${scriptIndex} to be embedded, but found ${(script != null ? script.runtimeType : "null")}");
+// }
+// EmbeddedHtmlScriptElementImpl embeddedScript = script as EmbeddedHtmlScriptElementImpl;
+// _expectedLibrary._validate(scriptIndex, embeddedScript);
+// }
+// void _validateExternal(int scriptIndex, HtmlScriptElement script) {
+// if (script is! ExternalHtmlScriptElementImpl) {
+// JUnitTestCase.fail("Expected script ${scriptIndex} to be external with src=${_expectedExternalScriptName} but found ${(script != null ? script.runtimeType : "null")}");
+// }
+// ExternalHtmlScriptElementImpl externalScript = script as ExternalHtmlScriptElementImpl;
+// Source scriptSource = externalScript.scriptSource;
+// if (_expectedExternalScriptName == null) {
+// JUnitTestCase.assertNullMsg("script ${scriptIndex}", scriptSource);
+// } else {
+// JUnitTestCase.assertNotNullMsg("script ${scriptIndex}", scriptSource);
+// String actualExternalScriptName = scriptSource.shortName;
+// JUnitTestCase.assertEqualsMsg("script ${scriptIndex}", _expectedExternalScriptName, actualExternalScriptName);
+// }
+// }
+// }
+// class HtmlUnitBuilderTest_ExpectedVariable {
+// final String _expectedName;
+// HtmlUnitBuilderTest_ExpectedVariable(this._expectedName);
+// void validate(int scriptIndex, TopLevelVariableElement variable) {
+// JUnitTestCase.assertNotNullMsg("script ${scriptIndex}", variable);
+// JUnitTestCase.assertEqualsMsg("script ${scriptIndex}", _expectedName, variable.name);
+// }
+// }
+// /**
+// * Instances of the class `HtmlWarningCodeTest` test the generation of HTML warning codes.
+// */
+// class HtmlWarningCodeTest extends EngineTestCase {
+// /**
+// * The source factory used to create the sources to be resolved.
+// */
+// SourceFactory _sourceFactory;
+// /**
+// * The analysis context used to resolve the HTML files.
+// */
+// AnalysisContextImpl _context;
+// /**
+// * The contents of the 'test.html' file.
+// */
+// String _contents;
+// /**
+// * The list of reported errors.
+// */
+// List<AnalysisError> _errors;
+// void test_invalidUri() {
+// _verify(EngineTestCase.createSource([
+// "<html>",
+// "<script type='application/dart' src='ht:'/>",
+// "</html>"]), [HtmlWarningCode.INVALID_URI]);
+// _assertErrorLocation2(_errors[0], "ht:");
+// }
+// void test_uriDoesNotExist() {
+// _verify(EngineTestCase.createSource([
+// "<html>",
+// "<script type='application/dart' src='other.dart'/>",
+// "</html>"]), [HtmlWarningCode.URI_DOES_NOT_EXIST]);
+// _assertErrorLocation2(_errors[0], "other.dart");
+// }
+// @override
+// void setUp() {
+// _sourceFactory = new SourceFactory([new FileUriResolver()]);
+// _context = new AnalysisContextImpl();
+// _context.sourceFactory = _sourceFactory;
+// }
+// void _assertErrorLocation(AnalysisError error, int expectedOffset, int expectedLength) {
+// JUnitTestCase.assertEqualsMsg(error.toString(), expectedOffset, error.offset);
+// JUnitTestCase.assertEqualsMsg(error.toString(), expectedLength, error.length);
+// }
+// void _assertErrorLocation2(AnalysisError error, String expectedString) {
+// _assertErrorLocation(error, _contents.indexOf(expectedString), expectedString.length);
+// }
+// void _verify(String contents, List<ErrorCode> expectedErrorCodes) {
+// this._contents = contents;
+// TestSource source = new TestSource.con1(FileUtilities2.createFile("/test.html"), contents);
+// ChangeSet changeSet = new ChangeSet();
+// changeSet.addedSource(source);
+// _context.applyChanges(changeSet);
+// HtmlUnitBuilder builder = new HtmlUnitBuilder(_context);
+// builder.buildHtmlElement(source, _context.getModificationStamp(source), _context.parseHtmlUnit(source));
+// GatheringErrorListener errorListener = new GatheringErrorListener();
+// errorListener.addAll2(builder.errorListener);
+// errorListener.assertErrorsWithCodes(expectedErrorCodes);
+// _errors = errorListener.errors;
+// }
+// static dartSuite() {
+// _ut.group('HtmlWarningCodeTest', () {
+// _ut.test('test_invalidUri', () {
+// final __test = new HtmlWarningCodeTest();
+// runJUnitTest(__test, __test.test_invalidUri);
+// });
+// _ut.test('test_uriDoesNotExist', () {
+// final __test = new HtmlWarningCodeTest();
+// runJUnitTest(__test, __test.test_uriDoesNotExist);
+// });
+// });
+// }
+// }
+// /**
+// * Instances of the class `MockDartSdk` implement a [DartSdk].
+// */
+// class MockDartSdk implements DartSdk {
+// @override
+// Source fromFileUri(Uri uri) => null;
+// @override
+// AnalysisContext get context => null;
+// @override
+// List<SdkLibrary> get sdkLibraries => null;
+// @override
+// SdkLibrary getSdkLibrary(String dartUri) => null;
+// @override
+// String get sdkVersion => null;
+// @override
+// List<String> get uris => null;
+// @override
+// Source mapDartUri(String dartUri) => null;
+// }
+// class NonExistingSourceTest extends JUnitTestCase {
+// Source _source = new NonExistingSource("/foo/bar/baz.dart", UriKind.PACKAGE_URI);
+// void test_access() {
+// JUnitTestCase.assertFalse(_source.exists());
+// JUnitTestCase.assertSame(UriKind.PACKAGE_URI, _source.uriKind);
+// JUnitTestCase.assertEquals("/foo/bar/baz.dart", _source.fullName);
+// JUnitTestCase.assertEquals("/foo/bar/baz.dart", _source.shortName);
+// JUnitTestCase.assertEquals(0, _source.modificationStamp);
+// JUnitTestCase.assertFalse(_source.isInSystemLibrary);
+// }
+// void test_getContents() {
+// try {
+// _source.contents;
+// JUnitTestCase.fail();
+// } on UnsupportedOperationException catch (e) {
+// }
+// }
+// void test_getContentsToReceiver() {
+// try {
+// _source.getContentsToReceiver(null);
+// JUnitTestCase.fail();
+// } on UnsupportedOperationException catch (e) {
+// }
+// }
+// void test_getEncoding() {
+// try {
+// _source.encoding;
+// JUnitTestCase.fail();
+// } on UnsupportedOperationException catch (e) {
+// }
+// }
+// void test_resolveRelative() {
+// try {
+// _source.resolveRelativeUri(parseUriWithException("qux.dart"));
+// JUnitTestCase.fail();
+// } on UnsupportedOperationException catch (e) {
+// }
+// }
+// static dartSuite() {
+// _ut.group('NonExistingSourceTest', () {
+// _ut.test('test_access', () {
+// final __test = new NonExistingSourceTest();
+// runJUnitTest(__test, __test.test_access);
+// });
+// _ut.test('test_getContents', () {
+// final __test = new NonExistingSourceTest();
+// runJUnitTest(__test, __test.test_getContents);
+// });
+// _ut.test('test_getContentsToReceiver', () {
+// final __test = new NonExistingSourceTest();
+// runJUnitTest(__test, __test.test_getContentsToReceiver);
+// });
+// _ut.test('test_getEncoding', () {
+// final __test = new NonExistingSourceTest();
+// runJUnitTest(__test, __test.test_getEncoding);
+// });
+// _ut.test('test_resolveRelative', () {
+// final __test = new NonExistingSourceTest();
+// runJUnitTest(__test, __test.test_resolveRelative);
+// });
+// });
+// }
+// }
+// class PackageUriResolverTest extends JUnitTestCase {
+// void test_absolute_vs_canonical() {
+// JavaFile directory = FileUtilities2.createFile("/does/not/exist/packages");
+// // Cannot compare paths on Windows because this
+// // assertEquals(directory.getAbsolutePath(), directory.getCanonicalPath());
+// // results in
+// // expected:<[e]:\does\not\exist\pac...> but was:<[E]:\does\not\exist\pac...>
+// JUnitTestCase.assertEquals(directory.getAbsoluteFile(), directory.getCanonicalFile());
+// }
+// void test_creation() {
+// JavaFile directory = FileUtilities2.createFile("/does/not/exist/packages");
+// JUnitTestCase.assertNotNull(new PackageUriResolver([directory]));
+// }
+// void test_isPackageUri_null_scheme() {
+// Uri uri = parseUriWithException("foo.dart");
+// JUnitTestCase.assertNull(uri.scheme);
+// JUnitTestCase.assertFalse(PackageUriResolver.isPackageUri(uri));
+// }
+// void test_resolve_canonical() {
+// if (!FileUtilities2.isSymLinkSupported) {
+// print("Skipping ${runtimeType.toString()} test_resolve_canonical");
+// return;
+// }
+// JavaFile lib1Dir = FileUtilities2.createTempDir("pkg1/lib").getCanonicalFile();
+// JavaFile otherDir = FileUtilities2.createTempDir("pkg1/other").getCanonicalFile();
+// JavaFile packagesDir = FileUtilities2.createTempDir("pkg1/packages").getCanonicalFile();
+// JavaFile lib2Dir = FileUtilities2.createTempDir("pkg2/lib").getCanonicalFile();
+// // Create symlink packages/pkg1 --> lib1
+// JavaFile pkg1Dir = new JavaFile.relative(packagesDir, "pkg1");
+// FileUtilities2.createSymLink(lib1Dir, pkg1Dir);
+// // Create symlink packages/pkg1/other --> other
+// FileUtilities2.createSymLink(otherDir, new JavaFile.relative(lib1Dir, "other"));
+// // Create symlink packages/pkg2 --> lib2
+// JavaFile pkg2Dir = new JavaFile.relative(packagesDir, "pkg2");
+// FileUtilities2.createSymLink(lib2Dir, pkg2Dir);
+// UriResolver resolver = new PackageUriResolver([packagesDir]);
+// // Assert that package:pkg1 resolves to lib1
+// Source result = resolver.resolveAbsolute(parseUriWithException("package:pkg1"));
+// JUnitTestCase.assertEquals(lib1Dir, new JavaFile(result.fullName));
+// JUnitTestCase.assertSame(UriKind.FILE_URI, result.uriKind);
+// // Assert that package:pkg1/ resolves to lib1
+// result = resolver.resolveAbsolute(parseUriWithException("package:pkg1/"));
+// JUnitTestCase.assertEquals(lib1Dir, new JavaFile(result.fullName));
+// JUnitTestCase.assertSame(UriKind.FILE_URI, result.uriKind);
+// // Assert that package:pkg1/other resolves to lib1/other not other
+// result = resolver.resolveAbsolute(parseUriWithException("package:pkg1/other"));
+// JUnitTestCase.assertEquals(new JavaFile.relative(lib1Dir, "other"), new JavaFile(result.fullName));
+// JUnitTestCase.assertSame(UriKind.FILE_URI, result.uriKind);
+// // Assert that package:pkg1/other/some.dart resolves to lib1/other/some.dart not other.dart
+// // when some.dart does NOT exist
+// JavaFile someDart = new JavaFile.relative(new JavaFile.relative(lib1Dir, "other"), "some.dart");
+// result = resolver.resolveAbsolute(parseUriWithException("package:pkg1/other/some.dart"));
+// JUnitTestCase.assertEquals(someDart, new JavaFile(result.fullName));
+// // Assert that package:pkg1/other/some.dart resolves to lib1/other/some.dart not other.dart
+// // when some.dart exists
+// JUnitTestCase.assertTrue(new JavaFile.relative(otherDir, someDart.getName()).createNewFile());
+// JUnitTestCase.assertTrue(someDart.exists());
+// result = resolver.resolveAbsolute(parseUriWithException("package:pkg1/other/some.dart"));
+// JUnitTestCase.assertEquals(someDart, new JavaFile(result.fullName));
+// // Assert that package:pkg2/ resolves to lib2
+// result = resolver.resolveAbsolute(parseUriWithException("package:pkg2/"));
+// JUnitTestCase.assertEquals(lib2Dir, new JavaFile(result.fullName));
+// JUnitTestCase.assertSame(UriKind.PACKAGE_URI, result.uriKind);
+// }
+// void test_resolve_invalid() {
+// JavaFile packagesDir = new JavaFile("packages");
+// UriResolver resolver = new PackageUriResolver([packagesDir]);
+// // Invalid: URI
+// try {
+// parseUriWithException("package:");
+// JUnitTestCase.fail("Expected exception");
+// } on URISyntaxException catch (e) {
+// }
+// // Invalid: just slash
+// Source result = resolver.resolveAbsolute(parseUriWithException("package:/"));
+// JUnitTestCase.assertNull(result);
+// // Invalid: leading slash... or should we gracefully degrade and ignore the leading slash?
+// result = resolver.resolveAbsolute(parseUriWithException("package:/foo"));
+// JUnitTestCase.assertNull(result);
+// }
+// void test_resolve_nonPackage() {
+// JavaFile directory = FileUtilities2.createFile("/does/not/exist/packages");
+// UriResolver resolver = new PackageUriResolver([directory]);
+// Source result = resolver.resolveAbsolute(parseUriWithException("dart:core"));
+// JUnitTestCase.assertNull(result);
+// }
+// void test_resolve_package() {
+// JavaFile directory = FileUtilities2.createFile("/does/not/exist/packages");
+// UriResolver resolver = new PackageUriResolver([directory]);
+// Source result = resolver.resolveAbsolute(parseUriWithException("package:third/party/library.dart"));
+// JUnitTestCase.assertNotNull(result);
+// JUnitTestCase.assertEquals(FileUtilities2.createFile("/does/not/exist/packages/third/party/library.dart").getAbsoluteFile(), new JavaFile(result.fullName));
+// }
+// void test_restore() {
+// if (!FileUtilities2.isSymLinkSupported) {
+// print("Skipping ${runtimeType.toString()} test_restore");
+// return;
+// }
+// JavaFile argsCanonicalDir = FileUtilities2.createTempDir("args").getCanonicalFile();
+// JavaFile packagesDir = FileUtilities2.createTempDir("packages");
+// // Create symlink packages/args --> args-canonical
+// FileUtilities2.createSymLink(argsCanonicalDir, new JavaFile.relative(packagesDir, "args"));
+// UriResolver resolver = new PackageUriResolver([packagesDir]);
+// // args-canonical/args.dart --> packages:args/args.dart
+// JavaFile someDart = new JavaFile.relative(argsCanonicalDir, "args.dart");
+// FileBasedSource source = new FileBasedSource.con1(someDart);
+// JUnitTestCase.assertEquals(parseUriWithException("package:args/args.dart"), resolver.restoreAbsolute(source));
+// }
+// @override
+// void tearDown() {
+// FileUtilities2.deleteTempDir();
+// }
+// static dartSuite() {
+// _ut.group('PackageUriResolverTest', () {
+// _ut.test('test_absolute_vs_canonical', () {
+// final __test = new PackageUriResolverTest();
+// runJUnitTest(__test, __test.test_absolute_vs_canonical);
+// });
+// _ut.test('test_creation', () {
+// final __test = new PackageUriResolverTest();
+// runJUnitTest(__test, __test.test_creation);
+// });
+// _ut.test('test_isPackageUri_null_scheme', () {
+// final __test = new PackageUriResolverTest();
+// runJUnitTest(__test, __test.test_isPackageUri_null_scheme);
+// });
+// _ut.test('test_resolve_canonical', () {
+// final __test = new PackageUriResolverTest();
+// runJUnitTest(__test, __test.test_resolve_canonical);
+// });
+// _ut.test('test_resolve_invalid', () {
+// final __test = new PackageUriResolverTest();
+// runJUnitTest(__test, __test.test_resolve_invalid);
+// });
+// _ut.test('test_resolve_nonPackage', () {
+// final __test = new PackageUriResolverTest();
+// runJUnitTest(__test, __test.test_resolve_nonPackage);
+// });
+// _ut.test('test_resolve_package', () {
+// final __test = new PackageUriResolverTest();
+// runJUnitTest(__test, __test.test_resolve_package);
+// });
+// _ut.test('test_restore', () {
+// final __test = new PackageUriResolverTest();
+// runJUnitTest(__test, __test.test_restore);
+// });
+// });
+// }
+// }
+// class PolymerCompilationUnitBuilderTest extends PolymerTest {
+// void test_badAnnotation_noArguments() {
+// addTagDartSource(EngineTestCase.createSource([
+// "class MyAnnotation {}",
+// "@MyAnnotation",
+// "class MyElement {",
+// "}",
+// ""]));
+// resolveTagDart();
+// JUnitTestCase.assertNull(tagDartElement);
+// }
+// void test_badAnnotation_notConstructor() {
+// addTagDartSource(EngineTestCase.createSource(["@NoSuchAnnotation()", "class MyElement {", "}", ""]));
+// resolveTagDart();
+// JUnitTestCase.assertNull(tagDartElement);
+// }
+// void test_customTag() {
+// addTagDartSource(EngineTestCase.createSource([
+// "import 'polymer.dart';",
+// "",
+// "@CustomTag('my-element') // marker",
+// "class MyElement {",
+// "}",
+// ""]));
+// resolveTagDart();
+// JUnitTestCase.assertNotNull(tagDartElement);
+// JUnitTestCase.assertEquals("my-element", tagDartElement.name);
+// JUnitTestCase.assertEquals(findTagDartOffset("my-element') // marker"), tagDartElement.nameOffset);
+// }
+// static dartSuite() {
+// _ut.group('PolymerCompilationUnitBuilderTest', () {
+// _ut.test('test_badAnnotation_noArguments', () {
+// final __test = new PolymerCompilationUnitBuilderTest();
+// runJUnitTest(__test, __test.test_badAnnotation_noArguments);
+// });
+// _ut.test('test_badAnnotation_notConstructor', () {
+// final __test = new PolymerCompilationUnitBuilderTest();
+// runJUnitTest(__test, __test.test_badAnnotation_notConstructor);
+// });
+// _ut.test('test_customTag', () {
+// final __test = new PolymerCompilationUnitBuilderTest();
+// runJUnitTest(__test, __test.test_customTag);
+// });
+// });
+// }
+// }
+// /**
+// * Test for [PolymerHtmlUnitBuilder].
+// */
+// class PolymerHtmlUnitBuilderTest extends PolymerTest {
+// void test_buildTagHtmlElement_bad_script_noSuchCustomTag() {
+// addTagDartSource(EngineTestCase.createSource([
+// "import 'polymer.dart';",
+// "",
+// "@CustomTag('other-name')",
+// "class MyElement {",
+// "}",
+// ""]));
+// addTagHtmlSource(EngineTestCase.createSource([
+// "<!DOCTYPE html>",
+// "",
+// "<polymer-element name='my-element'>",
+// " <template>",
+// " <div>Hello!</div>",
+// " </template>",
+// " <script type='application/dart' src='my-element.dart'></script>",
+// "</polymer-element>",
+// ""]));
+// resolveTagDart();
+// resolveTagHtml();
+// // HTML part is resolved
+// JUnitTestCase.assertNotNull(tagHtmlElement);
+// // ...but no Dart part found
+// JUnitTestCase.assertNull(tagHtmlElement.dartElement);
+// }
+// void test_buildTagHtmlElement_bad_script_notResolved() {
+// addTagHtmlSource(EngineTestCase.createSource([
+// "<!DOCTYPE html>",
+// "",
+// "<polymer-element name='my-element'>",
+// " <template>",
+// " <div>Hello!</div>",
+// " </template>",
+// " <script type='application/dart' src='no-such-file.dart'></script>",
+// "</polymer-element>",
+// ""]));
+// resolveTagHtml();
+// // HTML part is resolved
+// JUnitTestCase.assertNotNull(tagHtmlElement);
+// JUnitTestCase.assertNull(tagHtmlElement.dartElement);
+// }
+// void test_buildTagHtmlElement_error_AttributeFieldNotPublished() {
+// addTagDartSource(EngineTestCase.createSource([
+// "import 'polymer.dart';",
+// "",
+// "const otherAnnotation = null;",
+// "",
+// "@CustomTag('my-element') // marker",
+// "class MyElement {",
+// " @otherAnnotation",
+// " String attr;",
+// "}",
+// ""]));
+// addTagHtmlSource(EngineTestCase.createSource([
+// "<!DOCTYPE html>",
+// "",
+// "<polymer-element name='my-element' attributes='attr'>",
+// " <template>",
+// " <div>Hello!</div>",
+// " </template>",
+// " <script type='application/dart' src='my-element.dart'></script>",
+// "</polymer-element>",
+// ""]));
+// resolveTagDart();
+// resolveTagHtml();
+// assertNoErrorsTagDart();
+// assertErrors(tagHtmlSource, [PolymerCode.ATTRIBUTE_FIELD_NOT_PUBLISHED]);
+// // Dart and HTML parts are resolved
+// JUnitTestCase.assertNotNull(tagDartElement);
+// JUnitTestCase.assertNotNull(tagHtmlElement);
+// // attribute is still created
+// List<PolymerAttributeElement> attributes = tagHtmlElement.attributes;
+// EngineTestCase.assertLength(1, attributes);
+// {
+// PolymerAttributeElement attribute = attributes[0];
+// JUnitTestCase.assertEquals("attr", attribute.name);
+// JUnitTestCase.assertNotNull(attribute.field);
+// }
+// }
+// void test_buildTagHtmlElement_error_DuplicateAttributeDefinition() {
+// addTagDartSource(EngineTestCase.createSource([
+// "import 'polymer.dart';",
+// "",
+// "@CustomTag('my-element') // marker",
+// "class MyElement {",
+// " @published String attr;",
+// "}",
+// ""]));
+// addTagHtmlSource(EngineTestCase.createSource([
+// "<!DOCTYPE html>",
+// "",
+// "<polymer-element name='my-element' attributes='attr attr'>",
+// " <template>",
+// " <div>Hello!</div>",
+// " </template>",
+// " <script type='application/dart' src='my-element.dart'></script>",
+// "</polymer-element>",
+// ""]));
+// resolveTagDart();
+// resolveTagHtml();
+// assertNoErrorsTagDart();
+// assertErrors(tagHtmlSource, [PolymerCode.DUPLICATE_ATTRIBUTE_DEFINITION]);
+// // Dart and HTML parts are resolved
+// JUnitTestCase.assertNotNull(tagDartElement);
+// JUnitTestCase.assertNotNull(tagHtmlElement);
+// // attribute is still created
+// List<PolymerAttributeElement> attributes = tagHtmlElement.attributes;
+// EngineTestCase.assertLength(1, attributes);
+// {
+// PolymerAttributeElement attribute = attributes[0];
+// JUnitTestCase.assertEquals("attr", attribute.name);
+// JUnitTestCase.assertNotNull(attribute.field);
+// }
+// }
+// void test_buildTagHtmlElement_error_EmptyAttributes() {
+// addTagDartSource(EngineTestCase.createSource([
+// "import 'polymer.dart';",
+// "",
+// "@CustomTag('my-element') // marker",
+// "class MyElement {",
+// "}",
+// ""]));
+// addTagHtmlSource(EngineTestCase.createSource([
+// "<!DOCTYPE html>",
+// "",
+// "<polymer-element name='my-element' attributes=''>",
+// " <template>",
+// " <div>Hello!</div>",
+// " </template>",
+// " <script type='application/dart' src='my-element.dart'></script>",
+// "</polymer-element>",
+// ""]));
+// resolveTagDart();
+// resolveTagHtml();
+// assertNoErrorsTagDart();
+// assertErrors(tagHtmlSource, [PolymerCode.EMPTY_ATTRIBUTES]);
+// // Dart and HTML parts are resolved
+// JUnitTestCase.assertNotNull(tagDartElement);
+// JUnitTestCase.assertNotNull(tagHtmlElement);
+// // no attributes
+// List<PolymerAttributeElement> attributes = tagHtmlElement.attributes;
+// EngineTestCase.assertLength(0, attributes);
+// }
+// void test_buildTagHtmlElement_error_InvalidAttributeName() {
+// addTagDartSource(EngineTestCase.createSource([
+// "import 'polymer.dart';",
+// "",
+// "@CustomTag('my-element') // marker",
+// "class MyElement {",
+// " @published String goodAttr;",
+// "}",
+// ""]));
+// addTagHtmlSource(EngineTestCase.createSource([
+// "<!DOCTYPE html>",
+// "",
+// "<polymer-element name='my-element' attributes='1badAttr goodAttr'>",
+// " <template>",
+// " <div>Hello!</div>",
+// " </template>",
+// " <script type='application/dart' src='my-element.dart'></script>",
+// "</polymer-element>",
+// ""]));
+// resolveTagDart();
+// resolveTagHtml();
+// assertNoErrorsTagDart();
+// assertErrors(tagHtmlSource, [PolymerCode.INVALID_ATTRIBUTE_NAME]);
+// // Dart and HTML parts are resolved
+// JUnitTestCase.assertNotNull(tagDartElement);
+// JUnitTestCase.assertNotNull(tagHtmlElement);
+// // one attribute is still created
+// List<PolymerAttributeElement> attributes = tagHtmlElement.attributes;
+// EngineTestCase.assertLength(1, attributes);
+// {
+// PolymerAttributeElement attribute = attributes[0];
+// JUnitTestCase.assertEquals("goodAttr", attribute.name);
+// }
+// }
+// void test_buildTagHtmlElement_error_InvalidTagName() {
+// addTagHtmlSource(EngineTestCase.createSource([
+// "<!DOCTYPE html>",
+// "",
+// "<polymer-element name='invalid name'>",
+// " <template>",
+// " <div>Hello!</div>",
+// " </template>",
+// "</polymer-element>",
+// ""]));
+// resolveTagHtml();
+// assertErrors(tagHtmlSource, [PolymerCode.INVALID_TAG_NAME]);
+// JUnitTestCase.assertNull(tagHtmlElement);
+// }
+// void test_buildTagHtmlElement_error_InvalidTagName_noValue() {
+// addTagHtmlSource(EngineTestCase.createSource([
+// "<!DOCTYPE html>",
+// "",
+// "<polymer-element name>",
+// " <template>",
+// " <div>Hello!</div>",
+// " </template>",
+// "</polymer-element>",
+// ""]));
+// resolveTagHtml();
+// assertErrors(tagHtmlSource, [PolymerCode.INVALID_TAG_NAME]);
+// JUnitTestCase.assertNull(tagHtmlElement);
+// }
+// void test_buildTagHtmlElement_error_MissingTagName() {
+// addTagHtmlSource(EngineTestCase.createSource([
+// "<!DOCTYPE html>",
+// "",
+// "<polymer-element>",
+// " <template>",
+// " <div>Hello!</div>",
+// " </template>",
+// "</polymer-element>",
+// ""]));
+// resolveTagHtml();
+// assertErrors(tagHtmlSource, [PolymerCode.MISSING_TAG_NAME]);
+// JUnitTestCase.assertNull(tagHtmlElement);
+// }
+// void test_buildTagHtmlElement_error_UndefinedAttributeField() {
+// addTagDartSource(EngineTestCase.createSource([
+// "import 'polymer.dart';",
+// "",
+// "@CustomTag('my-element') // marker",
+// "class MyElement {",
+// "}",
+// ""]));
+// addTagHtmlSource(EngineTestCase.createSource([
+// "<!DOCTYPE html>",
+// "",
+// "<polymer-element name='my-element' attributes='attr'>",
+// " <template>",
+// " <div>Hello!</div>",
+// " </template>",
+// " <script type='application/dart' src='my-element.dart'></script>",
+// "</polymer-element>",
+// ""]));
+// resolveTagDart();
+// resolveTagHtml();
+// assertNoErrorsTagDart();
+// assertErrors(tagHtmlSource, [PolymerCode.UNDEFINED_ATTRIBUTE_FIELD]);
+// // Dart and HTML parts are resolved
+// JUnitTestCase.assertNotNull(tagDartElement);
+// JUnitTestCase.assertNotNull(tagHtmlElement);
+// // attribute is still created
+// List<PolymerAttributeElement> attributes = tagHtmlElement.attributes;
+// EngineTestCase.assertLength(1, attributes);
+// {
+// PolymerAttributeElement attribute = attributes[0];
+// JUnitTestCase.assertEquals("attr", attribute.name);
+// JUnitTestCase.assertNull(attribute.field);
+// }
+// }
+// void test_buildTagHtmlElement_OK() {
+// addTagDartSource(EngineTestCase.createSource([
+// "import 'polymer.dart';",
+// "",
+// "@CustomTag('my-element') // marker",
+// "class MyElement {",
+// " @published String attrA;",
+// " @published String attrB;",
+// "}",
+// ""]));
+// addTagHtmlSource(EngineTestCase.createSource([
+// "<!DOCTYPE html>",
+// "",
+// "<polymer-element name='my-element' attributes='attrA attrB'>",
+// " <template>",
+// " <div>Hello!</div>",
+// " </template>",
+// " <script type='application/dart' src='my-element.dart'></script>",
+// "</polymer-element>",
+// ""]));
+// resolveTagDart();
+// resolveTagHtml();
+// assertNoErrorsTag();
+// // Dart and HTML parts are resolved
+// JUnitTestCase.assertNotNull(tagDartElement);
+// JUnitTestCase.assertNotNull(tagHtmlElement);
+// JUnitTestCase.assertEquals("my-element", tagDartElement.name);
+// JUnitTestCase.assertEquals("my-element", tagHtmlElement.name);
+// JUnitTestCase.assertEquals(findTagHtmlOffset("my-element' attributes="), tagHtmlElement.nameOffset);
+// // Dart and HTML parts should point at each other
+// JUnitTestCase.assertSame(tagDartElement, tagHtmlElement.dartElement);
+// JUnitTestCase.assertSame(tagHtmlElement, tagDartElement.htmlElement);
+// // check attributes
+// List<PolymerAttributeElement> attributes = tagHtmlElement.attributes;
+// EngineTestCase.assertLength(2, attributes);
+// {
+// PolymerAttributeElement attribute = attributes[0];
+// JUnitTestCase.assertEquals("attrA", attribute.name);
+// JUnitTestCase.assertEquals(findTagHtmlOffset("attrA "), attribute.nameOffset);
+// FieldElement field = attribute.field;
+// JUnitTestCase.assertNotNull(field);
+// JUnitTestCase.assertEquals("attrA", field.name);
+// }
+// {
+// PolymerAttributeElement attribute = attributes[1];
+// JUnitTestCase.assertEquals("attrB", attribute.name);
+// JUnitTestCase.assertEquals(findTagHtmlOffset("attrB'>"), attribute.nameOffset);
+// FieldElement field = attribute.field;
+// JUnitTestCase.assertNotNull(field);
+// JUnitTestCase.assertEquals("attrB", field.name);
+// }
+// }
+// void test_buildTagHtmlElement_OK_noScript() {
+// addTagHtmlSource(EngineTestCase.createSource([
+// "<!DOCTYPE html>",
+// "",
+// "<polymer-element name='my-element'>",
+// " <template>",
+// " <div>Hello!</div>",
+// " </template>",
+// "</polymer-element>",
+// ""]));
+// resolveTagHtml();
+// assertNoErrorsTagHtml();
+// // HTML part is resolved
+// JUnitTestCase.assertNotNull(tagHtmlElement);
+// JUnitTestCase.assertNull(tagHtmlElement.dartElement);
+// }
+// void test_isValidAttributeName() {
+// // empty
+// JUnitTestCase.assertFalse(PolymerHtmlUnitBuilder.isValidAttributeName(""));
+// // invalid first character
+// JUnitTestCase.assertFalse(PolymerHtmlUnitBuilder.isValidAttributeName(" "));
+// JUnitTestCase.assertFalse(PolymerHtmlUnitBuilder.isValidAttributeName("-"));
+// JUnitTestCase.assertFalse(PolymerHtmlUnitBuilder.isValidAttributeName("0"));
+// // invalid character in the middle
+// JUnitTestCase.assertFalse(PolymerHtmlUnitBuilder.isValidAttributeName("a&"));
+// JUnitTestCase.assertFalse(PolymerHtmlUnitBuilder.isValidAttributeName("a-b"));
+// // OK
+// JUnitTestCase.assertTrue(PolymerHtmlUnitBuilder.isValidAttributeName("a"));
+// JUnitTestCase.assertTrue(PolymerHtmlUnitBuilder.isValidAttributeName("bb"));
+// }
+// void test_isValidTagName() {
+// // empty
+// JUnitTestCase.assertFalse(PolymerHtmlUnitBuilder.isValidTagName(""));
+// // invalid first character
+// JUnitTestCase.assertFalse(PolymerHtmlUnitBuilder.isValidTagName(" "));
+// JUnitTestCase.assertFalse(PolymerHtmlUnitBuilder.isValidTagName("-"));
+// JUnitTestCase.assertFalse(PolymerHtmlUnitBuilder.isValidTagName("0"));
+// JUnitTestCase.assertFalse(PolymerHtmlUnitBuilder.isValidTagName("&"));
+// // invalid character in the middle
+// JUnitTestCase.assertFalse(PolymerHtmlUnitBuilder.isValidTagName("a&"));
+// // no '-'
+// JUnitTestCase.assertFalse(PolymerHtmlUnitBuilder.isValidTagName("a"));
+// // forbidden names
+// JUnitTestCase.assertFalse(PolymerHtmlUnitBuilder.isValidTagName("annotation-xml"));
+// JUnitTestCase.assertFalse(PolymerHtmlUnitBuilder.isValidTagName("color-profile"));
+// JUnitTestCase.assertFalse(PolymerHtmlUnitBuilder.isValidTagName("font-face"));
+// JUnitTestCase.assertFalse(PolymerHtmlUnitBuilder.isValidTagName("font-face-src"));
+// JUnitTestCase.assertFalse(PolymerHtmlUnitBuilder.isValidTagName("font-face-uri"));
+// JUnitTestCase.assertFalse(PolymerHtmlUnitBuilder.isValidTagName("font-face-format"));
+// JUnitTestCase.assertFalse(PolymerHtmlUnitBuilder.isValidTagName("font-face-name"));
+// JUnitTestCase.assertFalse(PolymerHtmlUnitBuilder.isValidTagName("missing-glyph"));
+// // OK
+// JUnitTestCase.assertTrue(PolymerHtmlUnitBuilder.isValidTagName("a-b"));
+// JUnitTestCase.assertTrue(PolymerHtmlUnitBuilder.isValidTagName("a-b-c"));
+// JUnitTestCase.assertTrue(PolymerHtmlUnitBuilder.isValidTagName("aaa-bbb"));
+// }
+// static dartSuite() {
+// _ut.group('PolymerHtmlUnitBuilderTest', () {
+// _ut.test('test_buildTagHtmlElement_OK', () {
+// final __test = new PolymerHtmlUnitBuilderTest();
+// runJUnitTest(__test, __test.test_buildTagHtmlElement_OK);
+// });
+// _ut.test('test_buildTagHtmlElement_OK_noScript', () {
+// final __test = new PolymerHtmlUnitBuilderTest();
+// runJUnitTest(__test, __test.test_buildTagHtmlElement_OK_noScript);
+// });
+// _ut.test('test_buildTagHtmlElement_bad_script_noSuchCustomTag', () {
+// final __test = new PolymerHtmlUnitBuilderTest();
+// runJUnitTest(__test, __test.test_buildTagHtmlElement_bad_script_noSuchCustomTag);
+// });
+// _ut.test('test_buildTagHtmlElement_bad_script_notResolved', () {
+// final __test = new PolymerHtmlUnitBuilderTest();
+// runJUnitTest(__test, __test.test_buildTagHtmlElement_bad_script_notResolved);
+// });
+// _ut.test('test_buildTagHtmlElement_error_AttributeFieldNotPublished', () {
+// final __test = new PolymerHtmlUnitBuilderTest();
+// runJUnitTest(__test, __test.test_buildTagHtmlElement_error_AttributeFieldNotPublished);
+// });
+// _ut.test('test_buildTagHtmlElement_error_DuplicateAttributeDefinition', () {
+// final __test = new PolymerHtmlUnitBuilderTest();
+// runJUnitTest(__test, __test.test_buildTagHtmlElement_error_DuplicateAttributeDefinition);
+// });
+// _ut.test('test_buildTagHtmlElement_error_EmptyAttributes', () {
+// final __test = new PolymerHtmlUnitBuilderTest();
+// runJUnitTest(__test, __test.test_buildTagHtmlElement_error_EmptyAttributes);
+// });
+// _ut.test('test_buildTagHtmlElement_error_InvalidAttributeName', () {
+// final __test = new PolymerHtmlUnitBuilderTest();
+// runJUnitTest(__test, __test.test_buildTagHtmlElement_error_InvalidAttributeName);
+// });
+// _ut.test('test_buildTagHtmlElement_error_InvalidTagName', () {
+// final __test = new PolymerHtmlUnitBuilderTest();
+// runJUnitTest(__test, __test.test_buildTagHtmlElement_error_InvalidTagName);
+// });
+// _ut.test('test_buildTagHtmlElement_error_InvalidTagName_noValue', () {
+// final __test = new PolymerHtmlUnitBuilderTest();
+// runJUnitTest(__test, __test.test_buildTagHtmlElement_error_InvalidTagName_noValue);
+// });
+// _ut.test('test_buildTagHtmlElement_error_MissingTagName', () {
+// final __test = new PolymerHtmlUnitBuilderTest();
+// runJUnitTest(__test, __test.test_buildTagHtmlElement_error_MissingTagName);
+// });
+// _ut.test('test_buildTagHtmlElement_error_UndefinedAttributeField', () {
+// final __test = new PolymerHtmlUnitBuilderTest();
+// runJUnitTest(__test, __test.test_buildTagHtmlElement_error_UndefinedAttributeField);
+// });
+// _ut.test('test_isValidAttributeName', () {
+// final __test = new PolymerHtmlUnitBuilderTest();
+// runJUnitTest(__test, __test.test_isValidAttributeName);
+// });
+// _ut.test('test_isValidTagName', () {
+// final __test = new PolymerHtmlUnitBuilderTest();
+// runJUnitTest(__test, __test.test_isValidTagName);
+// });
+// });
+// }
+// }
+// abstract class PolymerTest extends EngineTestCase {
+// /**
+// * @return the offset of given <code>search</code> string in <code>contents</code>. Fails test if
+// * not found.
+// */
+// static int findOffset(String contents, String search) {
+// int offset = contents.indexOf(search);
+// assertThat(offset).describedAs(contents).isNotEqualTo(-1);
+// return offset;
+// }
+// AnalysisContextHelper contextHelper = new AnalysisContextHelper();
+// AnalysisContext context;
+// Source tagDartSource;
+// String tagDartContents;
+// Source tagHtmlSource;
+// String tagHtmlContents;
+// CompilationUnitElement tagDartUnitElement;
+// HtmlElement tagHtmlUnitElement;
+// PolymerTagDartElement tagDartElement;
+// PolymerTagHtmlElement tagHtmlElement;
+// void addTagDartSource(String contents) {
+// tagDartContents = contents;
+// tagDartSource = contextHelper.addSource("/my-element.dart", contents);
+// }
+// void addTagHtmlSource(String contents) {
+// tagHtmlContents = contents;
+// tagHtmlSource = contextHelper.addSource("/my-element.html", contents);
+// }
+// /**
+// * Assert that the number of errors reported against the given source matches the number of errors
+// * that are given and that they have the expected error codes. The order in which the errors were
+// * gathered is ignored.
+// *
+// * @param source the source against which the errors should have been reported
+// * @param expectedErrorCodes the error codes of the errors that should have been reported
+// * @throws AnalysisException if the reported errors could not be computed
+// * @throws AssertionFailedError if a different number of errors have been reported than were
+// * expected
+// */
+// void assertErrors(Source source, List<ErrorCode> expectedErrorCodes) {
+// GatheringErrorListener errorListener = new GatheringErrorListener();
+// AnalysisErrorInfo errorsInfo = context.getErrors(source);
+// for (AnalysisError error in errorsInfo.errors) {
+// errorListener.onError(error);
+// }
+// errorListener.assertErrorsWithCodes(expectedErrorCodes);
+// }
+// void assertNoErrorsTag() {
+// assertNoErrorsTagDart();
+// assertNoErrorsTagHtml();
+// }
+// void assertNoErrorsTagDart() {
+// assertErrors(tagDartSource, []);
+// }
+// void assertNoErrorsTagHtml() {
+// assertErrors(tagHtmlSource, []);
+// }
+// /**
+// * @return the offset of given <code>search</code> string in [tagDartContents]. Fails test
+// * if not found.
+// */
+// int findTagDartOffset(String search) => findOffset(tagDartContents, search);
+// /**
+// * @return the offset of given <code>search</code> string in [tagHtmlContents]. Fails test
+// * if not found.
+// */
+// int findTagHtmlOffset(String search) => findOffset(tagHtmlContents, search);
+// void resolveTagDart() {
+// contextHelper.runTasks();
+// tagDartUnitElement = contextHelper.getDefiningUnitElement(tagDartSource);
+// // try to find a PolymerTagDartElement
+// for (ClassElement classElement in tagDartUnitElement.types) {
+// for (ToolkitObjectElement toolkitObject in classElement.toolkitObjects) {
+// if (toolkitObject is PolymerTagDartElement) {
+// tagDartElement = toolkitObject as PolymerTagDartElement;
+// }
+// }
+// }
+// }
+// void resolveTagHtml() {
+// contextHelper.runTasks();
+// tagHtmlUnitElement = context.getHtmlElement(tagHtmlSource);
+// // try to find a PolymerTagHtmlElement
+// List<PolymerTagHtmlElement> polymerTags = tagHtmlUnitElement.polymerTags;
+// if (polymerTags.length != 0) {
+// tagHtmlElement = polymerTags[0];
+// }
+// }
+// @override
+// void setUp() {
+// super.setUp();
+// _configureForPolymer(contextHelper);
+// context = contextHelper.context;
+// }
+// @override
+// void tearDown() {
+// contextHelper = null;
+// context = null;
+// tagDartSource = null;
+// tagDartContents = null;
+// tagHtmlSource = null;
+// tagHtmlContents = null;
+// tagDartUnitElement = null;
+// tagHtmlUnitElement = null;
+// tagDartElement = null;
+// tagHtmlElement = null;
+// super.tearDown();
+// }
+// void _configureForPolymer(AnalysisContextHelper contextHelper) {
+// contextHelper.addSource("/polymer.dart", EngineTestCase.createSource([
+// "library polymer;",
+// "",
+// "class CustomTag {",
+// " final String tagName;",
+// " const CustomTag(this.tagName);",
+// "}",
+// "",
+// "class ObservableProperty {",
+// " const ObservableProperty();",
+// "}",
+// "const ObservableProperty observable = const ObservableProperty();",
+// "",
+// "class PublishedProperty extends ObservableProperty {",
+// " const PublishedProperty();",
+// "}",
+// "const published = const PublishedProperty();",
+// ""]));
+// }
+// }
+// class ReferenceFinderTest extends EngineTestCase {
+// DirectedGraph<AstNode> _referenceGraph;
+// HashMap<VariableElement, VariableDeclaration> _variableDeclarationMap;
+// HashMap<ConstructorElement, ConstructorDeclaration> _constructorDeclarationMap;
+// VariableDeclaration _head;
+// AstNode _tail;
+// void test_visitInstanceCreationExpression_const() {
+// _visitNode(_makeTailConstructor("A", true, true, true));
+// _assertOneArc(_tail);
+// }
+// void test_visitInstanceCreationExpression_nonConstDeclaration() {
+// // In the source:
+// // const x = const A();
+// // x depends on "const A()" even if the A constructor isn't declared as const.
+// _visitNode(_makeTailConstructor("A", false, true, true));
+// _assertOneArc(_tail);
+// }
+// void test_visitInstanceCreationExpression_nonConstUsage() {
+// _visitNode(_makeTailConstructor("A", true, false, true));
+// _assertNoArcs();
+// }
+// void test_visitInstanceCreationExpression_notInMap() {
+// // In the source:
+// // const x = const A();
+// // x depends on "const A()" even if the AST for the A constructor isn't available.
+// _visitNode(_makeTailConstructor("A", true, true, false));
+// _assertOneArc(_tail);
+// }
+// void test_visitSimpleIdentifier_const() {
+// _visitNode(_makeTailVariable("v2", true, true));
+// _assertOneArc(_tail);
+// }
+// void test_visitSimpleIdentifier_nonConst() {
+// _visitNode(_makeTailVariable("v2", false, true));
+// _assertNoArcs();
+// }
+// void test_visitSimpleIdentifier_notInMap() {
+// _visitNode(_makeTailVariable("v2", true, false));
+// _assertNoArcs();
+// }
+// void test_visitSuperConstructorInvocation_const() {
+// _visitNode(_makeTailSuperConstructorInvocation("A", true, true));
+// _assertOneArc(_tail);
+// }
+// void test_visitSuperConstructorInvocation_nonConst() {
+// _visitNode(_makeTailSuperConstructorInvocation("A", false, true));
+// _assertNoArcs();
+// }
+// void test_visitSuperConstructorInvocation_notInMap() {
+// _visitNode(_makeTailSuperConstructorInvocation("A", true, false));
+// _assertNoArcs();
+// }
+// void test_visitSuperConstructorInvocation_unresolved() {
+// SuperConstructorInvocation superConstructorInvocation = AstFactory.superConstructorInvocation([]);
+// _tail = superConstructorInvocation;
+// _visitNode(superConstructorInvocation);
+// _assertNoArcs();
+// }
+// @override
+// void setUp() {
+// _referenceGraph = new DirectedGraph<AstNode>();
+// _variableDeclarationMap = new HashMap<VariableElement, VariableDeclaration>();
+// _constructorDeclarationMap = new HashMap<ConstructorElement, ConstructorDeclaration>();
+// _head = AstFactory.variableDeclaration("v1");
+// }
+// void _assertNoArcs() {
+// Set<AstNode> tails = _referenceGraph.getTails(_head);
+// EngineTestCase.assertSizeOfSet(0, tails);
+// }
+// void _assertOneArc(AstNode tail) {
+// Set<AstNode> tails = _referenceGraph.getTails(_head);
+// EngineTestCase.assertSizeOfSet(1, tails);
+// JUnitTestCase.assertSame(tail, new JavaIterator(tails).next());
+// }
+// ReferenceFinder _createReferenceFinder(AstNode source) => new ReferenceFinder(source, _referenceGraph, _variableDeclarationMap, _constructorDeclarationMap);
+// InstanceCreationExpression _makeTailConstructor(String name, bool isConstDeclaration, bool isConstUsage, bool inMap) {
+// List<ConstructorInitializer> initializers = new List<ConstructorInitializer>();
+// ConstructorDeclaration constructorDeclaration = AstFactory.constructorDeclaration(AstFactory.identifier3(name), null, AstFactory.formalParameterList([]), initializers);
+// if (isConstDeclaration) {
+// constructorDeclaration.constKeyword = new KeywordToken(Keyword.CONST, 0);
+// }
+// ClassElementImpl classElement = ElementFactory.classElement2(name, []);
+// SimpleIdentifier identifier = AstFactory.identifier3(name);
+// TypeName type = AstFactory.typeName3(identifier, []);
+// InstanceCreationExpression instanceCreationExpression = AstFactory.instanceCreationExpression2(isConstUsage ? Keyword.CONST : Keyword.NEW, type, []);
+// _tail = instanceCreationExpression;
+// ConstructorElementImpl constructorElement = ElementFactory.constructorElement(classElement, name, isConstDeclaration, []);
+// if (inMap) {
+// _constructorDeclarationMap[constructorElement] = constructorDeclaration;
+// }
+// instanceCreationExpression.staticElement = constructorElement;
+// return instanceCreationExpression;
+// }
+// SuperConstructorInvocation _makeTailSuperConstructorInvocation(String name, bool isConst, bool inMap) {
+// List<ConstructorInitializer> initializers = new List<ConstructorInitializer>();
+// ConstructorDeclaration constructorDeclaration = AstFactory.constructorDeclaration(AstFactory.identifier3(name), null, AstFactory.formalParameterList([]), initializers);
+// _tail = constructorDeclaration;
+// if (isConst) {
+// constructorDeclaration.constKeyword = new KeywordToken(Keyword.CONST, 0);
+// }
+// ClassElementImpl classElement = ElementFactory.classElement2(name, []);
+// SuperConstructorInvocation superConstructorInvocation = AstFactory.superConstructorInvocation([]);
+// ConstructorElementImpl constructorElement = ElementFactory.constructorElement(classElement, name, isConst, []);
+// if (inMap) {
+// _constructorDeclarationMap[constructorElement] = constructorDeclaration;
+// }
+// superConstructorInvocation.staticElement = constructorElement;
+// return superConstructorInvocation;
+// }
+// SimpleIdentifier _makeTailVariable(String name, bool isConst, bool inMap) {
+// VariableDeclaration variableDeclaration = AstFactory.variableDeclaration(name);
+// _tail = variableDeclaration;
+// VariableElementImpl variableElement = ElementFactory.localVariableElement2(name);
+// variableElement.const3 = isConst;
+// AstFactory.variableDeclarationList2(isConst ? Keyword.CONST : Keyword.VAR, [variableDeclaration]);
+// if (inMap) {
+// _variableDeclarationMap[variableElement] = variableDeclaration;
+// }
+// SimpleIdentifier identifier = AstFactory.identifier3(name);
+// identifier.staticElement = variableElement;
+// return identifier;
+// }
+// void _visitNode(AstNode node) {
+// node.accept(_createReferenceFinder(_head));
+// }
+// static dartSuite() {
+// _ut.group('ReferenceFinderTest', () {
+// _ut.test('test_visitInstanceCreationExpression_const', () {
+// final __test = new ReferenceFinderTest();
+// runJUnitTest(__test, __test.test_visitInstanceCreationExpression_const);
+// });
+// _ut.test('test_visitInstanceCreationExpression_nonConstDeclaration', () {
+// final __test = new ReferenceFinderTest();
+// runJUnitTest(__test, __test.test_visitInstanceCreationExpression_nonConstDeclaration);
+// });
+// _ut.test('test_visitInstanceCreationExpression_nonConstUsage', () {
+// final __test = new ReferenceFinderTest();
+// runJUnitTest(__test, __test.test_visitInstanceCreationExpression_nonConstUsage);
+// });
+// _ut.test('test_visitInstanceCreationExpression_notInMap', () {
+// final __test = new ReferenceFinderTest();
+// runJUnitTest(__test, __test.test_visitInstanceCreationExpression_notInMap);
+// });
+// _ut.test('test_visitSimpleIdentifier_const', () {
+// final __test = new ReferenceFinderTest();
+// runJUnitTest(__test, __test.test_visitSimpleIdentifier_const);
+// });
+// _ut.test('test_visitSimpleIdentifier_nonConst', () {
+// final __test = new ReferenceFinderTest();
+// runJUnitTest(__test, __test.test_visitSimpleIdentifier_nonConst);
+// });
+// _ut.test('test_visitSimpleIdentifier_notInMap', () {
+// final __test = new ReferenceFinderTest();
+// runJUnitTest(__test, __test.test_visitSimpleIdentifier_notInMap);
+// });
+// _ut.test('test_visitSuperConstructorInvocation_const', () {
+// final __test = new ReferenceFinderTest();
+// runJUnitTest(__test, __test.test_visitSuperConstructorInvocation_const);
+// });
+// _ut.test('test_visitSuperConstructorInvocation_nonConst', () {
+// final __test = new ReferenceFinderTest();
+// runJUnitTest(__test, __test.test_visitSuperConstructorInvocation_nonConst);
+// });
+// _ut.test('test_visitSuperConstructorInvocation_notInMap', () {
+// final __test = new ReferenceFinderTest();
+// runJUnitTest(__test, __test.test_visitSuperConstructorInvocation_notInMap);
+// });
+// _ut.test('test_visitSuperConstructorInvocation_unresolved', () {
+// final __test = new ReferenceFinderTest();
+// runJUnitTest(__test, __test.test_visitSuperConstructorInvocation_unresolved);
+// });
+// });
+// }
+// }
+// class RelativeFileResolverTest extends JUnitTestCase {
+// void test_creation() {
+// JavaFile root = FileUtilities2.createFile("/does/not/exist");
+// JavaFile directory = FileUtilities2.createFile("/does/not/exist/relative");
+// JUnitTestCase.assertNotNull(new RelativeFileUriResolver(root, [directory]));
+// }
+// void test_resolve_file() {
+// JavaFile root = FileUtilities2.createTempDir("/does/not/exist");
+// JavaFile directory = FileUtilities2.createTempDir("/does/not/exist/relative");
+// JavaFile testFile = new JavaFile.relative(directory, "exist.dart");
+// testFile.createNewFile();
+// Uri uri = new Uri("file", null, "${root.toURI().path}${JavaFile.separator}exist.dart", null, null);
+// UriResolver resolver = new RelativeFileUriResolver(root, [directory]);
+// Source result = resolver.resolveAbsolute(uri);
+// JUnitTestCase.assertNotNull(result);
+// JUnitTestCase.assertEquals(testFile.getAbsolutePath(), result.fullName);
+// }
+// void test_resolve_nonFile() {
+// JavaFile root = FileUtilities2.createFile("/does/not/exist");
+// JavaFile directory = FileUtilities2.createFile("/does/not/exist/relative");
+// UriResolver resolver = new RelativeFileUriResolver(root, [directory]);
+// Source result = resolver.resolveAbsolute(parseUriWithException("dart:core"));
+// JUnitTestCase.assertNull(result);
+// }
+// @override
+// void tearDown() {
+// FileUtilities2.deleteTempDir();
+// }
+// static dartSuite() {
+// _ut.group('RelativeFileResolverTest', () {
+// _ut.test('test_creation', () {
+// final __test = new RelativeFileResolverTest();
+// runJUnitTest(__test, __test.test_creation);
+// });
+// _ut.test('test_resolve_file', () {
+// final __test = new RelativeFileResolverTest();
+// runJUnitTest(__test, __test.test_resolve_file);
+// });
+// _ut.test('test_resolve_nonFile', () {
+// final __test = new RelativeFileResolverTest();
+// runJUnitTest(__test, __test.test_resolve_nonFile);
+// });
+// });
+// }
+// }
+// class SDKLibrariesReaderTest extends EngineTestCase {
+// void test_readFrom_dart2js() {
+// LibraryMap libraryMap = new SdkLibrariesReader(true).readFromFile(FileUtilities2.createFile("/libs.dart"), EngineTestCase.createSource([
+// "final Map<String, LibraryInfo> LIBRARIES = const <String, LibraryInfo> {",
+// " 'first' : const LibraryInfo(",
+// " 'first/first.dart',",
+// " category: 'First',",
+// " documented: true,",
+// " platforms: VM_PLATFORM,",
+// " dart2jsPath: 'first/first_dart2js.dart'),",
+// "};"]));
+// JUnitTestCase.assertNotNull(libraryMap);
+// JUnitTestCase.assertEquals(1, libraryMap.size());
+// SdkLibrary first = libraryMap.getLibrary("dart:first");
+// JUnitTestCase.assertNotNull(first);
+// JUnitTestCase.assertEquals("First", first.category);
+// JUnitTestCase.assertEquals("first/first_dart2js.dart", first.path);
+// JUnitTestCase.assertEquals("dart:first", first.shortName);
+// JUnitTestCase.assertEquals(false, first.isDart2JsLibrary);
+// JUnitTestCase.assertEquals(true, first.isDocumented);
+// JUnitTestCase.assertEquals(false, first.isImplementation);
+// JUnitTestCase.assertEquals(true, first.isVmLibrary);
+// }
+// void test_readFrom_empty() {
+// LibraryMap libraryMap = new SdkLibrariesReader(false).readFromFile(FileUtilities2.createFile("/libs.dart"), "");
+// JUnitTestCase.assertNotNull(libraryMap);
+// JUnitTestCase.assertEquals(0, libraryMap.size());
+// }
+// void test_readFrom_normal() {
+// LibraryMap libraryMap = new SdkLibrariesReader(false).readFromFile(FileUtilities2.createFile("/libs.dart"), EngineTestCase.createSource([
+// "final Map<String, LibraryInfo> LIBRARIES = const <String, LibraryInfo> {",
+// " 'first' : const LibraryInfo(",
+// " 'first/first.dart',",
+// " category: 'First',",
+// " documented: true,",
+// " platforms: VM_PLATFORM),",
+// "",
+// " 'second' : const LibraryInfo(",
+// " 'second/second.dart',",
+// " category: 'Second',",
+// " documented: false,",
+// " implementation: true,",
+// " platforms: 0),",
+// "};"]));
+// JUnitTestCase.assertNotNull(libraryMap);
+// JUnitTestCase.assertEquals(2, libraryMap.size());
+// SdkLibrary first = libraryMap.getLibrary("dart:first");
+// JUnitTestCase.assertNotNull(first);
+// JUnitTestCase.assertEquals("First", first.category);
+// JUnitTestCase.assertEquals("first/first.dart", first.path);
+// JUnitTestCase.assertEquals("dart:first", first.shortName);
+// JUnitTestCase.assertEquals(false, first.isDart2JsLibrary);
+// JUnitTestCase.assertEquals(true, first.isDocumented);
+// JUnitTestCase.assertEquals(false, first.isImplementation);
+// JUnitTestCase.assertEquals(true, first.isVmLibrary);
+// SdkLibrary second = libraryMap.getLibrary("dart:second");
+// JUnitTestCase.assertNotNull(second);
+// JUnitTestCase.assertEquals("Second", second.category);
+// JUnitTestCase.assertEquals("second/second.dart", second.path);
+// JUnitTestCase.assertEquals("dart:second", second.shortName);
+// JUnitTestCase.assertEquals(false, second.isDart2JsLibrary);
+// JUnitTestCase.assertEquals(false, second.isDocumented);
+// JUnitTestCase.assertEquals(true, second.isImplementation);
+// JUnitTestCase.assertEquals(false, second.isVmLibrary);
+// }
+// static dartSuite() {
+// _ut.group('SDKLibrariesReaderTest', () {
+// _ut.test('test_readFrom_dart2js', () {
+// final __test = new SDKLibrariesReaderTest();
+// runJUnitTest(__test, __test.test_readFrom_dart2js);
+// });
+// _ut.test('test_readFrom_empty', () {
+// final __test = new SDKLibrariesReaderTest();
+// runJUnitTest(__test, __test.test_readFrom_empty);
+// });
+// _ut.test('test_readFrom_normal', () {
+// final __test = new SDKLibrariesReaderTest();
+// runJUnitTest(__test, __test.test_readFrom_normal);
+// });
+// });
+// }
+// }
+// class SourceFactoryTest extends JUnitTestCase {
+// void test_creation() {
+// JUnitTestCase.assertNotNull(new SourceFactory([]));
+// }
+// void test_fromEncoding_invalidUri() {
+// SourceFactory factory = new SourceFactory([]);
+// try {
+// factory.fromEncoding("<:&%>");
+// JUnitTestCase.fail("Expected IllegalArgumentException");
+// } on IllegalArgumentException catch (exception) {
+// }
+// }
+// void test_fromEncoding_noResolver() {
+// SourceFactory factory = new SourceFactory([]);
+// try {
+// factory.fromEncoding("foo:/does/not/exist.dart");
+// JUnitTestCase.fail("Expected IllegalArgumentException");
+// } on IllegalArgumentException catch (exception) {
+// }
+// }
+// void test_fromEncoding_valid() {
+// String encoding = "file:/does/not/exist.dart";
+// SourceFactory factory = new SourceFactory([new UriResolver_SourceFactoryTest_test_fromEncoding_valid(encoding)]);
+// JUnitTestCase.assertNotNull(factory.fromEncoding(encoding));
+// }
+// void test_resolveUri_absolute() {
+// List<bool> invoked = [false];
+// SourceFactory factory = new SourceFactory([new UriResolver_SourceFactoryTest_test_resolveUri_absolute(invoked)]);
+// factory.resolveUri(null, "dart:core");
+// JUnitTestCase.assertTrue(invoked[0]);
+// }
+// void test_resolveUri_nonAbsolute_absolute() {
+// SourceFactory factory = new SourceFactory([new UriResolver_SourceFactoryTest_test_resolveUri_nonAbsolute_absolute()]);
+// String absolutePath = "/does/not/matter.dart";
+// Source containingSource = new FileBasedSource.con1(FileUtilities2.createFile("/does/not/exist.dart"));
+// Source result = factory.resolveUri(containingSource, absolutePath);
+// JUnitTestCase.assertEquals(FileUtilities2.createFile(absolutePath).getAbsolutePath(), result.fullName);
+// }
+// void test_resolveUri_nonAbsolute_relative() {
+// SourceFactory factory = new SourceFactory([new UriResolver_SourceFactoryTest_test_resolveUri_nonAbsolute_relative()]);
+// Source containingSource = new FileBasedSource.con1(FileUtilities2.createFile("/does/not/have.dart"));
+// Source result = factory.resolveUri(containingSource, "exist.dart");
+// JUnitTestCase.assertEquals(FileUtilities2.createFile("/does/not/exist.dart").getAbsolutePath(), result.fullName);
+// }
+// void test_restoreUri() {
+// JavaFile file1 = FileUtilities2.createFile("/some/file1.dart");
+// JavaFile file2 = FileUtilities2.createFile("/some/file2.dart");
+// Source source1 = new FileBasedSource.con1(file1);
+// Source source2 = new FileBasedSource.con1(file2);
+// Uri expected1 = parseUriWithException("http://www.google.com");
+// SourceFactory factory = new SourceFactory([new UriResolver_SourceFactoryTest_test_restoreUri(source1, expected1)]);
+// JUnitTestCase.assertSame(expected1, factory.restoreUri(source1));
+// JUnitTestCase.assertSame(null, factory.restoreUri(source2));
+// }
+// static dartSuite() {
+// _ut.group('SourceFactoryTest', () {
+// _ut.test('test_creation', () {
+// final __test = new SourceFactoryTest();
+// runJUnitTest(__test, __test.test_creation);
+// });
+// _ut.test('test_fromEncoding_invalidUri', () {
+// final __test = new SourceFactoryTest();
+// runJUnitTest(__test, __test.test_fromEncoding_invalidUri);
+// });
+// _ut.test('test_fromEncoding_noResolver', () {
+// final __test = new SourceFactoryTest();
+// runJUnitTest(__test, __test.test_fromEncoding_noResolver);
+// });
+// _ut.test('test_fromEncoding_valid', () {
+// final __test = new SourceFactoryTest();
+// runJUnitTest(__test, __test.test_fromEncoding_valid);
+// });
+// _ut.test('test_resolveUri_absolute', () {
+// final __test = new SourceFactoryTest();
+// runJUnitTest(__test, __test.test_resolveUri_absolute);
+// });
+// _ut.test('test_resolveUri_nonAbsolute_absolute', () {
+// final __test = new SourceFactoryTest();
+// runJUnitTest(__test, __test.test_resolveUri_nonAbsolute_absolute);
+// });
+// _ut.test('test_resolveUri_nonAbsolute_relative', () {
+// final __test = new SourceFactoryTest();
+// runJUnitTest(__test, __test.test_resolveUri_nonAbsolute_relative);
+// });
+// _ut.test('test_restoreUri', () {
+// final __test = new SourceFactoryTest();
+// runJUnitTest(__test, __test.test_restoreUri);
+// });
+// });
+// }
+// }
+// class StringScannerTest extends AbstractScannerTest {
+// @override
+// AbstractScanner newScanner(String input) => new StringScanner(null, input);
+// static dartSuite() {
+// _ut.group('StringScannerTest', () {
+// _ut.test('test_tokenize_attribute', () {
+// final __test = new StringScannerTest();
+// runJUnitTest(__test, __test.test_tokenize_attribute);
+// });
+// _ut.test('test_tokenize_comment', () {
+// final __test = new StringScannerTest();
+// runJUnitTest(__test, __test.test_tokenize_comment);
+// });
+// _ut.test('test_tokenize_comment_incomplete', () {
+// final __test = new StringScannerTest();
+// runJUnitTest(__test, __test.test_tokenize_comment_incomplete);
+// });
+// _ut.test('test_tokenize_comment_with_gt', () {
+// final __test = new StringScannerTest();
+// runJUnitTest(__test, __test.test_tokenize_comment_with_gt);
+// });
+// _ut.test('test_tokenize_declaration', () {
+// final __test = new StringScannerTest();
+// runJUnitTest(__test, __test.test_tokenize_declaration);
+// });
+// _ut.test('test_tokenize_declaration_malformed', () {
+// final __test = new StringScannerTest();
+// runJUnitTest(__test, __test.test_tokenize_declaration_malformed);
+// });
+// _ut.test('test_tokenize_directive_incomplete', () {
+// final __test = new StringScannerTest();
+// runJUnitTest(__test, __test.test_tokenize_directive_incomplete);
+// });
+// _ut.test('test_tokenize_directive_xml', () {
+// final __test = new StringScannerTest();
+// runJUnitTest(__test, __test.test_tokenize_directive_xml);
+// });
+// _ut.test('test_tokenize_directives_incomplete_with_newline', () {
+// final __test = new StringScannerTest();
+// runJUnitTest(__test, __test.test_tokenize_directives_incomplete_with_newline);
+// });
+// _ut.test('test_tokenize_empty', () {
+// final __test = new StringScannerTest();
+// runJUnitTest(__test, __test.test_tokenize_empty);
+// });
+// _ut.test('test_tokenize_lt', () {
+// final __test = new StringScannerTest();
+// runJUnitTest(__test, __test.test_tokenize_lt);
+// });
+// _ut.test('test_tokenize_script_embedded_tags', () {
+// final __test = new StringScannerTest();
+// runJUnitTest(__test, __test.test_tokenize_script_embedded_tags);
+// });
+// _ut.test('test_tokenize_script_embedded_tags2', () {
+// final __test = new StringScannerTest();
+// runJUnitTest(__test, __test.test_tokenize_script_embedded_tags2);
+// });
+// _ut.test('test_tokenize_script_embedded_tags3', () {
+// final __test = new StringScannerTest();
+// runJUnitTest(__test, __test.test_tokenize_script_embedded_tags3);
+// });
+// _ut.test('test_tokenize_script_partial', () {
+// final __test = new StringScannerTest();
+// runJUnitTest(__test, __test.test_tokenize_script_partial);
+// });
+// _ut.test('test_tokenize_script_partial2', () {
+// final __test = new StringScannerTest();
+// runJUnitTest(__test, __test.test_tokenize_script_partial2);
+// });
+// _ut.test('test_tokenize_script_partial3', () {
+// final __test = new StringScannerTest();
+// runJUnitTest(__test, __test.test_tokenize_script_partial3);
+// });
+// _ut.test('test_tokenize_script_ref', () {
+// final __test = new StringScannerTest();
+// runJUnitTest(__test, __test.test_tokenize_script_ref);
+// });
+// _ut.test('test_tokenize_script_with_newline', () {
+// final __test = new StringScannerTest();
+// runJUnitTest(__test, __test.test_tokenize_script_with_newline);
+// });
+// _ut.test('test_tokenize_spaces_and_newlines', () {
+// final __test = new StringScannerTest();
+// runJUnitTest(__test, __test.test_tokenize_spaces_and_newlines);
+// });
+// _ut.test('test_tokenize_string', () {
+// final __test = new StringScannerTest();
+// runJUnitTest(__test, __test.test_tokenize_string);
+// });
+// _ut.test('test_tokenize_string_partial', () {
+// final __test = new StringScannerTest();
+// runJUnitTest(__test, __test.test_tokenize_string_partial);
+// });
+// _ut.test('test_tokenize_string_single_quote', () {
+// final __test = new StringScannerTest();
+// runJUnitTest(__test, __test.test_tokenize_string_single_quote);
+// });
+// _ut.test('test_tokenize_string_single_quote_partial', () {
+// final __test = new StringScannerTest();
+// runJUnitTest(__test, __test.test_tokenize_string_single_quote_partial);
+// });
+// _ut.test('test_tokenize_tag_begin_end', () {
+// final __test = new StringScannerTest();
+// runJUnitTest(__test, __test.test_tokenize_tag_begin_end);
+// });
+// _ut.test('test_tokenize_tag_begin_only', () {
+// final __test = new StringScannerTest();
+// runJUnitTest(__test, __test.test_tokenize_tag_begin_only);
+// });
+// _ut.test('test_tokenize_tag_incomplete_with_special_characters', () {
+// final __test = new StringScannerTest();
+// runJUnitTest(__test, __test.test_tokenize_tag_incomplete_with_special_characters);
+// });
+// _ut.test('test_tokenize_tag_self_contained', () {
+// final __test = new StringScannerTest();
+// runJUnitTest(__test, __test.test_tokenize_tag_self_contained);
+// });
+// _ut.test('test_tokenize_tags_wellformed', () {
+// final __test = new StringScannerTest();
+// runJUnitTest(__test, __test.test_tokenize_tags_wellformed);
+// });
+// });
+// }
+// }
+// class TestAll {
+// static Test suite() {
+// TestSuite suite = new ExtendedTestSuite("Tests in ${TestAll.getPackage().getName()}");
+// suite.addTestSuite(ClassDeclarationTest);
+// suite.addTestSuite(ClassTypeAliasTest);
+// suite.addTestSuite(IndexExpressionTest);
+// suite.addTestSuite(NodeListTest);
+// suite.addTestSuite(SimpleIdentifierTest);
+// suite.addTestSuite(SimpleStringLiteralTest);
+// suite.addTestSuite(VariableDeclarationTest);
+// suite.addTest(com.google.dart.engine.ast.visitor.TestAll.suite());
+// return suite;
+// }
+// }
+// class TestAll {
+// static Test suite() {
+// TestSuite suite = new ExtendedTestSuite("Tests in ${TestAll.getPackage().getName()}");
+// suite.addTestSuite(ConstantEvaluatorTest);
+// suite.addTestSuite(ElementLocatorTest);
+// suite.addTestSuite(NodeLocatorTest);
+// suite.addTestSuite(ToSourceVisitorTest);
+// suite.addTestSuite(BreadthFirstVisitorTest);
+// return suite;
+// }
+// }
+// class TestAll {
+// static Test suite() {
+// TestSuite suite = new ExtendedTestSuite("Tests in ${TestAll.getPackage().getName()}");
+// suite.addTestSuite(ConstantEvaluatorTest);
+// suite.addTestSuite(DeclaredVariablesTest);
+// return suite;
+// }
+// }
+// class TestAll {
+// static Test suite() {
+// TestSuite suite = new ExtendedTestSuite("Tests in ${TestAll.getPackage().getName()}");
+// suite.addTestSuite(AnalysisDeltaTest);
+// suite.addTestSuite(ChangeSetTest);
+// return suite;
+// }
+// }
+// class TestAll {
+// static Test suite() {
+// TestSuite suite = new ExtendedTestSuite("Tests in ${TestAll.getPackage().getName()}");
+// suite.addTestSuite(ElementKindTest);
+// suite.addTest(com.google.dart.engine.element.angular.TestAll.suite());
+// return suite;
+// }
+// }
+// class TestAll {
+// static Test suite() {
+// TestSuite suite = new ExtendedTestSuite("Tests in ${TestAll.getPackage().getName()}");
+// suite.addTestSuite(AngularPropertyKindTest);
+// return suite;
+// }
+// }
+// class TestAll {
+// static Test suite() {
+// TestSuite suite = new ExtendedTestSuite("Tests in ${TestAll.getPackage().getName()}");
+// suite.addTestSuite(ErrorSeverityTest);
+// suite.addTestSuite(TodoCodeTest);
+// return suite;
+// }
+// }
+// class TestAll {
+// static Test suite() {
+// TestSuite suite = new ExtendedTestSuite("Tests in ${TestAll.getPackage().getName()}");
+// suite.addTest(com.google.dart.engine.html.ast.TestAll.suite());
+// suite.addTest(com.google.dart.engine.html.parser.TestAll.suite());
+// suite.addTest(com.google.dart.engine.html.scanner.TestAll.suite());
+// return suite;
+// }
+// }
+// class TestAll {
+// static Test suite() {
+// TestSuite suite = new ExtendedTestSuite("Tests in ${TestAll.getPackage().getName()}");
+// suite.addTest(com.google.dart.engine.html.ast.visitor.TestAll.suite());
+// return suite;
+// }
+// }
+// class TestAll {
+// static Test suite() {
+// TestSuite suite = new ExtendedTestSuite("Tests in ${TestAll.getPackage().getName()}");
+// suite.addTestSuite(ToSourceVisitorTest);
+// return suite;
+// }
+// }
+// class TestAll {
+// static Test suite() {
+// TestSuite suite = new ExtendedTestSuite("Tests in ${TestAll.getPackage().getName()}");
+// suite.addTestSuite(HtmlParserTest);
+// return suite;
+// }
+// }
+// class TestAll {
+// static Test suite() {
+// TestSuite suite = new ExtendedTestSuite("Tests in ${TestAll.getPackage().getName()}");
+// suite.addTestSuite(StringScannerTest);
+// return suite;
+// }
+// }
+// class TestAll {
+// static Test suite() {
+// TestSuite suite = new ExtendedTestSuite("Tests in ${TestAll.getPackage().getName()}");
+// suite.addTest(com.google.dart.engine.internal.builder.TestAll.suite());
+// suite.addTest(com.google.dart.engine.internal.cache.TestAll.suite());
+// suite.addTest(com.google.dart.engine.internal.constant.TestAll.suite());
+// suite.addTest(com.google.dart.engine.internal.context.TestAll.suite());
+// suite.addTest(com.google.dart.engine.internal.element.TestAll.suite());
+// suite.addTest(com.google.dart.engine.internal.error.TestAll.suite());
+// suite.addTest(com.google.dart.engine.internal.hint.TestAll.suite());
+// suite.addTest(com.google.dart.engine.internal.html.TestAll.suite());
+// suite.addTest(com.google.dart.engine.internal.index.TestAll.suite());
+// suite.addTest(com.google.dart.engine.internal.object.TestAll.suite());
+// suite.addTest(com.google.dart.engine.internal.resolver.TestAll.suite());
+// suite.addTest(com.google.dart.engine.internal.scope.TestAll.suite());
+// suite.addTest(com.google.dart.engine.internal.sdk.TestAll.suite());
+// suite.addTest(com.google.dart.engine.internal.search.TestAll.suite());
+// suite.addTest(com.google.dart.engine.internal.task.TestAll.suite());
+// suite.addTest(com.google.dart.engine.internal.type.TestAll.suite());
+// return suite;
+// }
+// }
+// class TestAll {
+// static Test suite() {
+// TestSuite suite = new ExtendedTestSuite("Tests in ${TestAll.getPackage().getName()}");
+// suite.addTestSuite(AngularCompilationUnitBuilderTest);
+// suite.addTestSuite(ElementBuilderTest);
+// suite.addTestSuite(EnumMemberBuilderTest);
+// suite.addTestSuite(HtmlUnitBuilderTest);
+// suite.addTestSuite(HtmlWarningCodeTest);
+// suite.addTestSuite(PolymerCompilationUnitBuilderTest);
+// return suite;
+// }
+// }
+// class TestAll {
+// static Test suite() {
+// TestSuite suite = new ExtendedTestSuite("Tests in ${TestAll.getPackage().getName()}");
+// suite.addTestSuite(AnalysisCacheTest);
+// suite.addTestSuite(DartEntryImplTest);
+// suite.addTestSuite(HtmlEntryImplTest);
+// suite.addTestSuite(PartitionManagerTest);
+// suite.addTestSuite(SdkCachePartitionTest);
+// suite.addTestSuite(UniversalCachePartitionTest);
+// return suite;
+// }
+// }
+// class TestAll {
+// static Test suite() {
+// TestSuite suite = new ExtendedTestSuite("Tests in ${TestAll.getPackage().getName()}");
+// suite.addTestSuite(ConstantFinderTest);
+// suite.addTestSuite(ConstantValueComputerTest);
+// suite.addTestSuite(ConstantVisitorTest);
+// suite.addTestSuite(ReferenceFinderTest);
+// return suite;
+// }
+// }
+// class TestAll {
+// static Test suite() {
+// TestSuite suite = new ExtendedTestSuite("Tests in ${TestAll.getPackage().getName()}");
+// suite.addTestSuite(AnalysisContextImplTest);
+// suite.addTestSuite(AnalysisOptionsImplTest);
+// suite.addTestSuite(IncrementalAnalysisCacheTest);
+// suite.addTestSuite(InstrumentedAnalysisContextImplTest);
+// suite.addTestSuite(WorkManagerTest);
+// return suite;
+// }
+// }
+// class TestAll {
+// static Test suite() {
+// TestSuite suite = new ExtendedTestSuite("Tests in ${TestAll.getPackage().getName()}");
+// suite.addTestSuite(ClassElementImplTest);
+// suite.addTestSuite(CompilationUnitElementImplTest);
+// suite.addTestSuite(ElementLocationImplTest);
+// suite.addTestSuite(ElementImplTest);
+// suite.addTestSuite(HtmlElementImplTest);
+// suite.addTestSuite(LibraryElementImplTest);
+// suite.addTestSuite(MultiplyDefinedElementImplTest);
+// return suite;
+// }
+// }
+// class TestAll {
+// static Test suite() {
+// TestSuite suite = new ExtendedTestSuite("Tests in ${TestAll.getPackage().getName()}");
+// suite.addTestSuite(ErrorReporterTest);
+// return suite;
+// }
+// }
+// class TestAll {
+// static Test suite() {
+// TestSuite suite = new ExtendedTestSuite("Tests in ${TestAll.getPackage().getName()}");
+// suite.addTestSuite(ExitDetectorTest);
+// return suite;
+// }
+// }
+// class TestAll {
+// static Test suite() {
+// TestSuite suite = new ExtendedTestSuite("Tests in ${TestAll.getPackage().getName()}");
+// suite.addTest(com.google.dart.engine.internal.html.angular.TestAll.suite());
+// suite.addTest(com.google.dart.engine.internal.html.polymer.TestAll.suite());
+// suite.addTestSuite(HtmlTagInfoBuilderTest);
+// return suite;
+// }
+// }
+// class TestAll {
+// static Test suite() {
+// TestSuite suite = new ExtendedTestSuite("Tests in ${TestAll.getPackage().getName()}");
+// suite.addTestSuite(AngularDartIndexContributorTest);
+// suite.addTestSuite(AngularHtmlIndexContributorTest);
+// suite.addTestSuite(AngularHtmlUnitResolverTest);
+// suite.addTestSuite(AngularHtmlUnitUtilsTest);
+// return suite;
+// }
+// }
+// class TestAll {
+// static Test suite() {
+// TestSuite suite = new ExtendedTestSuite("Tests in ${TestAll.getPackage().getName()}");
+// suite.addTestSuite(PolymerHtmlUnitBuilderTest);
+// return suite;
+// }
+// }
+// class TestAll {
+// static Test suite() {
+// TestSuite suite = new ExtendedTestSuite("Tests in ${TestAll.getPackage().getName()}");
+// suite.addTestSuite(DartObjectImplTest);
+// return suite;
+// }
+// }
+// class TestAll {
+// static Test suite() {
+// TestSuite suite = new ExtendedTestSuite("Tests in ${TestAll.getPackage().getName()}");
+// suite.addTestSuite(DeclarationMatcherTest);
+// suite.addTestSuite(ElementResolverTest);
+// suite.addTestSuite(IncrementalResolverTest);
+// suite.addTestSuite(InheritanceManagerTest);
+// suite.addTestSuite(LibraryElementBuilderTest);
+// suite.addTestSuite(LibraryTest);
+// suite.addTestSuite(StaticTypeAnalyzerTest);
+// suite.addTestSuite(SubtypeManagerTest);
+// suite.addTestSuite(TypeOverrideManagerTest);
+// suite.addTestSuite(TypeProviderImplTest);
+// suite.addTestSuite(TypeResolverVisitorTest);
+// return suite;
+// }
+// }
+// class TestAll {
+// static Test suite() {
+// TestSuite suite = new ExtendedTestSuite("Tests in ${TestAll.getPackage().getName()}");
+// suite.addTestSuite(EnclosedScopeTest);
+// suite.addTestSuite(LibraryImportScopeTest);
+// suite.addTestSuite(LibraryScopeTest);
+// suite.addTestSuite(ScopeBuilderTest);
+// suite.addTestSuite(ScopeTest);
+// return suite;
+// }
+// }
+// class TestAll {
+// static Test suite() {
+// TestSuite suite = new ExtendedTestSuite("Tests in ${TestAll.getPackage().getName()}");
+// suite.addTestSuite(SDKLibrariesReaderTest);
+// return suite;
+// }
+// }
+// class TestAll {
+// static Test suite() {
+// TestSuite suite = new ExtendedTestSuite("Tests in ${TestAll.getPackage().getName()}");
+// suite.addTestSuite(AnalysisTaskTest);
+// suite.addTestSuite(BuildDartElementModelTaskTest);
+// suite.addTestSuite(GenerateDartErrorsTaskTest);
+// suite.addTestSuite(GenerateDartHintsTaskTest);
+// suite.addTestSuite(GetContentTaskTest);
+// suite.addTestSuite(IncrementalAnalysisTaskTest);
+// suite.addTestSuite(ParseDartTaskTest);
+// suite.addTestSuite(ParseHtmlTaskTest);
+// suite.addTestSuite(ResolveDartLibraryTaskTest);
+// suite.addTestSuite(ResolveDartUnitTaskTest);
+// suite.addTestSuite(ResolveHtmlTaskTest);
+// suite.addTestSuite(ScanDartTaskTest);
+// return suite;
+// }
+// }
+// class TestAll {
+// static Test suite() {
+// TestSuite suite = new ExtendedTestSuite("Tests in ${TestAll.getPackage().getName()}");
+// suite.addTestSuite(FunctionTypeImplTest);
+// suite.addTestSuite(InterfaceTypeImplTest);
+// suite.addTestSuite(TypeParameterTypeImplTest);
+// suite.addTestSuite(VoidTypeImplTest);
+// return suite;
+// }
+// }
+// class TestAll {
+// static Test suite() {
+// TestSuite suite = new ExtendedTestSuite("Tests in ${TestAll.getPackage().getName()}");
+// suite.addTestSuite(ComplexParserTest);
+// suite.addTestSuite(ErrorParserTest);
+// suite.addTestSuite(IncrementalParserTest);
+// suite.addTestSuite(NonErrorParserTest);
+// suite.addTestSuite(RecoveryParserTest);
+// suite.addTestSuite(ResolutionCopierTest);
+// suite.addTestSuite(SimpleParserTest);
+// return suite;
+// }
+// }
+// class TestAll {
+// static Test suite() {
+// TestSuite suite = new ExtendedTestSuite("Tests in ${TestAll.getPackage().getName()}");
+// suite.addTestSuite(CompileTimeErrorCodeTest);
+// suite.addTestSuite(ErrorResolverTest);
+// suite.addTestSuite(HintCodeTest);
+// suite.addTestSuite(MemberMapTest);
+// suite.addTestSuite(NonErrorResolverTest);
+// suite.addTestSuite(NonHintCodeTest);
+// //suite.addTestSuite(PubSuggestionCodeTest.class);
+// suite.addTestSuite(SimpleResolverTest);
+// suite.addTestSuite(StaticTypeWarningCodeTest);
+// suite.addTestSuite(StaticWarningCodeTest);
+// suite.addTestSuite(StrictModeTest);
+// suite.addTestSuite(TypePropagationTest);
+// return suite;
+// }
+// }
+// class TestAll {
+// static Test suite() {
+// TestSuite suite = new ExtendedTestSuite("Tests in ${TestAll.getPackage().getName()}");
+// suite.addTestSuite(CharSequenceReaderTest);
+// suite.addTestSuite(IncrementalScannerTest);
+// suite.addTestSuite(KeywordStateTest);
+// suite.addTestSuite(ScannerTest);
+// suite.addTestSuite(TokenTypeTest);
+// return suite;
+// }
+// }
+// class TestAll {
+// static Test suite() {
+// TestSuite suite = new ExtendedTestSuite("Tests in ${TestAll.getPackage().getName()}");
+// suite.addTestSuite(DirectoryBasedDartSdkTest);
+// return suite;
+// }
+// }
+// class TestAll {
+// static Test suite() {
+// TestSuite suite = new ExtendedTestSuite("Tests in ${TestAll.getPackage().getName()}");
+// suite.addTestSuite(ContentCacheTest);
+// suite.addTestSuite(DartUriResolverTest);
+// suite.addTestSuite(ExplicitPackageUriResolverTest);
+// suite.addTestSuite(FileUriResolverTest);
+// suite.addTestSuite(NonExistingSourceTest);
+// suite.addTestSuite(PackageUriResolverTest);
+// suite.addTestSuite(RelativeFileResolverTest);
+// suite.addTestSuite(DirectoryBasedSourceContainerTest);
+// suite.addTestSuite(SourceFactoryTest);
+// suite.addTestSuite(FileBasedSourceTest);
+// suite.addTestSuite(UriKindTest);
+// return suite;
+// }
+// }
+// /**
+// * Instances of the class `TestSource` implement a source object that can be used for testing
+// * purposes.
+// */
+// class TestSource extends FileBasedSource {
+// /**
+// * The contents of the file represented by this source.
+// */
+// String _contents;
+// /**
+// * The modification stamp associated with this source.
+// */
+// int _modificationStamp = 0;
+// /**
+// * A flag indicating whether an exception should be generated when an attempt is made to access
+// * the contents of this source.
+// */
+// bool _generateExceptionOnRead = false;
+// /**
+// * The number of times that the contents of this source have been requested.
+// */
+// int _readCount = 0;
+// /**
+// * Initialize a newly created source object.
+// */
+// TestSource() : this.con1(FileUtilities2.createFile("/test.dart"), "");
+// /**
+// * Initialize a newly created source object. The source object is assumed to not be in a system
+// * library.
+// *
+// * @param file the file represented by this source
+// * @param contents the contents of the file represented by this source
+// */
+// TestSource.con1(JavaFile file, String contents) : super.con1(file) {
+// this._contents = contents;
+// _modificationStamp = JavaSystem.currentTimeMillis();
+// }
+// /**
+// * Initialize a newly created source object with the specified contents.
+// *
+// * @param contents the contents of the file represented by this source
+// */
+// TestSource.con2(String contents) : this.con1(FileUtilities2.createFile("/test.dart"), contents);
+// @override
+// int get modificationStamp => _modificationStamp;
+// /**
+// * The number of times that the contents of this source have been requested.
+// */
+// int get readCount => _readCount;
+// /**
+// * Set the contents of this source to the given contents. This has the side-effect of updating the
+// * modification stamp of the source.
+// *
+// * @param contents the new contents of this source
+// */
+// void set contents(String contents) {
+// this._contents = contents;
+// _modificationStamp = JavaSystem.currentTimeMillis();
+// }
+// /**
+// * A flag indicating whether an exception should be generated when an attempt is made to access
+// * the contents of this source.
+// */
+// void set generateExceptionOnRead(bool generate) {
+// _generateExceptionOnRead = generate;
+// }
+// @override
+// TimestampedData<String> get contentsFromFile {
+// _readCount++;
+// if (_generateExceptionOnRead) {
+// throw new JavaIOException("I/O Exception while getting the contents of ${fullName}");
+// }
+// return new TimestampedData<String>(_modificationStamp, _contents);
+// }
+// @override
+// void getContentsFromFileToReceiver(Source_ContentReceiver receiver) {
+// _readCount++;
+// if (_generateExceptionOnRead) {
+// throw new JavaIOException("I/O Exception while getting the contents of ${fullName}");
+// }
+// receiver.accept(_contents, _modificationStamp);
+// }
+// }
+// /**
+// * Instances of the class `ToSourceVisitorTest`
+// */
+// class ToSourceVisitorTest extends EngineTestCase {
+// void fail_visitHtmlScriptTagNode_attributes_content() {
+// _assertSource("<script type='application/dart'>f() {}</script>", HtmlFactory.scriptTagWithContent("f() {}", [HtmlFactory.attribute("type", "'application/dart'")]));
+// }
+// void fail_visitHtmlScriptTagNode_noAttributes_content() {
+// _assertSource("<script>f() {}</script>", HtmlFactory.scriptTagWithContent("f() {}", []));
+// }
+// void test_visitHtmlScriptTagNode_attributes_noContent() {
+// _assertSource("<script type='application/dart'/>", HtmlFactory.scriptTag([HtmlFactory.attribute("type", "'application/dart'")]));
+// }
+// void test_visitHtmlScriptTagNode_noAttributes_noContent() {
+// _assertSource("<script/>", HtmlFactory.scriptTag([]));
+// }
+// void test_visitHtmlUnit_empty() {
+// _assertSource("", new HtmlUnit(null, new List<XmlTagNode>(), null));
+// }
+// void test_visitHtmlUnit_nonEmpty() {
+// _assertSource("<html/>", new HtmlUnit(null, HtmlFactory.list([HtmlFactory.tagNode("html", [])]), null));
+// }
+// void test_visitXmlAttributeNode() {
+// _assertSource("x=y", HtmlFactory.attribute("x", "y"));
+// }
+// /**
+// * Assert that a `ToSourceVisitor` will produce the expected source when visiting the given
+// * node.
+// *
+// * @param expectedSource the source string that the visitor is expected to produce
+// * @param node the AST node being visited to produce the actual source
+// */
+// void _assertSource(String expectedSource, XmlNode node) {
+// PrintStringWriter writer = new PrintStringWriter();
+// node.accept(new ToSourceVisitor(writer));
+// JUnitTestCase.assertEquals(expectedSource, writer.toString());
+// }
+// static dartSuite() {
+// _ut.group('ToSourceVisitorTest', () {
+// _ut.test('test_visitHtmlScriptTagNode_attributes_noContent', () {
+// final __test = new ToSourceVisitorTest();
+// runJUnitTest(__test, __test.test_visitHtmlScriptTagNode_attributes_noContent);
+// });
+// _ut.test('test_visitHtmlScriptTagNode_noAttributes_noContent', () {
+// final __test = new ToSourceVisitorTest();
+// runJUnitTest(__test, __test.test_visitHtmlScriptTagNode_noAttributes_noContent);
+// });
+// _ut.test('test_visitHtmlUnit_empty', () {
+// final __test = new ToSourceVisitorTest();
+// runJUnitTest(__test, __test.test_visitHtmlUnit_empty);
+// });
+// _ut.test('test_visitHtmlUnit_nonEmpty', () {
+// final __test = new ToSourceVisitorTest();
+// runJUnitTest(__test, __test.test_visitHtmlUnit_nonEmpty);
+// });
+// _ut.test('test_visitXmlAttributeNode', () {
+// final __test = new ToSourceVisitorTest();
+// runJUnitTest(__test, __test.test_visitXmlAttributeNode);
+// });
+// });
+// }
+// }
+// class TodoCodeTest extends EngineTestCase {
+// void test_locateLineCommentTodo() {
+// _locate("//TODO", 2, 4);
+// _locate("//TODO:", 2, 5);
+// _locate("// TODO(sdsdf): ", 3, 13);
+// _locate("// TODO (sdsdf): ", 3, 14);
+// _locate("//TODO(sdsdf)", 2, 11);
+// _locate("// TODO(sdsdf): ", 4, 13);
+// }
+// void test_locateMultiLineCommentTodo() {
+// _locate("* TODO \n * foo", 2, 5);
+// _locate("*TODO:\n * foo", 1, 5);
+// _locate("*TODO(sdsdf): \n * foo", 1, 13);
+// _locate("* TODO(sdsdf)\n * foo", 2, 11);
+// _locate(" * TODO(sdsdf): \n * foo", 3, 13);
+// _locate(" * sdfsdf \n * TODO(sdsdf): \n * foo", 14, 13);
+// }
+// void test_locateMultipleComments() {
+// JavaPatternMatcher m = new JavaPatternMatcher(TodoCode.TODO_REGEX, "/**\n * TODO: foo bar\n * TODO bar baz\n*/");
+// JUnitTestCase.assertTrue(m.find());
+// JUnitTestCase.assertEquals(7, m.start(2));
+// JUnitTestCase.assertEquals(13, m.end(2) - m.start(2));
+// JUnitTestCase.assertTrue(m.find());
+// JUnitTestCase.assertEquals(24, m.start(2));
+// JUnitTestCase.assertEquals(12, m.end(2) - m.start(2));
+// JUnitTestCase.assertFalse(m.find());
+// }
+// void test_negativeLineCommentTodo() {
+// _negative("// TODOS");
+// _negative("// todo");
+// }
+// void test_negativeMultiLineCommentTodo() {
+// _negative(" * TODOS \n * foo");
+// _negative(" * todo\n * foo");
+// }
+// void _locate(String comment, int start, int length) {
+// JavaPatternMatcher m = new JavaPatternMatcher(TodoCode.TODO_REGEX, comment);
+// JUnitTestCase.assertTrue(m.find());
+// JUnitTestCase.assertEquals(start, m.start(2));
+// JUnitTestCase.assertEquals(length, m.end(2) - m.start(2));
+// }
+// void _negative(String comment) {
+// JavaPatternMatcher m = new JavaPatternMatcher(TodoCode.TODO_REGEX, comment);
+// JUnitTestCase.assertFalse(m.find());
+// }
+// static dartSuite() {
+// _ut.group('TodoCodeTest', () {
+// _ut.test('test_locateLineCommentTodo', () {
+// final __test = new TodoCodeTest();
+// runJUnitTest(__test, __test.test_locateLineCommentTodo);
+// });
+// _ut.test('test_locateMultiLineCommentTodo', () {
+// final __test = new TodoCodeTest();
+// runJUnitTest(__test, __test.test_locateMultiLineCommentTodo);
+// });
+// _ut.test('test_locateMultipleComments', () {
+// final __test = new TodoCodeTest();
+// runJUnitTest(__test, __test.test_locateMultipleComments);
+// });
+// _ut.test('test_negativeLineCommentTodo', () {
+// final __test = new TodoCodeTest();
+// runJUnitTest(__test, __test.test_negativeLineCommentTodo);
+// });
+// _ut.test('test_negativeMultiLineCommentTodo', () {
+// final __test = new TodoCodeTest();
+// runJUnitTest(__test, __test.test_negativeMultiLineCommentTodo);
+// });
+// });
+// }
+// }
+// class UriKindTest extends JUnitTestCase {
+// void test_fromEncoding() {
+// JUnitTestCase.assertSame(UriKind.DART_URI, UriKind.fromEncoding(0x64));
+// JUnitTestCase.assertSame(UriKind.FILE_URI, UriKind.fromEncoding(0x66));
+// JUnitTestCase.assertSame(UriKind.PACKAGE_URI, UriKind.fromEncoding(0x70));
+// JUnitTestCase.assertSame(null, UriKind.fromEncoding(0x58));
+// }
+// void test_getEncoding() {
+// JUnitTestCase.assertEquals(0x64, UriKind.DART_URI.encoding);
+// JUnitTestCase.assertEquals(0x66, UriKind.FILE_URI.encoding);
+// JUnitTestCase.assertEquals(0x70, UriKind.PACKAGE_URI.encoding);
+// }
+// static dartSuite() {
+// _ut.group('UriKindTest', () {
+// _ut.test('test_fromEncoding', () {
+// final __test = new UriKindTest();
+// runJUnitTest(__test, __test.test_fromEncoding);
+// });
+// _ut.test('test_getEncoding', () {
+// final __test = new UriKindTest();
+// runJUnitTest(__test, __test.test_getEncoding);
+// });
+// });
+// }
+// }
+// class UriResolver_SourceFactoryTest_test_fromEncoding_valid extends UriResolver {
+// String encoding;
+// UriResolver_SourceFactoryTest_test_fromEncoding_valid(this.encoding) : super();
+// @override
+// Source resolveAbsolute(Uri uri) {
+// if (uri.toString() == encoding) {
+// return new TestSource();
+// }
+// return null;
+// }
+// }
+// class UriResolver_SourceFactoryTest_test_resolveUri_absolute extends UriResolver {
+// List<bool> invoked;
+// UriResolver_SourceFactoryTest_test_resolveUri_absolute(this.invoked) : super();
+// @override
+// Source resolveAbsolute(Uri uri) {
+// invoked[0] = true;
+// return null;
+// }
+// }
+// class UriResolver_SourceFactoryTest_test_resolveUri_nonAbsolute_absolute extends UriResolver {
+// @override
+// Source resolveAbsolute(Uri uri) => new FileBasedSource.con2(uri, new JavaFile.fromUri(uri));
+// }
+// class UriResolver_SourceFactoryTest_test_resolveUri_nonAbsolute_relative extends UriResolver {
+// @override
+// Source resolveAbsolute(Uri uri) => new FileBasedSource.con2(uri, new JavaFile.fromUri(uri));
+// }
+// class UriResolver_SourceFactoryTest_test_restoreUri extends UriResolver {
+// Source source1;
+// Uri expected1;
+// UriResolver_SourceFactoryTest_test_restoreUri(this.source1, this.expected1) : super();
+// @override
+// Source resolveAbsolute(Uri uri) => null;
+// @override
+// Uri restoreAbsolute(Source source) {
+// if (identical(source, source1)) {
+// return expected1;
+// }
+// return null;
+// }
+// }
+// /**
+// * Instances of `XmlValidator` traverse an [XmlNode] structure and validate the node
+// * hierarchy.
+// */
+// class XmlValidator extends RecursiveXmlVisitor<Object> {
+// /**
+// * A list containing the errors found while traversing the AST structure.
+// */
+// List<String> _errors = new List<String>();
+// /**
+// * The tags to expect when visiting or `null` if tags should not be checked.
+// */
+// List<XmlValidator_Tag> _expectedTagsInOrderVisited;
+// /**
+// * The current index into the [expectedTagsInOrderVisited] array.
+// */
+// int _expectedTagsIndex = 0;
+// /**
+// * The key/value pairs to expect when visiting or `null` if attributes should not be
+// * checked.
+// */
+// List<String> _expectedAttributeKeyValuePairs;
+// /**
+// * The current index into the [expectedAttributeKeyValuePairs].
+// */
+// int _expectedAttributeIndex = 0;
+// /**
+// * Assert that no errors were found while traversing any of the AST structures that have been
+// * visited.
+// */
+// void assertValid() {
+// while (_expectedTagsIndex < _expectedTagsInOrderVisited.length) {
+// String expectedTag = _expectedTagsInOrderVisited[_expectedTagsIndex++]._tag;
+// _errors.add("Expected to visit node with tag: ${expectedTag}");
+// }
+// if (!_errors.isEmpty) {
+// PrintStringWriter writer = new PrintStringWriter();
+// writer.print("Invalid XML structure:");
+// for (String message in _errors) {
+// writer.newLine();
+// writer.print(" ");
+// writer.print(message);
+// }
+// JUnitTestCase.fail(writer.toString());
+// }
+// }
+// /**
+// * Set the tags to be expected when visiting
+// *
+// * @param expectedTags the expected tags
+// */
+// void expectTags(List<XmlValidator_Tag> expectedTags) {
+// // Flatten the hierarchy into expected order in which the tags are visited
+// List<XmlValidator_Tag> expected = new List<XmlValidator_Tag>();
+// _expectTags(expected, expectedTags);
+// this._expectedTagsInOrderVisited = new List.from(expected);
+// }
+// @override
+// Object visitHtmlUnit(HtmlUnit node) {
+// if (node.parent != null) {
+// _errors.add("HtmlUnit should not have a parent");
+// }
+// if (node.endToken.type != TokenType.EOF) {
+// _errors.add("HtmlUnit end token should be of type EOF");
+// }
+// _validateNode(node);
+// return super.visitHtmlUnit(node);
+// }
+// @override
+// Object visitXmlAttributeNode(XmlAttributeNode actual) {
+// if (actual.parent is! XmlTagNode) {
+// _errors.add("Expected ${actual.runtimeType.toString()} to have parent of type ${XmlTagNode.toString()}");
+// }
+// String actualName = actual.name;
+// String actualValue = actual.valueToken.lexeme;
+// if (_expectedAttributeIndex < _expectedAttributeKeyValuePairs.length) {
+// String expectedName = _expectedAttributeKeyValuePairs[_expectedAttributeIndex];
+// if (expectedName != actualName) {
+// _errors.add("Expected ${(_expectedTagsIndex - 1)} tag: ${_expectedTagsInOrderVisited[_expectedTagsIndex - 1]._tag} attribute ${(_expectedAttributeIndex ~/ 2)} to have name: ${expectedName} but found: ${actualName}");
+// }
+// String expectedValue = _expectedAttributeKeyValuePairs[_expectedAttributeIndex + 1];
+// if (expectedValue != actualValue) {
+// _errors.add("Expected ${(_expectedTagsIndex - 1)} tag: ${_expectedTagsInOrderVisited[_expectedTagsIndex - 1]._tag} attribute ${(_expectedAttributeIndex ~/ 2)} to have value: ${expectedValue} but found: ${actualValue}");
+// }
+// } else {
+// _errors.add("Unexpected ${(_expectedTagsIndex - 1)} tag: ${_expectedTagsInOrderVisited[_expectedTagsIndex - 1]._tag} attribute ${(_expectedAttributeIndex ~/ 2)} name: ${actualName} value: ${actualValue}");
+// }
+// _expectedAttributeIndex += 2;
+// _validateNode(actual);
+// return super.visitXmlAttributeNode(actual);
+// }
+// @override
+// Object visitXmlTagNode(XmlTagNode actual) {
+// if (!(actual.parent is HtmlUnit || actual.parent is XmlTagNode)) {
+// _errors.add("Expected ${actual.runtimeType.toString()} to have parent of type ${HtmlUnit.toString()} or ${XmlTagNode.toString()}");
+// }
+// if (_expectedTagsInOrderVisited != null) {
+// String actualTag = actual.tag;
+// if (_expectedTagsIndex < _expectedTagsInOrderVisited.length) {
+// XmlValidator_Tag expected = _expectedTagsInOrderVisited[_expectedTagsIndex];
+// if (expected._tag != actualTag) {
+// _errors.add("Expected ${_expectedTagsIndex} tag: ${expected._tag} but found: ${actualTag}");
+// }
+// _expectedAttributeKeyValuePairs = expected._attributes._keyValuePairs;
+// int expectedAttributeCount = _expectedAttributeKeyValuePairs.length ~/ 2;
+// int actualAttributeCount = actual.attributes.length;
+// if (expectedAttributeCount != actualAttributeCount) {
+// _errors.add("Expected ${_expectedTagsIndex} tag: ${expected._tag} to have ${expectedAttributeCount} attributes but found ${actualAttributeCount}");
+// }
+// _expectedAttributeIndex = 0;
+// _expectedTagsIndex++;
+// Assert.assertNotNull(actual.attributeEnd);
+// Assert.assertNotNull(actual.contentEnd);
+// int count = 0;
+// Token token = actual.attributeEnd.next;
+// Token lastToken = actual.contentEnd;
+// while (!identical(token, lastToken)) {
+// token = token.next;
+// if (++count > 1000) {
+// JUnitTestCase.fail("Expected ${_expectedTagsIndex} tag: ${expected._tag} to have a sequence of tokens from getAttributeEnd() to getContentEnd()");
+// break;
+// }
+// }
+// if (actual.attributeEnd.type == TokenType.GT) {
+// if (HtmlParser.SELF_CLOSING.contains(actual.tag)) {
+// Assert.assertNull(actual.closingTag);
+// } else {
+// Assert.assertNotNull(actual.closingTag);
+// }
+// } else if (actual.attributeEnd.type == TokenType.SLASH_GT) {
+// Assert.assertNull(actual.closingTag);
+// } else {
+// JUnitTestCase.fail("Unexpected attribute end token: ${actual.attributeEnd.lexeme}");
+// }
+// if (expected._content != null && expected._content != actual.content) {
+// _errors.add("Expected ${_expectedTagsIndex} tag: ${expected._tag} to have content '${expected._content}' but found '${actual.content}'");
+// }
+// if (expected._children.length != actual.tagNodes.length) {
+// _errors.add("Expected ${_expectedTagsIndex} tag: ${expected._tag} to have ${expected._children.length} children but found ${actual.tagNodes.length}");
+// } else {
+// for (int index = 0; index < expected._children.length; index++) {
+// String expectedChildTag = expected._children[index]._tag;
+// String actualChildTag = actual.tagNodes[index].tag;
+// if (expectedChildTag != actualChildTag) {
+// _errors.add("Expected ${_expectedTagsIndex} tag: ${expected._tag} child ${index} to have tag: ${expectedChildTag} but found: ${actualChildTag}");
+// }
+// }
+// }
+// } else {
+// _errors.add("Visited unexpected tag: ${actualTag}");
+// }
+// }
+// _validateNode(actual);
+// return super.visitXmlTagNode(actual);
+// }
+// /**
+// * Append the specified tags to the array in depth first order
+// *
+// * @param expected the array to which the tags are added (not `null`)
+// * @param expectedTags the expected tags to be added (not `null`, contains no `null`s)
+// */
+// void _expectTags(List<XmlValidator_Tag> expected, List<XmlValidator_Tag> expectedTags) {
+// for (XmlValidator_Tag tag in expectedTags) {
+// expected.add(tag);
+// _expectTags(expected, tag._children);
+// }
+// }
+// void _validateNode(XmlNode node) {
+// if (node.beginToken == null) {
+// _errors.add("No begin token for ${node.runtimeType.toString()}");
+// }
+// if (node.endToken == null) {
+// _errors.add("No end token for ${node.runtimeType.toString()}");
+// }
+// int nodeStart = node.offset;
+// int nodeLength = node.length;
+// if (nodeStart < 0 || nodeLength < 0) {
+// _errors.add("No source info for ${node.runtimeType.toString()}");
+// }
+// XmlNode parent = node.parent;
+// if (parent != null) {
+// int nodeEnd = nodeStart + nodeLength;
+// int parentStart = parent.offset;
+// int parentEnd = parentStart + parent.length;
+// if (nodeStart < parentStart) {
+// _errors.add("Invalid source start (${nodeStart}) for ${node.runtimeType.toString()} inside ${parent.runtimeType.toString()} (${parentStart})");
+// }
+// if (nodeEnd > parentEnd) {
+// _errors.add("Invalid source end (${nodeEnd}) for ${node.runtimeType.toString()} inside ${parent.runtimeType.toString()} (${parentStart})");
+// }
+// }
+// }
+// }
+// class XmlValidator_Attributes {
+// final List<String> _keyValuePairs;
+// XmlValidator_Attributes(this._keyValuePairs);
+// }
+// class XmlValidator_Tag {
+// final String _tag;
+// final XmlValidator_Attributes _attributes;
+// final String _content;
+// final List<XmlValidator_Tag> _children;
+// XmlValidator_Tag(this._tag, this._attributes, this._content, this._children);
+// }
« no previous file with comments | « pkg/analyzer/pubspec.yaml ('k') | pkg/analyzer/test/generated/engine_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698