Skip to content

Commit

Permalink
✨ feat(key_signature)!: rewrite toString method (#196)
Browse files Browse the repository at this point in the history
  • Loading branch information
albertms10 committed Jun 21, 2023
1 parent ecc33fe commit 1e19d0f
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 38 deletions.
20 changes: 1 addition & 19 deletions lib/src/tonality/key_signature.dart
Original file line number Diff line number Diff line change
Expand Up @@ -80,25 +80,7 @@ final class KeySignature implements Comparable<KeySignature> {
}

@override
String toString() {
if (notes.isEmpty) {
return '${notes.length} ${accidental.symbol}';
}

final list = <String>[];
final notesLength = BaseNote.values.length;
final iterations = (notes.length / notesLength).ceil();

for (var i = 1; i <= iterations; i++) {
final n = i == iterations
? notes.length.nModExcludeZero(notesLength)
: notesLength;

list.add('$n ${accidental.increment(i - 1).symbol}');
}

return list.join(', ');
}
String toString() => '$distance (${notes.join(' ')})';

@override
bool operator ==(Object other) =>
Expand Down
65 changes: 46 additions & 19 deletions test/src/tonality/key_signature_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -183,25 +183,52 @@ void main() {
test(
'should return the string representation of this KeySignature',
() {
expect(KeySignature.fromDistance(-10).toString(), '7 ♭, 3 𝄫');
expect(KeySignature.fromDistance(-8).toString(), '7 ♭, 1 𝄫');
expect(KeySignature.fromDistance(-7).toString(), '7 ♭');
expect(KeySignature.fromDistance(-6).toString(), '6 ♭');
expect(KeySignature.fromDistance(-5).toString(), '5 ♭');
expect(KeySignature.fromDistance(-4).toString(), '4 ♭');
expect(KeySignature.fromDistance(-3).toString(), '3 ♭');
expect(KeySignature.fromDistance(-2).toString(), '2 ♭');
expect(KeySignature.fromDistance(-1).toString(), '1 ♭');
expect(KeySignature.fromDistance(0).toString(), '0 ♮');
expect(KeySignature.fromDistance(1).toString(), '1 ♯');
expect(KeySignature.fromDistance(2).toString(), '2 ♯');
expect(KeySignature.fromDistance(3).toString(), '3 ♯');
expect(KeySignature.fromDistance(4).toString(), '4 ♯');
expect(KeySignature.fromDistance(5).toString(), '5 ♯');
expect(KeySignature.fromDistance(6).toString(), '6 ♯');
expect(KeySignature.fromDistance(7).toString(), '7 ♯');
expect(KeySignature.fromDistance(8).toString(), '7 ♯, 1 𝄪');
expect(KeySignature.fromDistance(10).toString(), '7 ♯, 3 𝄪');
expect(
KeySignature.fromDistance(-10).toString(),
'-10 (B♭ E♭ A♭ D♭ G♭ C♭ F♭ B𝄫 E𝄫 A𝄫)',
);
expect(
KeySignature.fromDistance(-8).toString(),
'-8 (B♭ E♭ A♭ D♭ G♭ C♭ F♭ B𝄫)',
);
expect(
KeySignature.fromDistance(-7).toString(),
'-7 (B♭ E♭ A♭ D♭ G♭ C♭ F♭)',
);
expect(
KeySignature.fromDistance(-6).toString(),
'-6 (B♭ E♭ A♭ D♭ G♭ C♭)',
);
expect(
KeySignature.fromDistance(-5).toString(),
'-5 (B♭ E♭ A♭ D♭ G♭)',
);
expect(KeySignature.fromDistance(-4).toString(), '-4 (B♭ E♭ A♭ D♭)');
expect(KeySignature.fromDistance(-3).toString(), '-3 (B♭ E♭ A♭)');
expect(KeySignature.fromDistance(-2).toString(), '-2 (B♭ E♭)');
expect(KeySignature.fromDistance(-1).toString(), '-1 (B♭)');
expect(KeySignature.fromDistance(0).toString(), '0 ()');
expect(KeySignature.fromDistance(1).toString(), '1 (F♯)');
expect(KeySignature.fromDistance(2).toString(), '2 (F♯ C♯)');
expect(KeySignature.fromDistance(3).toString(), '3 (F♯ C♯ G♯)');
expect(KeySignature.fromDistance(4).toString(), '4 (F♯ C♯ G♯ D♯)');
expect(KeySignature.fromDistance(5).toString(), '5 (F♯ C♯ G♯ D♯ A♯)');
expect(
KeySignature.fromDistance(6).toString(),
'6 (F♯ C♯ G♯ D♯ A♯ E♯)',
);
expect(
KeySignature.fromDistance(7).toString(),
'7 (F♯ C♯ G♯ D♯ A♯ E♯ B♯)',
);
expect(
KeySignature.fromDistance(8).toString(),
'8 (F♯ C♯ G♯ D♯ A♯ E♯ B♯ F𝄪)',
);
expect(
KeySignature.fromDistance(10).toString(),
'10 (F♯ C♯ G♯ D♯ A♯ E♯ B♯ F𝄪 C𝄪 G𝄪)',
);
},
);
});
Expand Down

0 comments on commit 1e19d0f

Please sign in to comment.