blob: b5af1db566d5664881e4a39a0474c85b0a68f06d [file] [log] [blame]
// 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.
/// Test that poi.dart can serialize a scope.
library trydart.serialize_test;
import 'dart:io' show
Platform;
import 'dart:async' show
Future;
import 'dart:convert' show
JSON;
import 'package:try/poi/poi.dart' as poi;
import 'package:async_helper/async_helper.dart';
import 'package:expect/expect.dart';
import 'package:compiler/implementation/elements/elements.dart' show
Element;
import 'package:compiler/implementation/source_file_provider.dart' show
FormattingDiagnosticHandler;
Future testPoi() {
Uri script = Platform.script.resolve('data/interesting.dart');
FormattingDiagnosticHandler handler = new FormattingDiagnosticHandler();
int position = 241;
Future future = poi.runPoi(script, position, handler.provider, handler);
return future.then((Element element) {
Uri foundScript = element.compilationUnit.script.resourceUri;
Expect.stringEquals('$script', '$foundScript');
Expect.stringEquals('fisk', element.name);
Expect.stringEquals(
JSON.encode(expected),
JSON.encode(JSON.decode(poi.scopeInformation(element, position))));
});
}
void main() {
asyncTest(testPoi);
}
final expected = {
"name": "fisk",
"kind": "function",
"enclosing": {
"name": "Foo",
"kind": "class",
"members": [
{
"name": "fisk",
"kind": "function"
},
{
"name": "hest",
"kind": "function"
},
{
"name": "",
"kind": "generative_constructor"
}
],
"enclosing": {
"name": "tests/try/poi/data/interesting.dart",
"kind": "library",
"members": [
{
"name": "main",
"kind": "function"
},
{
"name": "Foo",
"kind": "class"
}
]
}
}
};