import 'package:angel3_code_buffer/angel3_code_buffer.dart';
import 'package:file/file.dart';
import 'package:file/memory.dart';
import 'package:jael3/jael3.dart' as jael;
import 'package:jael3_preprocessor/jael3_preprocessor.dart' as jael;
import 'package:angel3_symbol_table/angel3_symbol_table.dart';
import 'package:test/test.dart';
void main() {
late FileSystem fileSystem;
setUp(() {
fileSystem = MemoryFileSystem();
// a.jl
fileSystem.file('a.jl').writeAsStringSync('a.jl');
// b.jl
fileSystem.file('b.jl').writeAsStringSync('');
// c.jl
fileSystem.file('c.jl').writeAsStringSync('');
});
test('includes are expanded', () 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.resolveIncludes(original,
fileSystem.directory(fileSystem.currentDirectory), (e) => throw e);
var buf = CodeBuffer();
var scope = SymbolTable();
const jael.Renderer().render(processed!, buf, scope);
print(buf);
expect(
buf.toString(),
'''
a.jl
'''
.trim());
});
}