
    3jg                        d dl mZ d dlZd dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d d	l
mZ d d
lmZ d dlmZ d dlmZ  G d dej                        Zedk(  rd dlZ ej$                  e       yy)    )annotationsN)chord)clef)expressions)interval)key)meter)m21ToXml)note)pitch)streamc                  N    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zy)Testc                   t        j                  d      }d|_        |j                  j	                  t        j
                                t        j                  |      }t        j                         }|j	                  |       |j                  }| j                  |d   j                  d       | j                  |d   j                  d       | j                  |d   j                  d       | j                  |d   j                  d       | j                  |d   j                  d       | j                  |d   j                  d	       y )
ND4   r   D      ?   C   g      @)r   NotequarterLengthr   appendWholeStepMordentrealizeOrnamentsr   StreamnotesassertEqualname)selfn1expListst1st1ns        J/DATA/.local/lib/python3.12/site-packages/music21/test/test_expressions.pytestRealizezTest.testRealize   s    YYt_
k::<=..r2mmo

7yyas+a..6as+a..6as+a..5    c                   t        j                  d      }| j                  |j                         d        t        j                  d      }| j                  t	        |j                               d       |j                         }| j                  |j                         j                  d       t        j                  d      }| j                  t	        |j                               d       |j                         }| j                  |j                         j                  d       t        j                  d      }| j                  t	        |j                               d       |j                         }| j                  |j                         j                  d       t        j                  d      }| j                  t	        |j                               d	       |j                         }| j                  |j                         j                  d       t        j                  d
      }| j                  t	        |j                               d       |j                         }| j                  |j                         j                  d
       y )Nlightlyzd.c.z<music21.repeat.DaCapo 'd.c.'>z
DC al codaz*<music21.repeat.DaCapoAlCoda 'DC al coda'>z
DC al finez*<music21.repeat.DaCapoAlFine 'DC al fine'>z
ds al codaz,<music21.repeat.DalSegnoAlCoda 'ds al coda'>zd.s. al finez.<music21.repeat.DalSegnoAlFine 'd.s. al fine'>)r   TextExpressionr   getRepeatExpressionstrgetTextExpressioncontent)r!   teres      r&   testGetRepeatExpressionzTest.testGetRepeatExpression#   s   ''	2//148''/R33569	;##%--/77@''5R3356E	G##%--/77F''5R3356E	G##%--/77F''5R3356G	I##%--/77F''7R3356I	K##%--/77Hr(   c                6   t        j                         }t        j                         }t        j                         }|j                  t	        j
                                |j                  t        j                  dd             |j                  t        j                  d             t        j                  dd      }t        j                  d      }|j                  j                  |       t        j                  d	d
      }d|j                  _        |j                  j                  t        j                                 |j                  |       |j                  t        j"                  d             |j                  |       |j                  t        j$                  d             |j                  |       |j                  |       t        j&                  |      }t        j&                  |      }| j)                  ddj+                  d |D                     | j)                  ddj+                  d |D                     | j)                  |d   j,                  d       | j)                  |d   j,                  d       | j)                  |d   j,                  d       | j)                  |d   j,                  d       | j)                  |d   j,                  d       | j)                  |d   j,                  d       | j)                  |d   j,                  d       | j)                  |d   j,                  d       | j)                  |d   j,                  d       d|_        t        j&                  |      }	| j)                  |	d   j,                  d       | j)                  |	d   j,                  d       | j)                  |	d   j,                  d       | j)                  |	d   j,                  d       | j)                  |	d   j,                  d       y )NFmajorz2/4C5halftypeg      ?)delayB4quarterr      eighthzC5 D5 C5 B-4 C5 c              3  H   K   | ]  }|j                   j                    y wNr   nameWithOctave.0ns     r&   	<genexpr>z'Test.testExpandTurns.<locals>.<genexpr>^   s     4_U^PQQWW5K5KU^    "zA#4 B4 C#5 B4c              3  H   K   | ]  }|j                   j                    y wrA   rB   rD   s     r&   rG   z'Test.testExpandTurns.<locals>.<genexpr>_   s     2]S\a1773I3IS\rH   r   g      ?r      r   g      ?r   g      ?)r   PartMeasurer   r   
TrebleClefr   Keyr	   TimeSignaturer   r   r   TurndurationdotsInvertedTurnKeySignatureRestr   r   joinr   )
r!   p1m1m2r"   turn0n2	realized1	realized2
realized1bs
             r&   testExpandTurnszTest.testExpandTurnsF   s    [[]^^^^
		$//#$
		#''#w'(
		%%%e,-YYt&)  s+
e$YYt),
k6689
		"
		#""1%&
		"
		$))H%&
		"
		"004	004	*CHH4_U^4_,_`#((2]S\2]*]^ 	133S9133T:133T:133T:133T: 	133T:133T:133T:133T:
 $ 11"5
A44c:A44e<A44e<A44e<A44e<r(   c                X   t        j                         }t        j                         }|j                  t	        j
                                |j                  t        j                  dd             |j                  t        j                  d             t        j                  dd      }|j                  j                  t        j                                |j                  |       |j                  |       t        j                  |      }| j                  |t                | j#                  t%        |      d       | j                  |d   t        j                         | j#                  |d   j&                  d	       | j#                  d
dj)                  d |D                     y )Nr   r5   z1/4E4r>   r8   r   r   r   zE4 F#4 E4 F#4r?   c              3  H   K   | ]  }|j                   j                    y wrA   rB   rD   s     r&   rG   z(Test.testExpandTrills.<locals>.<genexpr>   s     2\S[a1773I3IS[rH   )r   rK   rL   r   r   rM   r   rN   r	   rO   r   r   r   Trillr   assertIsInstancelistr   lenr   rV   )r!   rW   rX   r"   realizeds        r&   testExpandTrillszTest.testExpandTrills|   s!   [[]^^
		$//#$
		#''#w'(
		%%%e,-YYt(+
k//12
		"
		"//3h-X*hqk4995!22E:#((2\S[2\*\]r(   c                   t        j                         }|j                  t        j                         d       |j
                  d   }|j
                  d   }t        j                  ||      }|j                  |       t        j                         j                  |      }| j                  |j                  d      d       t        j                         }|j                  t        j                  ddg      d       |j
                  d   }|j
                  d   }t        j                  ||      }|j                  |       t        j                         j                  |      }| j                  |j                  d      d       y)	zz
        Test basic wave line creation and output, as well as passing
        objects through make measure calls.
           r   s	   wavy-liner   zc-3g4N)r   r   repeatAppendr   r   r   r   TrillExtensionr   r
   GeneralObjectExporterparser   countr   Chord)r!   sr"   r[   sp1raws         r&   testTrillExtensionAzTest.testTrillExtensionA   s   
 MMO	tyy{B'WWQZWWR[((R0	,,.44Q7<0!4MMO	u{{E4=126WWQZWWR[((R0	,,.44Q7<0!4r(   c                   t        j                  d      }| j                  t        j                        5  t        j
                  |      }d d d        | j                  t        j                        5  t        j                  |      }d d d        | j                  t        j                        5  t        j                  |      }d d d        | j                  t        j                        5  t        j                  |      }d d d        | j                  t        j                        5  t        j                  |      }d d d        | j                  t        j                        5  t        j                  |      }d d d        t        j                  d      }t        j
                         }| j                  |j                         | j                  t        j                        5  ||_        d d d        t        j                         }| j                  |j                         | j                  t        j                        5  ||_        d d d        t        j                         }| j                  |j                         | j                  t        j                        5  ||_        d d d        t        j                         }| j                  |j                         | j                  t        j                        5  ||_        d d d        t        j                         }| j                  |j                         | j                  t        j                        5  ||_        d d d        t        j                         }| j                  |j                         | j                  t        j                        5  ||_        d d d        y # 1 sw Y   xY w# 1 sw Y   YxY w# 1 sw Y   (xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   /xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   <xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nflat)
accidentalsharp)r   
AccidentalassertRaisesr   ExpressionExceptionHalfStepTrillWholeStepTrillHalfStepMordentr   HalfStepInvertedMordentWholeStepInvertedMordentassertIsNonery   )r!   	flatAccidtrillmord
sharpAccids        r&   testFixedSizeOrnamentAccidentalz$Test.testFixedSizeOrnamentAccidental   s   
 $$V,	{>>?--CE @{>>?..)DE @{>>?..)DD @{>>?//9ED @{>>?66)LD @{>>?779MD @ %%g.
))+%**+{>>?)E @**,%**+{>>?)E @**,$//*{>>?(DO @++-$//*{>>?(DO @224$//*{>>?(DO @335$//*{>>?(DO @?K @??????????? @? @? @? @? @? @?s   O3O!1O./O;-P+P-P"P/)P<Q	%QQ"O!O+.O8;PPP"P,/P9<Q	QQ"Q+c                
   t        j                         }t        j                         }t        j                  d      }|j                  |       | j                  |j                  t        j                  d      f       | j                  |j                  d   j                         |j                  |       | j                  |j                  t        j                  d      f       | j                  |j                  d   j                         t        j                  d      }|j                  |       | j                  |j                  t        j                  d      f       | j                  |j                  d   j                         |j                  |       | j                  |j                  t        j                  d      f       | j                  |j                  d   j                         t        j                  d      }d|_        ||_        ||_        |j                  |       t        j                  d      }t        j                  d      |_        | j                  |j                  |f       | j                  |j                  d   j                  j                  d       | j                  |j                  d   j                  j                  d       |j                  |       t        j                  d      }t        j                  d      |_        | j                  |j                  |f       | j                  |j                  d   j                  j                  d       | j                  |j                  d   j                  j                  d       t        j                  d      }d|_        ||_        ||_        |j                  |       t        j                  d      }t        j                  d	      |_        d|_        | j                  |j                  |f       | j                  |j                  d   j                  j                  d	       | j                  |j                  d   j                  j                  d       |j                  |       t        j                  d      }t        j                  d	      |_        d|_        | j                  |j                  |f       | j                  |j                  d   j                  j                  d	       | j                  |j                  d   j                  j                  d       y )
NC4r   r   B3r   Tnaturalz##zdouble-sharp)r   rc   InvertedTrillr   r   resolveOrnamentalPitchesr   ornamentalPitchesr   Pitchr   ry   r{   displayStatusr    )r!   r   itrillnoteWithExplicitOctavenoteWithImplicitOctavenaturalAccidexpectedPitchdoubleSharpAccids           r&   testResolveOrnamentalPitchesz!Test.testResolveOrnamentalPitches   sj   !!#**,!%4&&'=>005;;t3D2FG%11!4??@''(>?11EKK4E3GH&2215@@A "&3&&'=>005;;t3D2FG%11!4??@''(>?11EKK4E3GH&2215@@A ''*%)"'(&&'=>D)#(#3#3I#> 00=2BC##A&1166	
 	##A&11??	
 	''(>?D)#(#3#3I#> 11M3CD$$Q'2277	
 	$$Q'22@@	
 !++D1)-&+,&&'=>D)#(#3#3N#C &*#00=2BC##A&1166	
 	##A&11??	
 	''(>?D)#(#3#3N#C &*#11M3CD$$Q'2277	
 	$$Q'22@@	
r(   c                   t        j                  d      }t        j                         }|j	                  t        j                  d      |       | j                  |j                  t        j                  d             | j                  |j                  j                  d        t        j                  d      t        j                  d      t        j                  d      g}|j                  |d	       | j                  |j                  j                  t        j                  d
             | j                  |j                  j                  j                          t        j                         }|j	                  t        j                  d      |       | j                  |j                  t        j                  d             | j                  |j                  j                  d        t        j                  d      t        j                  d      t        j                  d      g}|j                  |       | j                  |j                  j                  t        j                  d
             | j                  |j                  j                  j                          t        j                         }|j	                  t        j                  d      |       | j                  |j                  t        j                  d             | j                  |j                  j                  d        t        j                  d      t        j                  d      t        j                  d      g}|j                  |d       | j                  |j                  j                         t        j"                         }|j	                  t        j                  d      |       | j                  |j$                  t        j                  d             | j                  |j$                  j                  d        | j                  |j&                  t        j                  d             | j                  |j&                  j                  d        t        j                  d      t        j                  d      t        j                  d      g}|j                  |d	       | j                  |j$                  j                  t        j                  d
             | j                  |j$                  j                  j                          | j                  |j&                  j                  t        j                  d
             | j                  |j&                  j                  j                          t        j"                         }|j	                  t        j                  d      |       | j                  |j$                  t        j                  d             | j                  |j$                  j                  d        | j                  |j&                  t        j                  d             | j                  |j&                  j                  d        t        j                  d      t        j                  d      t        j                  d      g}|j                  |       | j                  |j$                  j                  t        j                  d
             | j                  |j$                  j                  j                          | j                  |j&                  j                         t        j"                         }|j	                  t        j                  d      |       | j                  |j$                  t        j                  d             | j                  |j$                  j                  d        | j                  |j&                  t        j                  d             | j                  |j&                  j                  d        t        j                  d      t        j                  d      t        j                  d      g}|j                  |d       | j                  |j$                  j                         | j                  |j&                  j                         y )Nr   G4keySigA4zA#4zC#4r   T)	pitchPastcautionaryAllr   )r   zA#3zC#r   Fr   cautionaryPitchClassF4)r   rT   r   InvertedMordentr   r   r   r   ornamentalPitchr   r   r   ry   updateAccidentalDisplayr{   
assertTruer   rP   upperOrnamentalPitchlowerOrnamentalPitch)	r!   noSharpsOrFlatsmord1pastmord2mord3turn1turn2turn3s	            r&   testUpdateAccidentalDisplayz Test.testUpdateAccidentalDisplay(  s7   **1-++-&&tyy&O..D0AB%//::DAE"EKK$6D8IJ%%D%I..995;K;KI;VW--88FFG++-&&tyy&O..D0AB%//::DAE"EKK$6D8IJ%%%5..995;K;KI;VW--88FFG++-&&tyy&O..D0AB%//::DAE"EKK$5u{{37GH%%5%Q%//::;  "&&tyy&O33U[[5FG%44??F33U[[5FG%44??FE"EKK$6D8IJ%%D%I33>>@P@PQZ@[\22==KKL33>>@P@PQZ@[\22==KKL  "&&tyy&O33U[[5FG%44??F33U[[5FG%44??FE"EKK$6D8IJ%%%533>>@P@PQZ@[\22==KKL%44??@  "&&tyy&O33U[[5FG%44??F33U[[5FG%44??FE"EKK$5u{{37GH%%5%Q%44??@%44??@r(   c                
   t        j                  d      }d|_        t        j                  d      }t        j                         }||_        |j                  t        j                  d      |       t        j                  d      }t        j                  d      |_        d|j                  _        | j                  |j                  |       | j                  |j                  j                  t        j                  d             | j                  |j                  j                  j                         t        j                  d      t        j                  d      t        j                  d	      g}|j                  |d
       | j                  |j                  |       | j                  |j                  j                  t        j                  d             | j                  |j                  j                  j                         t        j                          }||_        ||_        |j                  t        j                  d      |       t        j                  d      t        j                  d      f}t        j                  d      |d   _        d|d   j                  _        t        j                  d      |d   _        d|d   j                  _        | j                  |j&                  d   |d          | j                  |j&                  d   j                  t        j                  d             | j                  |j&                  d   j                  j                         | j                  |j&                  d   |d          | j                  |j&                  d   j                  t        j                  d             | j                  |j&                  d   j                  j                         t        j                  d      t        j                  d      t        j                  d	      g}|j                  |d
       | j                  |j&                  d   |d          | j                  |j&                  d   j                  t        j                  d             | j                  |j&                  d   j                  j                         | j                  |j&                  d   |d          | j                  |j&                  d   j                  t        j                  d             | j                  |j&                  d   j                  j                         y )Nr   Tr   r   r   r   za#3zc#cFr   r   r   )r   r{   r   r   rT   r   r   ry   r   r   r   r   r   r   r   r   rP   upperAccidentallowerAccidentalr   )r!   r   r   r   expectedOrnamentalPitchr   turnexpectedOrnamentalPitchess           r&   .testUpdateAccidentalDisplayWithAccidentNameSetz3Test.testUpdateAccidentalDisplayWithAccidentNameSeti  s,   ''*%)"**1-**,&%%diioo%N"'++d"3-2-=-=i-H*;?**8--/FG--88%:J:J9:UV,,77EEFE"EKK$5u{{37GH$$t%$P--/FG--88%:J:J9:UV,,77EEF!++%%diioo%N%*[[%6D8I$J!272B2B92M!!$/@D!!$//=272B2B92M!!$/@D!!$//=//24Ma4PQ//2==u?O?OPY?Z[..q1<<JJK//24Ma4PQ//2==u?O?OPY?Z[..q1<<JJKE"EKK$5u{{37GH$$t%$P//24Ma4PQ//2==u?O?OPY?Z[..q1<<JJK//24Ma4PQ//2==u?O?OPY?Z[..q1<<JJKr(   c                   t        j                         }|j                  t        j                  d             | j                  |j                  t                      t        j                  d      }|j                  |d      }| j                  |g |g f       | j                  |d   |       |j                  |d      }| j                  |g |g f       | j                  |d   |       g }| j                  t              5  |j                  t        j                         |t        j                   d             d d d        | j                  |g        | j                  t        j"                         j$                  d       | j                  t        j&                         j$                  d	       | j                  t        j(                         j$                  d	       | j                  t        j*                         j$                  d       | j                  t         j,                        5  t        j.                         j1                  t        j                  d      d
       d d d        y # 1 sw Y   5xY w# 1 sw Y   y xY w)Nr   F)inPlacer   TM2)fillObjectstransposeIntervalupdownzbad: not upper or lowerwhich)r   Ornamentr   r   r   r   r   tuplerealizeassertIsNotassertIsr|   	TypeErrorfillListOfRealizedNotes	Unpitchedr   Intervalrc   	directionr   Mordentr   r}   rP   getSize)r!   ornrF   rg   
filledLists        r&   testEdgeCaseszTest.testEdgeCases  s    ""$$$TYYt_5..8 IIdO;;q%;0B2;/!a(;;q$;/B2;/hqk1% 
y)'' &"*"3"3D"9 (  * 	R( 	**,66=224>>G,,.88&A446@@$G {>>?&&tyy>W&X @? *) @?s   :I0.9I=0I:=Jc                D   t        j                         }t        j                         }|j	                  |      }| j                  t        |      d       | j                  t        |d         d       | j                  |d   d   t         j                         | j                  |d   d   t         j                         | j                  |d   t         j                         | j                  t        |d         d       | j                  |j                  |      t        j                  d             |j                  |       | j                  |j                  t                      t        j                         }|j	                  |      }| j                  t        |      d       | j                  t        |d         d       | j                  |d   d   t         j                         | j                  |d   d   t         j                         | j                  |d   t         j                         | j                  t        |d         d       | j                  |j                  |      t        j                  d             |j                  |       | j                  |j                  t                      t        j                         }|j	                  |      }| j                  t        |      d       | j                  t        |d         d       | j!                  |d          | j                  t        |d         d       | j                  |d   d   t         j                         | j                  |d   d   t         j                         | j                  |d   d   t         j                         | j                  |d   d   t         j                         | j                  |j                  |d      t        j                  d             | j                  |j                  |d	      t        j                  d             |j                  |       | j                  |j                  t                      t        j"                         }|j	                  |      }| j                  t        |      d       | j                  t        |d         d       | j!                  |d          | j                  t        |d         d       | j                  |d   d   t         j                         | j                  |d   d   t         j                         | j                  |d   d   t         j                         | j                  |d   d   t         j                         | j                  |j                  |d      t        j                  d             | j                  |j                  |d	      t        j                  d             |j                  |       | j                  |j                  t                      t        j$                         }|j	                  |      }| j                  t        |      d       | j                  t        |d         d
       | j                  |d   d   t         j                         | j                  |d   d   t         j                         | j                  |d   d   t         j                         | j                  |d   d   t         j                         | j                  |d   d   t         j                         | j                  |d   d   t         j                         | j                  |d   d   t         j                         | j                  |d   d   t         j                         | j!                  |d          | j                  t        |d         d       | j                  |j                  |      t        j                  d             |j                  |       | j                  |j                  t                      t        j&                         }|j	                  |      }| j                  t        |      d       | j                  t        |d         d
       | j                  |d   d   t         j                         | j                  |d   d   t         j                         | j                  |d   d   t         j                         | j                  |d   d   t         j                         | j                  |d   d   t         j                         | j                  |d   d   t         j                         | j                  |d   d   t         j                         | j                  |d   d   t         j                         | j!                  |d          | j                  t        |d         d       | j                  |j                  |      t        j                  d             |j                  |       | j                  |j                  t                      y )NrJ   r   r   r   P1r   upperr   lower   r=         )r   r   r   r   r   r   rf   rd   r   r   r   r   r   r   r   rP   r   rS   rc   r   )r!   unpr   rg   r   r   s         r&   testUnpitchedOrnamentszTest.testUnpitchedOrnaments  s   nn""$<<$X*Xa[)1-hqk!ndnn=hqk!ndnn=hqk4>>:Xa[)1-c*H,=,=d,CD%%c*//9**,<<$X*Xa[)1-hqk!ndnn=hqk!ndnn=hqk4>>:Xa[)1-c*H,=,=d,CD%%c*//9!<<$X*Xa[)1-(1+&Xa[)1-hqk!ndnn=hqk!ndnn=hqk!ndnn=hqk!ndnn=c98;L;LT;RSc98;L;LT;RS%%c*//9'')<<$X*Xa[)1-(1+&Xa[)1-hqk!ndnn=hqk!ndnn=hqk!ndnn=hqk!ndnn=c98;L;LT;RSc98;L;LT;RS%%c*//9!!#==%X*Xa[)1-hqk!ndnn=hqk!ndnn=hqk!ndnn=hqk!ndnn=hqk!ndnn=hqk!ndnn=hqk!ndnn=hqk!ndnn=(1+&Xa[)1-s+X->->t-DE&&s+//9))+==%X*Xa[)1-hqk!ndnn=hqk!ndnn=hqk!ndnn=hqk!ndnn=hqk!ndnn=hqk!ndnn=hqk!ndnn=hqk!ndnn=(1+&Xa[)1-s+X->->t-DE&&s+//9r(   N)__name__
__module____qualname__r'   r2   r_   rh   rv   r   r   r   r   r   r    r(   r&   r   r      sG    6!IF3=l^$50,)\R
h?AB*LX$YL[:r(   r   __main__)
__future__r   unittestmusic21r   r   r   r   r   r	   music21.musicxmlr
   r   r   r   TestCaser   r   mainTestr   r(   r&   <module>r      s`    "        %   D:8 D:^ zGT r(   