Skip to content

Commit

Permalink
Merge fff2995 into 4d015ad
Browse files Browse the repository at this point in the history
  • Loading branch information
albertms10 committed Apr 22, 2023
2 parents 4d015ad + fff2995 commit eae0080
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 6 deletions.
6 changes: 1 addition & 5 deletions lib/src/enharmonic.dart
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,7 @@ abstract class Enharmonic<T extends MusicItem>
final int semitones;

/// Creates a new [Enharmonic].
const Enharmonic(this.semitones)
: assert(
semitones > 0 && semitones <= chromaticDivisions,
'Semitones must be in chromatic divisions range',
);
const Enharmonic(this.semitones);

/// Returns the items sharing the same [semitones].
Set<T> get items;
Expand Down
6 changes: 5 additions & 1 deletion lib/src/note/enharmonic_note.dart
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
part of '../../music_notes.dart';

class EnharmonicNote extends Enharmonic<Note> {
const EnharmonicNote(super.semitones);
const EnharmonicNote(super.semitones)
: assert(
semitones > 0 && semitones <= chromaticDivisions,
'Semitones must be in chromatic divisions range',
);

static const c = EnharmonicNote(1);
static const cSharp = EnharmonicNote(2);
Expand Down
5 changes: 5 additions & 0 deletions test/src/interval/enharmonic_interval_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,11 @@ void main() {
const Interval.imperfect(7, ImperfectQuality.major),
const Interval.perfect(8, PerfectQuality.diminished),
});
expect(const EnharmonicInterval(13).items, {
const Interval.imperfect(7, ImperfectQuality.augmented),
const Interval.perfect(8, PerfectQuality.perfect),
const Interval.imperfect(9, ImperfectQuality.diminished),
});
},
);
});
Expand Down
10 changes: 10 additions & 0 deletions test/src/note/enharmonic_note_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,16 @@ import 'package:test/test.dart';

void main() {
group('EnharmonicNote', () {
group('constructor', () {
test(
'should throw an assertion error when arguments are incorrect',
() {
expect(() => EnharmonicNote(-2), throwsA(isA<AssertionError>()));
expect(() => EnharmonicNote(13), throwsA(isA<AssertionError>()));
},
);
});

group('.items', () {
test('should return the correct Notes for this EnharmonicNote', () {
expect(EnharmonicNote.c.items, {
Expand Down

0 comments on commit eae0080

Please sign in to comment.