blob: 9c84cc6cbeb4e6afaf06e07ea11f3dfbcf680992 [file] [log] [blame]
// Copyright (c) 2013, 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.
library isolate_class_list_test;
import 'dart:async';
import 'test_helper.dart';
import 'package:expect/expect.dart';
class BananaClassTest {
int port;
String isolate_id;
String class_id;
BananaClassTest(this.port, this.isolate_id, this.class_id);
_testFieldA(Map field) {
Expect.equals('Field', field['type']);
Expect.equals('a', field['user_name']);
Expect.equals('a', field['name']);
Expect.equals(false, field['final']);
Expect.equals(false, field['static']);
Expect.equals(false, field['const']);
Expect.equals('dynamic', field['guard_class']);
Expect.equals(true, field['guard_nullable']);
Expect.equals('variable', field['guard_length']);
}
_testFieldFinalFixedLengthList(Map field) {
Expect.equals('Field', field['type']);
Expect.equals('final_fixed_length_list', field['user_name']);
Expect.equals('final_fixed_length_list', field['name']);
Expect.equals('Float32List', field['guard_class']['user_name']);
Expect.equals(true, field['final']);
Expect.equals(false, field['static']);
Expect.equals(false, field['const']);
Expect.equals(4, field['guard_length']);
}
_testFieldFixedLengthList(Map field) {
Expect.equals('Field', field['type']);
Expect.equals('fixed_length_list', field['user_name']);
Expect.equals('fixed_length_list', field['name']);
Expect.equals(false, field['final']);
Expect.equals(false, field['static']);
Expect.equals(false, field['const']);
Expect.equals('Float32List', field['guard_class']['user_name']);
Expect.equals('variable', field['guard_length']);
}
_testFieldName(Map field) {
Expect.equals('Field', field['type']);
Expect.equals('name', field['user_name']);
Expect.equals('name', field['name']);
Expect.equals(false, field['final']);
Expect.equals(false, field['static']);
Expect.equals(false, field['const']);
Expect.equals('String', field['guard_class']['user_name']);
Expect.equals(false, field['guard_nullable']);
Expect.equals('variable', field['guard_length']);
}
Future makeRequest() {
var fields = ['final_fixed_length_list', 'fixed_length_list', 'name', 'a'];
var helper =
new ClassFieldRequestHelper(port, isolate_id, class_id, fields);
return helper.makeRequest().then((_) {
_testFieldA(helper.fields['a']);
_testFieldFinalFixedLengthList(helper.fields['final_fixed_length_list']);
_testFieldFixedLengthList(helper.fields['fixed_length_list']);
_testFieldName(helper.fields['name']);
});
}
}
class BadBananaClassTest {
int port;
String isolate_id;
String class_id;
BadBananaClassTest(this.port, this.isolate_id, this.class_id);
_testFieldV(Map field) {
Expect.equals('Field', field['type']);
Expect.equals('v', field['user_name']);
Expect.equals('v', field['name']);
Expect.equals(false, field['final']);
Expect.equals(false, field['static']);
Expect.equals(false, field['const']);
Expect.equals('double', field['guard_class']['user_name']);
Expect.equals(true, field['guard_nullable']);
Expect.equals('variable', field['guard_length']);
}
_testFieldC(Map field) {
Expect.equals('Field', field['type']);
Expect.equals('c', field['user_name']);
Expect.equals('c', field['name']);
Expect.equals(true, field['final']);
Expect.equals(false, field['static']);
Expect.equals(true, field['final']);
Expect.equals('int', field['guard_class']['user_name']);
Expect.equals(false, field['guard_nullable']);
Expect.equals('variable', field['guard_length']);
}
_testFieldFinalFixedLengthList(Map field) {
Expect.equals('Field', field['type']);
Expect.equals('final_fixed_length_list', field['user_name']);
Expect.equals('final_fixed_length_list', field['name']);
Expect.equals('Float32List', field['guard_class']['user_name']);
Expect.equals(true, field['final']);
Expect.equals(false, field['static']);
Expect.equals(false, field['const']);
Expect.equals('variable', field['guard_length']);
}
_testFieldFixedLengthArray(Map field) {
Expect.equals('Field', field['type']);
Expect.equals('fixed_length_array', field['user_name']);
Expect.equals('fixed_length_array', field['name']);
Expect.equals('List', field['guard_class']['user_name']);
Expect.equals(true, field['final']);
Expect.equals(false, field['static']);
Expect.equals(false, field['const']);
Expect.equals(3, field['guard_length']);
}
Future makeRequest() {
var fields = ['final_fixed_length_list', 'fixed_length_array', 'v', 'c'];
var helper =
new ClassFieldRequestHelper(port, isolate_id, class_id, fields);
return helper.makeRequest().then((_) {
_testFieldV(helper.fields['v']);
_testFieldC(helper.fields['c']);
_testFieldFinalFixedLengthList(helper.fields['final_fixed_length_list']);
_testFieldFixedLengthArray(helper.fields['fixed_length_array']);
});
}
}
class ClassTableTest extends VmServiceRequestHelper {
ClassTableTest(port, id) :
super('http://127.0.0.1:$port/$id/classes/');
String banana_class_id;
String bad_banana_class_id;
onRequestCompleted(Map reply) {
ClassTableHelper helper = new ClassTableHelper(reply);
Expect.isTrue(helper.classExists('Banana'));
banana_class_id = helper.classId('Banana');
Expect.isTrue(helper.classExists('BadBanana'));
bad_banana_class_id = helper.classId('BadBanana');
}
}
class IsolateListTest extends VmServiceRequestHelper {
IsolateListTest(port) : super('http://127.0.0.1:$port/isolates');
String _isolateId;
onRequestCompleted(Map reply) {
IsolateListTester tester = new IsolateListTester(reply);
tester.checkIsolateCount(1);
tester.checkIsolateNameContains('field_script.dart');
_isolateId = tester.checkIsolateNameContains('field_script');
}
}
main() {
var process = new TestLauncher('field_script.dart');
process.launch().then((port) {
var test = new IsolateListTest(port);
test.makeRequest().then((_) {
var classTableTest = new ClassTableTest(port, test._isolateId);
classTableTest.makeRequest().then((_) {
var bananaClassTest =
new BananaClassTest(port, test._isolateId,
classTableTest.banana_class_id);
var badBananaClassTest =
new BadBananaClassTest(port, test._isolateId,
classTableTest.bad_banana_class_id);
Future.wait([bananaClassTest.makeRequest(),
badBananaClassTest.makeRequest()]).then((_) {
process.requestExit();
});
});
});
});
}