| OLD | NEW |
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, 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 | 4 |
| 5 import 'dart:async'; | 5 import 'dart:async'; |
| 6 import 'package:barback/barback.dart'; | 6 import 'package:barback/barback.dart'; |
| 7 import 'package:observe/transformer.dart'; | 7 import 'package:observe/transformer.dart'; |
| 8 import 'package:unittest/compact_vm_config.dart'; | 8 import 'package:unittest/compact_vm_config.dart'; |
| 9 import 'package:unittest/unittest.dart'; | 9 import 'package:unittest/unittest.dart'; |
| 10 import 'package:stack_trace/stack_trace.dart'; |
| 10 | 11 |
| 11 main() { | 12 main() { |
| 12 useCompactVMConfiguration(); | 13 useCompactVMConfiguration(); |
| 13 | 14 |
| 14 group('replaces Observable for ChangeNotifier', () { | 15 group('replaces Observable for ChangeNotifier', () { |
| 15 _testClause('extends Observable', 'extends ChangeNotifier'); | 16 _testClause('extends Observable', 'extends ChangeNotifier'); |
| 16 _testClause('extends Base with Observable', | 17 _testClause('extends Base with Observable', |
| 17 'extends Base with ChangeNotifier'); | 18 'extends Base with ChangeNotifier'); |
| 18 _testClause('extends Base<T> with Observable', | 19 _testClause('extends Base<T> with Observable', |
| 19 'extends Base<T> with ChangeNotifier'); | 20 'extends Base<T> with ChangeNotifier'); |
| (...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 122 var end = output.indexOf(';', begin); | 123 var end = output.indexOf(';', begin); |
| 123 if (end == -1) end = output.length; | 124 if (end == -1) end = output.length; |
| 124 var init = output.substring(begin, end).trim().replaceAll(' ', ' '); | 125 var init = output.substring(begin, end).trim().replaceAll(' ', ' '); |
| 125 expect(init, expected); | 126 expect(init, expected); |
| 126 }); | 127 }); |
| 127 }); | 128 }); |
| 128 } | 129 } |
| 129 | 130 |
| 130 /// Helper that applies the transform by creating mock assets. | 131 /// Helper that applies the transform by creating mock assets. |
| 131 Future<String> _transform(String code) { | 132 Future<String> _transform(String code) { |
| 132 var id = new AssetId('foo', 'a/b/c.dart'); | 133 return Chain.capture(() { |
| 133 var asset = new Asset.fromString(id, code); | 134 var id = new AssetId('foo', 'a/b/c.dart'); |
| 134 var transformer = new ObservableTransformer(); | 135 var asset = new Asset.fromString(id, code); |
| 135 return transformer.isPrimary(asset).then((isPrimary) { | 136 var transformer = new ObservableTransformer(); |
| 136 expect(isPrimary, isTrue); | 137 return transformer.isPrimary(asset).then((isPrimary) { |
| 137 var transform = new _MockTransform(asset); | 138 expect(isPrimary, isTrue); |
| 138 return transformer.apply(transform).then((_) { | 139 var transform = new _MockTransform(asset); |
| 139 expect(transform.outs, hasLength(1)); | 140 return transformer.apply(transform).then((_) { |
| 140 expect(transform.outs[0].id, id); | 141 expect(transform.outs, hasLength(2)); |
| 141 return transform.outs.first.readAsString(); | 142 expect(transform.outs[0].id, id); |
| 143 expect(transform.outs[1].id, id.addExtension('._buildLogs.1')); |
| 144 return transform.outs.first.readAsString(); |
| 145 }); |
| 142 }); | 146 }); |
| 143 }); | 147 }); |
| 144 } | 148 } |
| 145 | 149 |
| 146 class _MockTransform implements Transform { | 150 class _MockTransform implements Transform { |
| 147 bool shouldConsumePrimary = false; | 151 bool shouldConsumePrimary = false; |
| 148 List<Asset> outs = []; | 152 List<Asset> outs = []; |
| 149 Asset _asset; | 153 Asset _asset; |
| 150 TransformLogger logger = new TransformLogger(_mockLogFn); | 154 TransformLogger logger = new TransformLogger(_mockLogFn); |
| 151 Asset get primaryInput => _asset; | 155 Asset get primaryInput => _asset; |
| 152 | 156 |
| 153 _MockTransform(this._asset); | 157 _MockTransform(this._asset); |
| 154 Future<Asset> getInput(AssetId id) { | 158 Future<Asset> getInput(AssetId id) { |
| 155 if (id == primaryInput.id) return new Future.value(primaryInput); | 159 if (id == primaryInput.id) return new Future.value(primaryInput); |
| 156 fail('_MockTransform fail'); | 160 fail('_MockTransform fail'); |
| 157 } | 161 } |
| 158 | 162 |
| 159 void addOutput(Asset output) { | 163 void addOutput(Asset output) { |
| 160 outs.add(output); | 164 outs.add(output); |
| 161 } | 165 } |
| 162 | 166 |
| 163 void consumePrimary() { | 167 void consumePrimary() { |
| 164 shouldConsumePrimary = true; | 168 shouldConsumePrimary = true; |
| 165 } | 169 } |
| 166 | 170 |
| 167 readInput(id) => throw new UnimplementedError(); | 171 readInput(id) => throw new UnimplementedError(); |
| 168 readInputAsString(id, {encoding}) => throw new UnimplementedError(); | 172 readInputAsString(id, {encoding}) => throw new UnimplementedError(); |
| 169 hasInput(id) => throw new UnimplementedError(); | 173 hasInput(id) => |
| 174 new Future.value(id == _asset.id || outs.any((a) => a.id == id)); |
| 170 | 175 |
| 171 static void _mockLogFn(AssetId asset, LogLevel level, String message, | 176 static void _mockLogFn(AssetId asset, LogLevel level, String message, |
| 172 span) { | 177 span) { |
| 173 // Do nothing. | 178 // Do nothing. |
| 174 } | 179 } |
| 175 } | 180 } |
| 176 | 181 |
| 177 String _sampleObservable(String annotation) => ''' | 182 String _sampleObservable(String annotation) => ''' |
| 178 library A_foo; | 183 library A_foo; |
| 179 import 'package:observe/observe.dart'; | 184 import 'package:observe/observe.dart'; |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 215 " Foo\n" | 220 " Foo\n" |
| 216 " get foo => __\$foo; Foo __\$foo/*D*/= 1; " | 221 " get foo => __\$foo; Foo __\$foo/*D*/= 1; " |
| 217 "${_makeSetter('Foo', 'foo')} " | 222 "${_makeSetter('Foo', 'foo')} " |
| 218 "@reflectable @$meta @otherMetadata Foo get bar => __\$bar; " | 223 "@reflectable @$meta @otherMetadata Foo get bar => __\$bar; " |
| 219 "Foo __\$bar =/*A*/2/*B*/; ${_makeSetter('Foo', 'bar')}\n" | 224 "Foo __\$bar =/*A*/2/*B*/; ${_makeSetter('Foo', 'bar')}\n" |
| 220 " @reflectable @$meta @otherMetadata Foo get quux => __\$quux; " | 225 " @reflectable @$meta @otherMetadata Foo get quux => __\$quux; " |
| 221 "Foo __\$quux/*C*/; ${_makeSetter('Foo', 'quux')}\n\n" | 226 "Foo __\$quux/*C*/; ${_makeSetter('Foo', 'quux')}\n\n" |
| 222 " @reflectable @$meta dynamic get baz => __\$baz; dynamic __\$baz; " | 227 " @reflectable @$meta dynamic get baz => __\$baz; dynamic __\$baz; " |
| 223 "${_makeSetter('dynamic', 'baz')}\n" | 228 "${_makeSetter('dynamic', 'baz')}\n" |
| 224 "}\n"; | 229 "}\n"; |
| OLD | NEW |