Skip to content

Commit

Permalink
feat(intervals): add isDissonant getter (#43)
Browse files Browse the repository at this point in the history
  • Loading branch information
albertms10 committed Apr 11, 2023
1 parent 63a0b59 commit 637bd58
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 0 deletions.
12 changes: 12 additions & 0 deletions lib/src/interval/intervals.dart
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,18 @@ enum Intervals {
/// ```
bool get isCompound => ordinal > Intervals.octave.ordinal;

/// Whether this [Intervals] enum item is dissonant.
///
/// Examples:
/// ```dart
/// Intervals.unison.isDissonant == false
/// Intervals.fifth.isDissonant == false
/// Intervals.seventh.isDissonant == true
/// Intervals.ninth.isDissonant == true
/// ```
bool get isDissonant =>
{Intervals.second, Intervals.seventh}.contains(simplified);

/// Returns a simplified this [Intervals] enum item.
///
/// Examples:
Expand Down
19 changes: 19 additions & 0 deletions test/src/interval/intervals_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,25 @@ void main() {
});
});

group('.isDissonant', () {
test('should return whether this Intervals enum item is dissonant', () {
expect(Intervals.unison.isDissonant, isFalse);
expect(Intervals.second.isDissonant, isTrue);
expect(Intervals.third.isDissonant, isFalse);
expect(Intervals.fourth.isDissonant, isFalse);
expect(Intervals.fifth.isDissonant, isFalse);
expect(Intervals.sixth.isDissonant, isFalse);
expect(Intervals.seventh.isDissonant, isTrue);
expect(Intervals.octave.isDissonant, isFalse);
expect(Intervals.ninth.isDissonant, isTrue);
expect(Intervals.tenth.isDissonant, isFalse);
expect(Intervals.eleventh.isDissonant, isFalse);
expect(Intervals.twelfth.isDissonant, isFalse);
expect(Intervals.thirteenth.isDissonant, isFalse);
expect(Intervals.fourteenth.isDissonant, isTrue);
});
});

group('.simplified', () {
test('should return the simplified Intervals enum item', () {
expect(Intervals.second.simplified, Intervals.second);
Expand Down

0 comments on commit 637bd58

Please sign in to comment.