Files
korken_mosaic/test/project_codec_test.dart

54 lines
1.7 KiB
Dart

import 'dart:typed_data';
import 'package:flutter_test/flutter_test.dart';
import 'package:korken_mosaic/project_codec.dart';
void main() {
test('MosaicProjectData json roundtrip keeps values including catalog snapshot', () {
final original = MosaicProjectData(
useCapSize: true,
gridWidth: '50',
gridHeight: '40',
capSize: '10',
fidelityStructure: 0.3,
ditheringStrength: 0.2,
edgeEmphasis: 0.4,
colorVariation: 0.5,
selectedPreset: 'realistisch',
sourceImageBytes: Uint8List.fromList([1, 2, 3]),
catalogSnapshot: const [
MosaicPaletteSnapshotEntry(name: 'White', colorValue: 0xFFF2F2F2),
MosaicPaletteSnapshotEntry(name: 'Blue', colorValue: 0xFF3F6FD8),
],
savedAt: DateTime.parse('2026-01-01T12:00:00Z'),
);
final decoded = MosaicProjectData.fromJson(original.toJson());
expect(decoded.useCapSize, isTrue);
expect(decoded.gridWidth, '50');
expect(decoded.gridHeight, '40');
expect(decoded.capSize, '10');
expect(decoded.selectedPreset, 'realistisch');
expect(decoded.sourceImageBytes, isNotNull);
expect(decoded.sourceImageBytes!, [1, 2, 3]);
expect(decoded.catalogSnapshot.length, 2);
expect(decoded.catalogSnapshot.first.name, 'White');
expect(decoded.catalogSnapshot.last.colorValue, 0xFF3F6FD8);
});
test('MosaicProjectData defaults to empty snapshot when old project has none', () {
final decoded = MosaicProjectData.fromJson({
'useCapSize': false,
'gridWidth': '40',
'gridHeight': '30',
'capSize': '12',
'selectedPreset': 'ausgewogen',
'savedAt': '2026-01-01T12:00:00Z',
});
expect(decoded.catalogSnapshot, isEmpty);
expect(decoded.sourceImageBytes, isNull);
});
}