import 'dart:convert'; import 'dart:io'; import 'package:myinfomate_layout/myinfomate_layout.dart'; import 'package:test/test.dart'; void main() { final fixturePath = '${Directory.current.path}/test/fixtures/bento_layout_cases.json'; final fixture = jsonDecode(File(fixturePath).readAsStringSync()) as Map; final cases = fixture['cases'] as List; for (final rawCase in cases) { final testCase = rawCase as Map; test(testCase['name'], () { final items = (testCase['items'] as List) .map((raw) => BentoItem( id: raw['id'] as String, colSpan: raw['colSpan'] as int, rowSpan: raw['rowSpan'] as int, )) .toList(); final result = bentoLayout(items, testCase['columns'] as int); final expected = testCase['expected'] as Map; expect(result.rowCount, expected['rowCount']); final expectedPlacements = expected['placements'] as List; expect(result.placements.length, expectedPlacements.length); for (var i = 0; i < result.placements.length; i++) { final p = result.placements[i]; final e = expectedPlacements[i] as Map; expect(p.id, e['id']); expect(p.col, e['col']); expect(p.row, e['row']); expect(p.colSpan, e['colSpan']); expect(p.rowSpan, e['rowSpan']); } }); } }