]> git.donarmstrong.com Git - lilypond.git/blobdiff - input/regression/display-lily-tests.ly
Issue 2525: Fix a number of display-lily shortcomings
[lilypond.git] / input / regression / display-lily-tests.ly
index 81f72cfb2d7a8c48fb8f0c480ae041c3cb918c11..6e7a3ab24c9b418aac64bc0cdb597ff25b7765b4 100644 (file)
@@ -1,18 +1,13 @@
-\version "2.7.2"
-
+\version "2.15.19"
 #(use-modules (srfi srfi-13)
               (ice-9 format))
 
 %%%
 %%% Testing utilities
 %%%
-#(define (my-parse-string-result str parser)
-  "Parse `str', which is supposed to contain a music expression."
-  (ly:parser-parse-string parser
-                          (format #f "parseStringResult = \\notemode { ~a }" str))
-  (ly:parser-lookup parser 'parseStringResult))
-
-#(define (my-read-lily-expression chr port)
+#(use-modules (scm display-lily))
+#(memoize-clef-names supported-clefs)
+#(define (parse-lily-and-compute-lily-string chr port)
   (let ((lily-string (call-with-output-string
                       (lambda (out)
                         (do ((c (read-char port) (read-char port)))
                                   (char=? (peek-char port) #\]))
                              (read-char port))
                           (display c out))))))
-    `(let* ((parser-clone (ly:clone-parser parser))
+    `(let* ((parser-clone (ly:parser-clone parser))
             (input-str (string-trim-both ,lily-string))
-            (music (car (ly:music-property (my-parse-string-result input-str parser-clone)
-                                           'elements)))
-            (result-str (string-trim-both (music->lily-string music))))
+            (music (ly:parse-string-expression parser-clone input-str))
+            (result-str (string-trim-both (music->lily-string music parser-clone))))
        (cons input-str result-str))))
 
-#(read-hash-extend #\[ my-read-lily-expression)
+#(read-hash-extend #\[ parse-lily-and-compute-lily-string) %{ ] %}
 
-#(define test-number 0)
-  
 #(define (lily-string->markup str)
    (make-column-markup (string-split str #\NewLine)))
 
-test = #(def-music-function (parser location result-info strings) (string? pair?)
-          (let ((input (car strings))
-                (output (cdr strings)))
-            (set! test-number (1+ test-number))
-            (if (string=? input output)
-                (make-music 'SequentialMusic)
-                (make-music 'SequentialMusic
-                            'elements
-                            (list (make-music 'EventChord
-                                   'elements (list (make-music 'BreakEvent
-                                                    'page-penalty 0
-                                                    'penalty -10001)))
-                                  (make-music 'EventChord
-                                   'elements (list (make-music 'SkipEvent
-                                                    'duration (ly:make-duration 0 0 1 1))
-                                                   (make-music 'TextScriptEvent
-                                                    'direction -1
-                                                    'text (markup #:column (#:simple (format #f "Test #~a "
-                                                                                      test-number)
-                                                                            (if (string-null? result-info) 
-                                                                                (markup #:bold "BUG") 
-                                                                                (markup #:simple result-info))
-                                                                            #:typewriter (lily-string->markup input)
-                                                                            #:typewriter (lily-string->markup output)))))))))))
+test =
+#(define-void-function (parser location harmless strings)
+  ((string?) pair?)
+  (let ((input (car strings))
+       (output (cdr strings))
+       (result-info (or harmless "BUG")))
+   (if (not (equal? input output))
+    (if harmless
+     (ly:progress "Test unequal: ~a.\nin  = ~a\nout = ~a\n"
+      harmless input output)
+     (ly:input-warning location "Test unequal: BUG.\nin  = ~a\nout = ~a\n"
+      input output)))))
 
 %%%
 %%% Tests
 %%%
 \header {
-  texidoc = \markup \column { \line { \typewriter display-lily-music unit tests }
-                              \line { Real bugs (regressions) are marked as \bold BUG. }
-                              \line { Known bugs are marked as TODO. } }
-}
-
-\layout {
-  raggedright = ##t 
-  indent = 0.0\cm
-  \context {
-    \Staff
-    \override StaffSymbol #'line-count = #1
-    %\remove "Staff_symbol_engraver"
-    \remove "Time_signature_engraver"
-    \remove "Clef_engraver"
-  }
-  \context {
-    \Score
-    \remove "Bar_number_engraver"
-  }
+  texidoc = "This is a test of the display-lily-music unit. Problems are reported on the
+stderr of this run." 
 }
-{
-  %% Sequential music
-  \test #"" ##[ { { a b } { c d } } #]                 % SequentialMusic
-  \test #"" ##[ << { a b } { c d } >> #]               % SimultaneousMusic
-  \test #"" ##[ << { a b } \\ { c d } >> #]            % VoiceSeparator
-  
-  %% Chords and Notes
-  \test #"" ##[ { ceses ces c cis cisis } #]           % NoteEvent
-  \test #"" ##[ { deses des d dis disis } #]
-  \test #"" ##[ { eeses ees e eis eisis } #]
-  \test #"" ##[ { feses fes f fis fisis } #]
-  \test #"" ##[ { geses ges g gis gisis } #]
-  \test #"" ##[ { aeses aes a ais aisis } #]
-  \test #"" ##[ { beses bes b bis bisis } #]
-  \test #"" ##[ { c,, d' } #]
-  \test #"" ##[ { c' d'=' } #]
-  \test #"" ##[ { c! c? } #]
-  \test #"" ##[ r1.*4/3 #]                             % RestEvent
-  \test #"" ##[ c1\rest #]                             % RestEvent
-  \test #"" ##[ s2..*3/4 #]                            % SkipEvent
-  \test #"" ##[ R1.*2/3 #]                             % MultiMeasureRestMusicGroup, MultiMeasureRestEvent
-  \test #"" ##[ \skip 2.*3/4 #]                                % SkipMusic
-  \test #"" ##[ < c\1 e\3 >4.*3/4-. #]                 % EventChord, NoteEvent, StringNumberEvent, ArticulationEvent
-
-  %% tags
-  \test #"" ##[ { \tag #'foo { c4 d } } #]
-  \test #"" ##[ c-\tag #'(foo baz) -^ -. #]
-
-  %% Graces
-  \test #"" ##[ { \grace c8 d2 } #]                    % GraceMusic
-  \test #"" ##[ { \appoggiatura c8 d2 } #]
-  \test #"" ##[ { \acciaccatura c8 d2 } #]
-  \test #"" ##[ { c1 \afterGrace { b,16 c } d2 } #]
-
-  %% Clusters
-  \test #"" ##[ { \makeClusters { c4 g } } #]          % ClusterNoteEvent
-
-  %% Figured bass
-  \test #"" ##[ \figures { < 6 > } #]                  % BassFigureEvent
-  \test #"" ##[ \figuremode { < 1-- 3- > < 2+ 4++ > < _! 7! > } #]
-  \test #"" ##[ \figuremode { < [6 > < 5] > } #]
-
-  %% Lyrics
-  \test #"" ##[ \lyrics { a b } #]
-  \test #"" ##[ \lyricmode { a --  b } #]              % HyphenEvent
-  \test #"" ##[ \lyricmode { a __  b } #]              % ExtenderEvent
-  \test #"" ##[ \lyricmode { "a " } #]                         % LyricEvent
-  \test #"" ##[ \lyricsto "foo" { bla bla } #]         % LyricCombineMusic
-  \test #"" ##[ { { c d }
-  \addlyrics { bla bla } } #]
-  \test #"" ##[ \oldaddlyrics { c d }
-\lyricmode { bla bla } #]                              % OldLyricCombineMusic
-
-  %% Drums
-  \test #"" ##[ \drums { hihat } #]
-  \test #"" ##[ \drummode { hihat4.*3/4 } #]
-
-  %% Expressive marks
-  \test #"" ##[ c4 ~ #]                                        % TieEvent
-  \test #"" ##[ c\noBeam #]                            % BeamForbidEvent
-  \test #"" ##[ c\1 #]                                         % StringNumberEvent
-  \test #"" ##[ { c:  c:1  } #]                                % TremoloEvent
-  \test #"" ##[ { c-^  c^^  c_^  } #]                  % ArticulationEvent
-  \test #"" ##[ { c-+  c^+  c_+  } #]
-  \test #"" ##[ { c--  c^-  c_-  } #]
-  \test #"" ##[ { c-|  c^|  c_|  } #]
-  \test #"" ##[ { c->  c^>  c_>  } #]
-  \test #"" ##[ { c-.  c^.  c_.  } #]
-  \test #"" ##[ { c-_  c^_  c__  } #]
-  \test #"" ##[ { c-\trill  c^\trill  c_\trill  } #]
-  \test #"" ##[ { c-1  c^2  c_3  } #]                  % FingerEvent
-  \test #"" ##[ { c-"foo"  c^"foo"  c_"foo"  } #]      % TextScriptEvent
-  \test #"" ##[ { R1*4 -"foo"  R ^"foo"  R _"foo"  } #]        % MultiMeasureTextEvent
-  \test #"" ##[ { c4-\harmonic  c^\harmonic  c_\harmonic  } #]         % HarmonicEvent
-  \test #"" ##[ { c-\glissando  c^\glissando  c_\glissando  } #] % GlissandoEvent
-  \test #"" ##[ { c-\arpeggio  c^\arpeggio  c_\arpeggio  } #]  % ArpeggioEvent
-  \test #"" ##[ { c\p  c^\ff  c_\sfz  } #]             % AbsoluteDynamicEvent
-  \test #"" ##[ { c[  c]  c^[  c^]  c_[  c_]  } #]     % BeamEvent
-  \test #"" ##[ { c(  c)  c^(  c^)  c_(  c_)  } #]     % SlurEvent
-  \test #"" ##[ { c\<  c\!  c^\<  c^\!  c_\<  c_\!  } #]       % CrescendoEvent
-  \test #"" ##[ { c\>  c\!  c^\>  c^\!  c_\>  c_\!  } #]       % DecrescendoEvent
-  \test #"" ##[ { c\(  c\)  c^\(  c^\)  c_\(  c_\)  } #]       % PhrasingSlurEvent
-  \test #"" ##[ { c\sustainDown  c\sustainUp  } #] % SustainEvent
-  \test #"" ##[ { c\sostenutoDown  c\sostenutoUp  } #] % SostenutoEvent
-  \test #"" ##[ { c\melisma  c\melismaEnd  } #]                % ManualMelismaEvent
-  \test #"" ##[ { c\startTextSpan  c\stopTextSpan  } #] % TextSpanEvent
-  \test #"" ##[ { c\startTrillSpan  c\stopTrillSpan  } #] % TrillSpanEvent
-  \test #"" ##[ { c \startStaff c \stopStaff } #]      % StaffSpanEvent
-  \test #"" ##[ { c\startGroup  c\stopGroup  c^\startGroup  c^\stopGroup  c_\startGroup  c_\stopGroup  } #] % NoteGroupingEvent
-  \test #"" ##[ { c\unaCorda  c\treCorde  } #] % UnaCordaEvent
-  \test #"" ##[ \breathe #]
-  \test #"" ##[ { c \[  c \]  } #]                     % LigatureEvent
-  \test #"" ##[ \~ #]                                  % PesOrFlexaEvent
 
-  \test #"" ##[ \break #]
-
-  %% Checks
-  \test #"" ##[ \octave a' #]                          % RelativeOctaveCheck
-  \test #"" ##[ | #]                                   % BarCheck
-
-  %% Marks
-  \test #"" ##[ \mark \default #]                      % MarkEvent
-  \test #"" ##[ \mark "Allegro" #]
-  \test #"" ##[ \tempo 4 = 120 #]                      % MetronomeChangeEvent
-
-  %% key, time, clef, bar
-  \test #"" ##[ \key \default #]                       % KeyChangeEvent
-  \test #"" ##[ \key e \minor #]
-  \test #"" ##[ \clef "bass" #]
-  \test #"" ##[ \clef "french^2" #]
-  \test #"" ##[ \clef "alto_3" #]
-  \test #"" ##[ \time 2/4 #]
-  \test #"" ##[ #(set-time-signature 5 8 '(3 2)) #]
-  \test #"" ##[ \bar "|." #]
-
-  %% staff switches
-  \test #"" ##[ \autochange { c d } #]                 % AutoChangeMusic
-  \test #"" ##[ { \change Staff = "up" { c d } } #]    % ContextChange
-
-  %% Tuplets
-  \test #"" ##[ \times 2/3 { c8 d e } #]                               % TimeScaledMusic
-  \test #"" ##[ \times 4/6 { c16 d e f g a } #]
-
-  %% \relative and \tranpose
-  \test #"NOT A BUG" ##[ \relative c' { c b } #]       % RelativeOctaveMusic
-  \test #"NOT A BUG" ##[ \transpose c d { c d } #]     % TransposedMusic
-  
-  %% Repeats
-  \test #"" ##[ \repeat volta 2 { c d } #]             % VoltaRepeatedMusic
-  \test #"" ##[ \repeat unfold 2 { c d } #]            % UnfoldedRepeatedMusic
-  \test #"" ##[ \repeat fold 2 { c d } #]              % FoldedRepeatedMusic
-  \test #"" ##[ \repeat percent 2 { c d } #]           % PercentRepeatedMusic
-  \test #"" ##[ \repeat tremolo 4 { c16 d } #]         % TremoloRepeatedMusic
-  \test #"" ##[ \repeat volta 2 { c4 d } \alternative { { c d } { e f } } #] % 
-
-  %% Context creation
-  \test #"" ##[ \new Staff { c d } #]                  % ContextSpeccedMusic
-  \test #"" ##[ \context Staff { c d } #]
-  \test #"" ##[ \context Staff = "up" { c d } #]
-  \test #"" ##[
+%% Sequential music
+\test ##[ { { a b } { c d } } #]               % SequentialMusic
+\test ##[ << { a b } { c d } >> #]             % SimultaneousMusic
+\test ##[ << { a b } \\ { c d } >> #]          % VoiceSeparator
+
+%% Chords and Notes
+\test ##[ { ceses ces c cis cisis } #]         % NoteEvent
+\test ##[ { deses des d dis disis } #]
+\test ##[ { eeses ees e eis eisis } #]
+\test ##[ { feses fes f fis fisis } #]
+\test ##[ { geses ges g gis gisis } #]
+\test ##[ { aeses aes a ais aisis } #]
+\test ##[ { beses bes b bis bisis } #]
+\test ##[ { c,, d' } #]
+\test ##[ { c' d'=' } #]
+\test ##[ { c! c? } #]
+\test ##[ r1.*4/3 #]           % RestEvent
+\test ##[ c1\rest #]           % RestEvent
+\test ##[ s2..*3/4 #]                  % SkipEvent
+\test ##[ R1.*2/3 #]           % MultiMeasureRestMusicGroup, MultiMeasureRestEvent
+\test ##[ \skip 2.*3/4 #]              % SkipMusic
+\test ##[ < c\1 e\3 >4.*3/4-. #]       % EventChord, NoteEvent, StringNumberEvent, ArticulationEvent
+\test ##[ < c-1\4 >8 #]
+\test ##[ { < c e g c' >4 q8-. } #] % RepeatedChord
+
+%% tags
+\test ##[ { \tag #'foo { c4 d } } #]
+\test ##[ c-\tag #'foo -\tag #'baz -^-. #]
+
+%% Graces
+\test ##[ { \grace c8 d2 } #]                          % GraceMusic
+\test ##[ { \appoggiatura c8 d2 } #]
+\test ##[ { \acciaccatura c8 d2 } #]
+\test ##[ { c1 \afterGrace { b,16 c } d2 } #]
+
+%% Clusters
+\test ##[ { \makeClusters { c4 g } } #]                        % ClusterNoteEvent
+
+%% Figured bass
+\test ##[ \figures { < 6 > } #]                                % BassFigureEvent
+\test ##[ \figuremode { < 1-- 3- > < 2+ 4++ > < _! 7! > } #]
+\test ##[ \figuremode { < [6 > < 5] > } #]
+
+%% Lyrics
+\test ##[ \lyrics { a b } #]
+\test ##[ \lyricmode { a -- b } #]             % HyphenEvent
+\test ##[ \lyricmode { a __ b } #]             % ExtenderEvent
+\test ##[ \lyricmode { "a " } #]                       % LyricEvent
+\test ##[ \lyricsto "foo" { bla bla  } #]              % LyricCombineMusic
+\test ##[ { { c d }
+  \addlyrics { bla bla  } } #]
+
+%% Drums
+\test ##[ \drums { hihat } #]
+\test ##[ \drummode { hihat4.*3/4 } #]
+
+%% Expressive marks
+\test ##[ c4 ~ #]                                      % TieEvent
+\test ##[ c\noBeam #]                                  % BeamForbidEvent
+\test ##[ c\1 #]                                       % StringNumberEvent
+\test ##[ { c: c:1 } #]                                        % TremoloEvent
+\test ##[ { c-^ c^^ c_^ } #]                           % ArticulationEvent
+\test ##[ { c-+ c^+ c_+ } #]
+\test ##[ { c-- c^- c_- } #]
+\test ##[ { c-| c^| c_| } #]
+\test ##[ { c-> c^> c_> } #]
+\test ##[ { c-. c^. c_. } #]
+\test ##[ { c-_ c^_ c__ } #]
+\test ##[ { c\trill c^\trill c_\trill } #]
+\test ##[ { c-1 c^2 c_3 } #]                           % FingerEvent
+\test ##[ { c-"foo" c^"foo" c_"foo" } #]               % TextScriptEvent
+\test ##[ { R1*4-"foo" R^"foo" R_"foo" } #]            % MultiMeasureTextEvent
+\test ##[ { < c\harmonic >4 < c e\harmonic > } #]      % HarmonicEvent
+\test ##[ { c\glissando c^\glissando c_\glissando } #] % GlissandoEvent
+\test ##[ { c\arpeggio c^\arpeggio c_\arpeggio } #]    % ArpeggioEvent
+\test ##[ { c\p c^\ff c_\sfz } #]                      % AbsoluteDynamicEvent
+\test ##[ { c[ c] c^[ c^] c_[ c_] } #]                         % BeamEvent
+\test ##[ { c( c) c^( c^) c_( c_) } #]                         % SlurEvent
+\test ##[ { c\< c\! c^\< c^\! c_\< c_\! } #]           % CrescendoEvent
+\test ##[ { c\> c\! c^\> c^\! c_\> c_\! } #]           % DecrescendoEvent
+\test ##[ { c\episemInitium c\episemFinis } #]         % EpisemaEvent
+\test ##[ { c\( c\) c^\( c^\) c_\( c_\) } #]           % PhrasingSlurEvent
+\test ##[ { c\sustainOn c\sustainOff } #]              % SustainEvent
+\test ##[ { c\sostenutoOn c\sostenutoOff } #]          % SostenutoEvent
+\test ##[ \melisma #]
+\test ##[ \melismaEnd #]
+\test ##[ { c\startTextSpan c\stopTextSpan } #]                % TextSpanEvent
+\test ##[ { c\startTrillSpan c\stopTrillSpan } #]      % TrillSpanEvent
+\test ##[ { c \startStaff c \stopStaff } #]            % StaffSpanEvent
+\test ##[ { c\startGroup c\stopGroup c^\startGroup c^\stopGroup c_\startGroup c_\stopGroup } #]    % NoteGroupingEvent
+\test ##[ { c\unaCorda c\treCorde } #]                 % UnaCordaEvent
+\test ##[ \breathe #]
+\test ##[ { c \[ c \] } #]                     % LigatureEvent
+\test ##[ \~ #]                                                % PesOrFlexaEvent
+\test ##[ c\bendAfter #3 #]    % BendAfterEvent
+\test ##[ c\rightHandFinger #1 #]    % StrokeFingerEvent
+
+\test ##[ \break #]
+\test ##[ \noBreak #]
+\test ##[ \pageBreak #]
+\test ##[ \noPageBreak #]
+\test ##[ \pageTurn #]
+\test ##[ \noPageTurn #]
+
+%% Checks
+\test ##[ \octaveCheck a' #]                           % RelativeOctaveCheck
+\test ##[ | #]                                         % BarCheck
+
+%% Marks
+\test ##[ \mark \default #]                    % MarkEvent
+\test ##[ \mark "Allegro" #]
+\test ##[ \tempo 4 = 120 #]                    % MetronomeChangeEvent
+\test ##[ \tempo 4 = 108 ~ 116 #]
+\test ##[ \tempo "Allegro" 4 = 132 #]
+\test ##[ \tempo "Andante" #]
+
+%% key, time, clef, bar
+\test ##[ \key \default #]                     % KeyChangeEvent
+\test ##[ \key e \minor #]
+\test ##[ \clef "bass" #]
+\test ##[ \clef "french^2" #]
+\test ##[ \clef "alto_3" #]
+\test ##[ \time 2/4 #]
+\test ##[ \time #'(3 2) 5/8 #]
+\test ##[ \bar "|." #]
+
+%% staff switches
+\test ##[ \autochange { c d } #]                       % AutoChangeMusic
+\test ##[ { \change Staff = "up" { c d } } #]          % ContextChange
+
+%% Tuplets
+\test ##[ \times 2/3 { c8 d e } #]                             % TimeScaledMusic
+\test ##[ \times 4/6 { c16 d e f g a } #]
+%}
+%% \relative and \tranpose
+\test #"NOT A BUG" ##[ \relative c' { c b } #] % RelativeOctaveMusic
+\test #"NOT A BUG" ##[ \transpose c d { c d } #]       % TransposedMusic
+%}
+%% Repeats
+\test ##[ \repeat volta 2 { c d } #]           % VoltaRepeatedMusic
+\test ##[ \repeat unfold 2 { c d } #]                  % UnfoldedRepeatedMusic
+\test ##[ \repeat percent 2 { c d } #]                 % PercentRepeatedMusic
+\test ##[ \repeat tremolo 4 { c16 d } #]               % TremoloRepeatedMusic
+\test ##[ \repeat volta 2 { c4 d } \alternative { { c d } { e f } } #]    % 
+
+%% Context creation
+\test ##[ \new Staff { c d } #]                                % ContextSpeccedMusic
+\test ##[ \new Staff = "up" { c d } #]                         % ContextSpeccedMusic
+\test ##[ \context Staff { c d } #]
+\test ##[ \context Staff = "up" { c d } #]
+\test ##[
 \new Staff \with {
   \consists "Timing_engraver"
   \remove "Clef_engraver"
 } { c d } #]
-  %% Context properties
-  \test #"" ##[ \once \set Score . skipBars = ##t #]   % PropertySet
-  \test #"" ##[ \set autoBeaming = ##f #]
-  \test #"" ##[ \unset Score . skipBars #]             % PropertyUnset
-  \test #"" ##[ \unset autoBeaming #]
-  %% Layout properties
-  \test #"" ##[ \override Staff . Stem #'thickness = #4.0 #]   % OverrideProperty
-  \test #"" ##[ \once \override Beam #'thickness = #0.6 #]
-  \test #"" ##[ \revert Staff . Stem #'thickness #]    % RevertProperty
-  \test #"" ##[ \revert Beam #'thickness #]
+%% Context properties
+\test ##[ \once \set Score . skipBars = ##t #]         % PropertySet
+\test ##[ \set autoBeaming = ##f #]
+\test ##[ \unset Score . skipBars #]           % PropertyUnset
+\test ##[ \unset autoBeaming #]
+%% Layout properties
+\test ##[ \override Staff . Stem #'thickness = #4.0 #]         % OverrideProperty
+\test ##[ \once \override Beam #'beam-thickness = #0.6 #]
+\test ##[ \revert Staff . Stem #'thickness #]          % RevertProperty
+\test ##[ \revert Beam #'beam-thickness #]
+\test "NOT A BUG" ##[ \oneVoice #]     % resetting a bunch of properties
+\test ##[ \override StaffGrouper #'(staff-staff-spacing basic-distance) = #7 #]    % nested properties
+\test ##[ \revert StaffGrouper #'(staff-staff-spacing basic-distance) #]    % nested properties
+
+%% \applyOutput
+\test ##[ \applyOutput #'Foo #(lambda (arg) (list)) #]
+%% \applyContext
+\test ##[ \applyContext #(lambda (arg) (list)) #]
+
+%% \partial
+\test ##[ \partial 2 #]
+\test ##[ \partial 8. #]
+\test ##[ \partial 4*2/3 #]
+
+%% \partcombine
+\test ##[ \partcombine { c e }
+{ d f } #]                                             % PartCombineMusic UnrelativableMusic
 
-  %% \partial
+%% Cue notes
+\test ##[ \cueDuring #"foo" #1 { c d } #]
+\test ##[ \quoteDuring #"foo" { c d } #]
 
+%% \ottava
+\test ##[ \ottava #1 #]    % OttavaMusic
 
-  \test #"" ##[ \partial 2 #]
-  \test #"" ##[ \partial 8. #]
-  \test #"TODO? exotic durations in \\partial" ##[ \partial 4*2/3 #]
+%% \tweak
+\test ##[ < \tweak #'duration-log #2 c > #]
+\test ##[ < c \tweak #'transparent ##t e > #]
+\test ##[ < \tweak #'color #'(1.0 0.0 0.0) \tweak #'duration-log #2 c > #]
+\test ##[ c-\tweak #'font-size #3 -> #]
 
-  %% \partcombine
-  \test #"" ##[ \partcombine { c e }
-{ d f } #]                                             % PartCombineMusic UnrelativableMusic
-
-  %% Cue notes
-  \test #"" ##[ \cueDuring #"foo" #1 { c d } #]
-  \test #"" ##[ \quoteDuring #"foo" { c d } #]
-}
+%% end test.
 
+#(read-hash-extend #\[ #f) %{ ] %}