mirror of
https://github.com/alda-lang/alda.git
synced 2026-03-03 18:23:36 +01:00
In accordance with the "don't make invalid data representable" principle. This also allows us to create a LispPitch type in alda.lisp, which will just wrap PitchIdentifier.
56 lines
1.5 KiB
Go
56 lines
1.5 KiB
Go
package parser
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"alda.io/client/model"
|
|
_ "alda.io/client/testing"
|
|
)
|
|
|
|
func TestBarlines(t *testing.T) {
|
|
executeParseTestCases(
|
|
t,
|
|
parseTestCase{
|
|
label: "simple use of barlines",
|
|
given: "violin: c d | e f | g a",
|
|
expect: []model.ScoreUpdate{
|
|
model.PartDeclaration{Names: []string{"violin"}},
|
|
model.Note{Pitch: model.LetterAndAccidentals{NoteLetter: model.C}},
|
|
model.Note{Pitch: model.LetterAndAccidentals{NoteLetter: model.D}},
|
|
model.Barline{},
|
|
model.Note{Pitch: model.LetterAndAccidentals{NoteLetter: model.E}},
|
|
model.Note{Pitch: model.LetterAndAccidentals{NoteLetter: model.F}},
|
|
model.Barline{},
|
|
model.Note{Pitch: model.LetterAndAccidentals{NoteLetter: model.G}},
|
|
model.Note{Pitch: model.LetterAndAccidentals{NoteLetter: model.A}},
|
|
},
|
|
},
|
|
parseTestCase{
|
|
label: "a note tied over many barlines",
|
|
given: "marimba: c1|~1|~1~|1|~1~|2.",
|
|
expect: []model.ScoreUpdate{
|
|
model.PartDeclaration{Names: []string{"marimba"}},
|
|
model.Note{
|
|
Pitch: model.LetterAndAccidentals{NoteLetter: model.C},
|
|
Duration: model.Duration{
|
|
Components: []model.DurationComponent{
|
|
model.NoteLength{Denominator: 1},
|
|
model.Barline{},
|
|
model.NoteLength{Denominator: 1},
|
|
model.Barline{},
|
|
model.NoteLength{Denominator: 1},
|
|
model.Barline{},
|
|
model.NoteLength{Denominator: 1},
|
|
model.Barline{},
|
|
model.NoteLength{Denominator: 1},
|
|
model.Barline{},
|
|
model.NoteLength{Denominator: 2, Dots: 1},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
)
|
|
|
|
}
|