45 lines
1.4 KiB
Dart
45 lines
1.4 KiB
Dart
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<String, dynamic>;
|
|
final cases = fixture['cases'] as List<dynamic>;
|
|
|
|
for (final rawCase in cases) {
|
|
final testCase = rawCase as Map<String, dynamic>;
|
|
test(testCase['name'], () {
|
|
final items = (testCase['items'] as List<dynamic>)
|
|
.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<String, dynamic>;
|
|
|
|
expect(result.rowCount, expected['rowCount']);
|
|
|
|
final expectedPlacements = expected['placements'] as List<dynamic>;
|
|
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<String, dynamic>;
|
|
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']);
|
|
}
|
|
});
|
|
}
|
|
}
|