import 'package:test/test.dart'; import '../tools/generate_dart_code.dart'; void main() { group('Code Generator', () { test('generates constructor correctly', () { final classContract = { 'name': 'TestClass', 'docstring': 'Test class.', 'properties': [ { 'name': 'name', 'type': 'String', 'has_default': false, }, { 'name': 'is_ready', 'type': 'bool', 'has_default': true, } ], }; final code = generateClass(classContract); expect(code, contains('TestClass({')); expect(code, contains('required String name,')); expect(code, contains('bool? isReady,')); expect(code, contains('_name = name;')); expect(code, contains('_isReady = isReady ?? false;')); }); test('handles async methods correctly', () { final classContract = { 'name': 'TestClass', 'docstring': 'Test class.', 'methods': [ { 'name': 'process', 'return_type': 'String', 'arguments': [ { 'name': 'input', 'type': 'String', 'is_optional': false, } ], 'docstring': 'Process input.', 'is_async': true, } ], }; final code = generateClass(classContract); expect(code, contains('Future process(String input) async {')); expect(code, contains('/// Process input.')); }); test('initializes properties in constructor', () { final classContract = { 'name': 'TestClass', 'docstring': 'Test class.', 'properties': [ { 'name': 'name', 'type': 'String', 'has_default': false, }, { 'name': 'is_ready', 'type': 'bool', 'has_default': true, } ], }; final code = generateClass(classContract); expect(code, contains('late String _name;')); expect(code, contains('late bool _isReady;')); expect(code, contains('_name = name;')); expect(code, contains('_isReady = isReady ?? false;')); }); }); }