import 'package:test/test.dart'; import 'package:platform_support/platform_support.dart'; void main() { group('Fluent', () { test('can be instantiated with no arguments', () { final fluent = Fluent(); expect(fluent.toArray(), isEmpty); }); test('can be instantiated with initial attributes', () { final fluent = Fluent({'name': 'John', 'age': 30}); expect(fluent.get('name'), equals('John')); expect(fluent.get('age'), equals(30)); }); test('can get and set attributes', () { final fluent = Fluent() ..set('name', 'John') ..set('age', 30); expect(fluent.get('name'), equals('John')); expect(fluent.get('age'), equals(30)); }); test('can check if attribute exists', () { final fluent = Fluent({'name': 'John'}); expect(fluent.has('name'), isTrue); expect(fluent.has('age'), isFalse); }); test('can remove attributes', () { final fluent = Fluent({'name': 'John', 'age': 30})..remove('age'); expect(fluent.has('name'), isTrue); expect(fluent.has('age'), isFalse); }); test('can clear all attributes', () { final fluent = Fluent({'name': 'John', 'age': 30})..clear(); expect(fluent.toArray(), isEmpty); }); test('can merge attributes', () { final fluent = Fluent({'name': 'John'}) ..merge({'age': 30, 'city': 'New York'}); expect(fluent.get('name'), equals('John')); expect(fluent.get('age'), equals(30)); expect(fluent.get('city'), equals('New York')); }); test('implements Arrayable correctly', () { final fluent = Fluent({'name': 'John', 'age': 30}); final array = fluent.toArray(); expect(array, isA>()); expect(array['name'], equals('John')); expect(array['age'], equals(30)); }); test('implements Jsonable correctly', () { final fluent = Fluent({'name': 'John', 'age': 30}); final json = fluent.toJson(); expect(json, equals('{"name":"John","age":30}')); }); test('equals works correctly', () { final fluent1 = Fluent({'name': 'John', 'age': 30}); final fluent2 = Fluent({'name': 'John', 'age': 30}); final fluent3 = Fluent({'name': 'Jane', 'age': 25}); expect(fluent1, equals(fluent2)); expect(fluent1, isNot(equals(fluent3))); }); test('toString returns JSON representation', () { final fluent = Fluent({'name': 'John', 'age': 30}); expect(fluent.toString(), equals('{"name":"John","age":30}')); }); }); }