import 'package:code_buffer/code_buffer.dart'; import 'package:file/file.dart'; import 'package:file/memory.dart'; import 'package:jael/jael.dart' as jael; import 'package:jael_preprocessor/jael_preprocessor.dart' as jael; import 'package:symbol_table/symbol_table.dart'; import 'package:test/test.dart'; main() { FileSystem fileSystem; setUp(() { fileSystem = new MemoryFileSystem(); // a.jl fileSystem.file('a.jl').writeAsStringSync('a.jl'); // b.jl fileSystem.file('b.jl').writeAsStringSync( '

Hello

'); // c.jl fileSystem.file('c.jl').writeAsStringSync( 'Goodbye'); // d.jl fileSystem.file('d.jl').writeAsStringSync( 'Saluton!'); }); test('blocks are replaced or kept', () async { var file = fileSystem.file('c.jl'); var original = jael.parseDocument(await file.readAsString(), sourceUrl: file.uri, onError: (e) => throw e); var processed = await jael.resolve( original, fileSystem.directory(fileSystem.currentDirectory), onError: (e) => throw e); var buf = new CodeBuffer(); var scope = new SymbolTable(); const jael.Renderer().render(processed, buf, scope); print(buf); expect(buf.toString(), ''' a.jl Goodbye '''.trim()); }); test('block resolution is recursive', () async { var file = fileSystem.file('d.jl'); var original = jael.parseDocument(await file.readAsString(), sourceUrl: file.uri, onError: (e) => throw e); var processed = await jael.resolve( original, fileSystem.directory(fileSystem.currentDirectory), onError: (e) => throw e); var buf = new CodeBuffer(); var scope = new SymbolTable(); const jael.Renderer().render(processed, buf, scope); print(buf); expect(buf.toString(), ''' a.jl Saluton!Goodbye '''.trim()); }); }