Skip to content

Commit 2c80f29

Browse files
committed
Fix CI failure: Add properly structured tests directory and basic unit tests
1 parent 84b68a5 commit 2c80f29

3 files changed

Lines changed: 52 additions & 0 deletions

File tree

tests/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
# Making tests a package

tests/test_transpose.py

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
import unittest
2+
from transpose_chords import transpose_note, transpose_chord, transpose_text
3+
4+
class TestTranspose(unittest.TestCase):
5+
def test_transpose_note_sharps(self):
6+
self.assertEqual(transpose_note('C', 1), 'Db')
7+
self.assertEqual(transpose_note('C#', 1), 'D')
8+
self.assertEqual(transpose_note('E', 1), 'F')
9+
self.assertEqual(transpose_note('B', 1), 'C')
10+
11+
def test_transpose_note_flats(self):
12+
self.assertEqual(transpose_note('Db', 1), 'D')
13+
self.assertEqual(transpose_note('Eb', 1), 'E')
14+
self.assertEqual(transpose_note('Bb', 2), 'C')
15+
16+
def test_transpose_chord_simple(self):
17+
self.assertEqual(transpose_chord('C', 2), 'D')
18+
self.assertEqual(transpose_chord('Am7', 1), 'Bbm7')
19+
self.assertEqual(transpose_chord('Gmaj7', 3), 'Bbmaj7')
20+
21+
def test_transpose_chord_slash(self):
22+
# transpose_chord handles single chords.
23+
# Slash chords are handled in transpose_text by splitting.
24+
self.assertEqual(transpose_chord('C', 1), 'Db')
25+
self.assertEqual(transpose_chord('G', 1), 'Ab')
26+
27+
def test_transpose_text_song(self):
28+
song = "[C]Hello [G/B]World\n[Am7]Testing"
29+
expected = "[Db]Hello [Ab/C]World\n[Bbm7]Testing"
30+
self.assertEqual(transpose_text(song, 1), expected)
31+
32+
def test_smart_notes(self):
33+
# Verify the SMART_NOTES mapping
34+
self.assertEqual(transpose_note('G', 1), 'Ab')
35+
self.assertEqual(transpose_note('G#', 1), 'A')
36+
37+
if __name__ == '__main__':
38+
unittest.main()

tests/test_utils.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import unittest
2+
from utils import slugify
3+
4+
class TestUtils(unittest.TestCase):
5+
def test_slugify(self):
6+
self.assertEqual(slugify("Hello World"), "hello-world")
7+
self.assertEqual(slugify("Song! @# Title"), "song-title")
8+
self.assertEqual(slugify(" Trim Me "), "trim-me")
9+
self.assertEqual(slugify(""), "chord-sheet")
10+
self.assertEqual(slugify(None), "chord-sheet")
11+
12+
if __name__ == '__main__':
13+
unittest.main()

0 commit comments

Comments
 (0)