OLD | NEW |
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 // VMOptions=--error_on_bad_type --error_on_bad_override | 4 // VMOptions=--error_on_bad_type --error_on_bad_override |
5 | 5 |
6 library get_object_rpc_test; | 6 library get_object_rpc_test; |
7 | 7 |
8 import 'dart:typed_data'; | 8 import 'dart:typed_data'; |
9 import 'dart:convert' show BASE64; | 9 import 'dart:convert' show BASE64; |
10 import 'package:observatory/service_io.dart'; | 10 import 'package:observatory/service_io.dart'; |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
79 expect(result['kind'], equals('Int')); | 79 expect(result['kind'], equals('Int')); |
80 expect(result['_vmType'], equals('Smi')); | 80 expect(result['_vmType'], equals('Smi')); |
81 expect(result['id'], equals('objects/int-123')); | 81 expect(result['id'], equals('objects/int-123')); |
82 expect(result['valueAsString'], equals('123')); | 82 expect(result['valueAsString'], equals('123')); |
83 expect(result['class']['type'], equals('@Class')); | 83 expect(result['class']['type'], equals('@Class')); |
84 expect(result['class']['name'], equals('_Smi')); | 84 expect(result['class']['name'], equals('_Smi')); |
85 expect(result['size'], isZero); | 85 expect(result['size'], isZero); |
86 expect(result['fields'], isEmpty); | 86 expect(result['fields'], isEmpty); |
87 }, | 87 }, |
88 | 88 |
| 89 // A string |
| 90 (Isolate isolate) async { |
| 91 // Call eval to get a Dart list. |
| 92 var evalResult = await eval(isolate, '"Chattanooga"'); |
| 93 var params = { |
| 94 'objectId': evalResult['id'], |
| 95 }; |
| 96 var result = await isolate.invokeRpcNoUpgrade('getObject', params); |
| 97 expect(result['type'], equals('Instance')); |
| 98 expect(result['kind'], equals('String')); |
| 99 expect(result['_vmType'], equals('String')); |
| 100 expect(result['id'], startsWith('objects/')); |
| 101 expect(result['valueAsString'], equals('Chattanooga')); |
| 102 expect(result['class']['type'], equals('@Class')); |
| 103 expect(result['class']['name'], equals('_OneByteString')); |
| 104 expect(result['size'], isPositive); |
| 105 expect(result['fields'], isEmpty); |
| 106 expect(result['length'], equals(11)); |
| 107 expect(result['offset'], isNull); |
| 108 expect(result['count'], isNull); |
| 109 }, |
| 110 |
| 111 // String prefix. |
| 112 (Isolate isolate) async { |
| 113 // Call eval to get a Dart list. |
| 114 var evalResult = await eval(isolate, '"Chattanooga"'); |
| 115 var params = { |
| 116 'objectId': evalResult['id'], |
| 117 'count': 4, |
| 118 }; |
| 119 var result = await isolate.invokeRpcNoUpgrade('getObject', params); |
| 120 expect(result['type'], equals('Instance')); |
| 121 expect(result['kind'], equals('String')); |
| 122 expect(result['_vmType'], equals('String')); |
| 123 expect(result['id'], startsWith('objects/')); |
| 124 expect(result['valueAsString'], equals('Chat')); |
| 125 expect(result['class']['type'], equals('@Class')); |
| 126 expect(result['class']['name'], equals('_OneByteString')); |
| 127 expect(result['size'], isPositive); |
| 128 expect(result['fields'], isEmpty); |
| 129 expect(result['length'], equals(11)); |
| 130 expect(result['offset'], isNull); |
| 131 expect(result['count'], equals(4)); |
| 132 }, |
| 133 |
| 134 // String subrange. |
| 135 (Isolate isolate) async { |
| 136 // Call eval to get a Dart list. |
| 137 var evalResult = await eval(isolate, '"Chattanooga"'); |
| 138 var params = { |
| 139 'objectId': evalResult['id'], |
| 140 'offset': 4, |
| 141 'count': 6, |
| 142 }; |
| 143 var result = await isolate.invokeRpcNoUpgrade('getObject', params); |
| 144 expect(result['type'], equals('Instance')); |
| 145 expect(result['kind'], equals('String')); |
| 146 expect(result['_vmType'], equals('String')); |
| 147 expect(result['id'], startsWith('objects/')); |
| 148 expect(result['valueAsString'], equals('tanoog')); |
| 149 expect(result['class']['type'], equals('@Class')); |
| 150 expect(result['class']['name'], equals('_OneByteString')); |
| 151 expect(result['size'], isPositive); |
| 152 expect(result['fields'], isEmpty); |
| 153 expect(result['length'], equals(11)); |
| 154 expect(result['offset'], equals(4)); |
| 155 expect(result['count'], equals(6)); |
| 156 }, |
| 157 |
| 158 // String with wacky offset. |
| 159 (Isolate isolate) async { |
| 160 // Call eval to get a Dart list. |
| 161 var evalResult = await eval(isolate, '"Chattanooga"'); |
| 162 var params = { |
| 163 'objectId': evalResult['id'], |
| 164 'offset': 100, |
| 165 'count': 2, |
| 166 }; |
| 167 var result = await isolate.invokeRpcNoUpgrade('getObject', params); |
| 168 expect(result['type'], equals('Instance')); |
| 169 expect(result['kind'], equals('String')); |
| 170 expect(result['_vmType'], equals('String')); |
| 171 expect(result['id'], startsWith('objects/')); |
| 172 expect(result['valueAsString'], equals('')); |
| 173 expect(result['class']['type'], equals('@Class')); |
| 174 expect(result['class']['name'], equals('_OneByteString')); |
| 175 expect(result['size'], isPositive); |
| 176 expect(result['fields'], isEmpty); |
| 177 expect(result['length'], equals(11)); |
| 178 expect(result['offset'], equals(11)); |
| 179 expect(result['count'], equals(0)); |
| 180 }, |
| 181 |
89 // A built-in List. | 182 // A built-in List. |
90 (Isolate isolate) async { | 183 (Isolate isolate) async { |
91 // Call eval to get a Dart list. | 184 // Call eval to get a Dart list. |
92 var evalResult = await eval(isolate, '[3, 2, 1]'); | 185 var evalResult = await eval(isolate, '[3, 2, 1]'); |
93 var params = { | 186 var params = { |
94 'objectId': evalResult['id'], | 187 'objectId': evalResult['id'], |
95 }; | 188 }; |
96 var result = await isolate.invokeRpcNoUpgrade('getObject', params); | 189 var result = await isolate.invokeRpcNoUpgrade('getObject', params); |
97 expect(result['type'], equals('Instance')); | 190 expect(result['type'], equals('Instance')); |
98 expect(result['kind'], equals('List')); | 191 expect(result['kind'], equals('List')); |
(...skipping 755 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
854 caughtException = true; | 947 caughtException = true; |
855 expect(e.code, equals(ServerRpcException.kInvalidParams)); | 948 expect(e.code, equals(ServerRpcException.kInvalidParams)); |
856 expect(e.message, | 949 expect(e.message, |
857 "getObject: invalid 'objectId' parameter: code/0"); | 950 "getObject: invalid 'objectId' parameter: code/0"); |
858 } | 951 } |
859 expect(caughtException, isTrue); | 952 expect(caughtException, isTrue); |
860 }, | 953 }, |
861 ]; | 954 ]; |
862 | 955 |
863 main(args) async => runIsolateTests(args, tests, testeeBefore:warmup); | 956 main(args) async => runIsolateTests(args, tests, testeeBefore:warmup); |
OLD | NEW |