Neale Pickett
·
2026-02-17
layouts_test.go
1package layouts
2
3import (
4 "encoding/json"
5 "testing"
6)
7
8func TestParser(t *testing.T) {
9 txt := `Rochelle C/G
10 E,/F, A,/B♭, C♯/D♯ A/G G♯/B♭ | c♯/d♯ a/c♯ g♯/g c♯'/b♭ a'/d'
11 C,/G, G,/B, C/D E/F G/A | c/B e/d g/f c'/a e'/b
12 B,/A, D/F♯ G/A B/c d/e | g/f♯ b/a d'/c' g'/e' b'/f♯'
13 - - - - D,/D, | - - - - -
14`
15
16 layouts, err := ParseLayouts(txt)
17 if err != nil {
18 t.Fatal(err)
19 }
20
21 if l := len(layouts); l != 1 {
22 t.Fatalf("wrong length: %d", l)
23 }
24
25 layout := layouts[0]
26 if layout.Name != "Rochelle C/G" {
27 t.Error("wrong name")
28 }
29
30 if b, err := json.Marshal(layout); err != nil {
31 t.Error(err)
32 } else {
33 t.Log(string(b))
34 }
35
36 if v := layout.Notes[0][0][0][0]; v != ABC2MIDI("E,") {
37 t.Errorf("wrong note: %d", v)
38 }
39 if layout.Notes[0][0][0][1] != ABC2MIDI("F,") {
40 t.Error("wrong note")
41 }
42}
43
44func TestDefaultParser(t *testing.T) {
45 layouts, err := DefaultLayouts()
46 if err != nil {
47 t.Fatal(err)
48 }
49
50 // If you add or remove a layout, you'll have to change this constant :)
51 if l := len(layouts); l != 4 {
52 t.Errorf("wrong number of layouts: %d", l)
53 }
54}