// test/note_background_test.dart
//
// Covers the NoteBackground template enum decode (back-compat: missing/unknown →
// blank) and the painter's shouldRepaint reacting to a background change.

import 'package:flutter_test/flutter_test.dart';

import 'package:badnote/editor/canvas/note_background.dart';

void main() {
  group('noteBackgroundFromName', () {
    test('decodes each enum name round-trip', () {
      for (final b in NoteBackground.values) {
        expect(noteBackgroundFromName(b.name), b);
      }
    });

    test('null → blank (back-compat for legacy sidecars)', () {
      expect(noteBackgroundFromName(null), NoteBackground.blank);
    });

    test('unknown name → blank (forward-compat)', () {
      expect(noteBackgroundFromName('isometric'), NoteBackground.blank);
      expect(noteBackgroundFromName(''), NoteBackground.blank);
    });
  });

  group('NoteBackgroundPainter.shouldRepaint', () {
    test('repaints when the background changes', () {
      const a = NoteBackgroundPainter(NoteBackground.blank);
      const b = NoteBackgroundPainter(NoteBackground.dots);
      expect(a.shouldRepaint(b), isTrue);
    });

    test('does not repaint when the background is identical', () {
      const a = NoteBackgroundPainter(NoteBackground.grid);
      const b = NoteBackgroundPainter(NoteBackground.grid);
      expect(a.shouldRepaint(b), isFalse);
    });
  });
}
