import 'package:test/test.dart'; import 'package:yx_icon_fonts/yx_icon_fonts.dart'; void main() { group('StringHelper', () { test('toCamelCase converts underscore to camelCase', () { expect(StringHelper.toCamelCase('icon_32_clean'), equals('icon32Clean')); expect( StringHelper.toCamelCase('icon_msg_contacts'), equals('iconMsgContacts'), ); }); test('toLegalDartName handles numeric prefix', () { expect(StringHelper.toLegalDartName('32_icon'), equals('_32Icon')); }); test('toPascalCase converts to PascalCase', () { expect(StringHelper.toPascalCase('icon_class'), equals('IconClass')); }); }); group('GeneratorConfig', () { test('fromMap creates config from map', () { final map = { 'generator': {'name': 'Test'}, 'input': { 'font_file': 'test.ttf', 'json_file': 'test.json', 'font_family': 'test', }, 'output': { 'file_path': 'lib/icons.dart', 'class_name': 'TestIcons', }, }; final config = GeneratorConfig.fromMap(map); expect(config.generator.name, equals('Test')); expect(config.input.fontFile, equals('test.ttf')); expect(config.input.jsonFile, equals('test.json')); expect(config.output.filePath, equals('lib/icons.dart')); expect(config.output.className, equals('TestIcons')); }); test('defaults creates default config', () { final config = GeneratorConfig.defaults(); expect(config.input.fontFamily, equals('iconfont')); expect(config.output.className, equals('AppIcons')); expect(config.output.generateDocs, isTrue); }); }); group('IconParser', () { test('parseMap parses icon font metadata', () { final jsonData = { 'id': '123', 'name': 'Test Font', 'font_family': 'testfont', 'glyphs': [ { 'icon_id': '1', 'name': 'icon_test', 'font_class': 'icon_test', 'unicode': 'e600', 'unicode_decimal': 58880, }, ], }; final meta = IconParser.parseMap(jsonData); expect(meta.name, equals('Test Font')); expect(meta.fontFamily, equals('testfont')); expect(meta.icons.length, equals(1)); expect(meta.icons.first.name, equals('icon_test')); expect(meta.icons.first.unicode, equals('e600')); }); }); }