
    rh(k                       S SK Jr  S SKrS SKrS SKrS SKJr  S SKJr  S SKJr  S SKJ	r	  S SK
Jr  S SKJrJr   " S	 S
\R                  5      r " S S\R                  5      r\S:X  a  S SKr\R&                  " \5        gg)    )annotationsN)common)duration)note)stream)TimeSignature)MeterSequenceMeterTerminalc                  0    \ rS rSrSrS rS rS rS rSr	g)	TestExternal   Tc                ^    [        S5      nU R                  (       a  UR                  5         gg)z/
Need to test direct meter creation w/o stream
3/16N)r   showselfas     M/home/james-whalen/.local/lib/python3.13/site-packages/music21/meter/tests.py
testSingleTestExternal.testSingle   s#     &!99FFH     c                L   [         R                  " 5       nS Hg  nS H^  n[        U SU 35      n[         R                  " 5       nXEl        UR                  UR                  R                  R                  U5        M`     Mi     U R                  (       a  UR                  5         g g )N                   
r      r            	            /)	r   Streamr   MeasuretimeSignatureinsertbarDurationquarterLengthr   )r   r   meterStrDenominatormeterStrNumeratortsms         r   	testBasicTestExternal.testBasic$   s    MMO#7%F!"&7%8:M9N#OPNN$"$44BBAF	 &G $8 99FFH r   c           	     F   [         R                  " 5       n/ SQn/ SQn[        S5       H  n/ n[        S[        R                  " SS/5      5       HC  nUR                  [        R                  " U5      < S[        R                  " U5      < 35        ME     [        SR                  U5      5      n[         R                  " 5       nXxl	        UR                  UR                  R                  R                  U5        M     U R                  (       a  UR                  5         g g )	Nr   r    r   r   r   r   r)   +)r   r*   rangerandomchoiceappendr   joinr+   r,   r-   r.   r/   r   )	r   r   r0   r1   imsgjr2   r3   s	            r   testCompoundTestExternal.testCompound/   s    MMO2=qAC1fmmQF34

fmm4E&F&,mm4G&HJ K 5 sxx}-B A OHHQ__00>>B  99FFH r   c                L   [        SS5      n[        R                  " S5      /S-  n[        R                  " 5       nUR                  SU5        U H/  n[        R                  " 5       nXEl        UR                  U5        M1     U R                  (       a  UR                  5         g g )N6/8r   16thr'   r   )
r   r   Durationr   r*   r-   r   Noter;   r   )r   r2   bsxns         r   testMeterBeamTestExternal.testMeterBeam@   sz    5!$v&'",MMO	BA		AJHHQK  99FFH r    N)
__name__
__module____qualname____firstlineno__r   r   r4   r@   rK   __static_attributes__rM   r   r   r   r      s    D	"
r   r   c                      \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rSrg)TestM   c                :   [        5       nUR                  SS5        U R                  [        U5      S5        US   R	                  S5      US'   U R                  [        U5      S5        US   R	                  S5      US'   U R                  [        U5      S5        g )	N4/4r   z{1/4+1/4+1/4+1/4}r   r   z{{1/8+1/8}+1/4+1/4+1/4}r!   z){{1/8+1/8}+1/4+1/4+{1/16+1/16+1/16+1/16}})r	   loadassertEqualstr	subdivider   s     r   testMeterSubdivisionTest.testMeterSubdivisionN   s    O	uaQ!45t~~a !Q!:;t~~a !Q!LMr   c                    [        5       nUR                  SS5        [        R                  " U5      nU R	                  X5        g )NrW   r   )r	   rX   copydeepcopyassertIsNot)r   r   rG   s      r   testMeterSequenceDeepcopyTest.testMeterSequenceDeepcopyY   s3    O	uaMM!r   c                    [        S5      n[        R                  " U5      nU R                  X5        U R	                  X5        [        S5      n[        S5      nU R                  X45        g )NrW   slow 6/8zfast 6/8)r   r_   r`   ra   rY   assertNotEqual)r   cdefs        r   testTimeSignatureDeepcopyTest.testTimeSignatureDeepcopya   sX    % MM!*%*%A!r   c                    [        S5      n/ SQnU Vs/ s H  n[        R                  " SU-  S9PM     nnUR                  U5      nSnU R	                  [
        R                  " [        U5      U5      5        g s  snf )NrC   )
r   r   r   r   r   r   r   r   r   r   r   r/   a6  [<music21.beam.Beams <music21.beam.Beam 1/start>/<music21.beam.Beam 2/start>>,
        <music21.beam.Beams <music21.beam.Beam 1/continue>/<music21.beam.Beam 2/continue>>,
        <music21.beam.Beams <music21.beam.Beam 1/continue>/<music21.beam.Beam 2/continue>>,
        <music21.beam.Beams <music21.beam.Beam 1/continue>/<music21.beam.Beam 2/stop>>,
        <music21.beam.Beams <music21.beam.Beam 1/stop>>,
        <music21.beam.Beams <music21.beam.Beam 1/start>/<music21.beam.Beam 2/start>>,
        <music21.beam.Beams <music21.beam.Beam 1/continue>/<music21.beam.Beam 2/continue>>,
        <music21.beam.Beams <music21.beam.Beam 1/continue>/<music21.beam.Beam 2/continue>>,
        <music21.beam.Beams <music21.beam.Beam 1/continue>/<music21.beam.Beam 2/stop>>,
        <music21.beam.Beams <music21.beam.Beam 1/stop>>])r   r   rF   getBeams
assertTruer   whitespaceEqualrZ   )r   r2   durListrh   	notesListbeamsmatchs          r   testGetBeamsTest.testGetBeamsk   sl    5!8=DEWTYYQU3W	EI&	< 	..s5z5AB Fs   !A:c                <   [         R                  " 5       nUR                  [        R                  " SS9S5        [        S5      nUR                  USS9nU R                  US   5        USS	  H  nU R                  U5        M     S
nU R                  [        R                  " [        U5      U5      5        UR                  [        R                  " SS95        UR                  USS9nSnU R                  [        R                  " [        U5      U5      [        U5      5        [         R                  " 5       nUR                  [        R                  " SS9S5        [        S5      nUR                  USS9nS
nU R                  [        R                  " [        U5      U5      5        [         R                  " 5       nUR                  [        R                  " SS9S5        [        S5      nUR                  USS9nSnU R                  [        R                  " [        U5      U5      5        UR                  [        R                  " SS95        UR                  USS9nSnU R                  [        R                  " [        U5      U5      [        U5      5        g	)z_
Test getting Beams from a Measure that has an anacrusis that makes the
first note not beamed.
eighthtyper"   2/2      ?)measureStartOffsetr   r   Nz[None,
        <music21.beam.Beams <music21.beam.Beam 1/start>>,
        <music21.beam.Beams <music21.beam.Beam 1/continue>>,
        <music21.beam.Beams <music21.beam.Beam 1/continue>>,
        <music21.beam.Beams <music21.beam.Beam 1/stop>>]      ?aX  [<music21.beam.Beams <music21.beam.Beam 1/start>>,
        <music21.beam.Beams <music21.beam.Beam 1/stop>>,
        <music21.beam.Beams <music21.beam.Beam 1/start>>,
        <music21.beam.Beams <music21.beam.Beam 1/continue>>,
        <music21.beam.Beams <music21.beam.Beam 1/continue>>,
        <music21.beam.Beams <music21.beam.Beam 1/stop>>]3/2g      @r   rC   z[None,
        <music21.beam.Beams <music21.beam.Beam 1/start>>,
        <music21.beam.Beams <music21.beam.Beam 1/continue>>,
        <music21.beam.Beams <music21.beam.Beam 1/stop>>]      ?a  [<music21.beam.Beams <music21.beam.Beam 1/start>>,
        <music21.beam.Beams <music21.beam.Beam 1/stop>>,
        <music21.beam.Beams <music21.beam.Beam 1/start>>,
        <music21.beam.Beams <music21.beam.Beam 1/continue>>,
        <music21.beam.Beams <music21.beam.Beam 1/stop>>])r   r+   repeatAppendr   rF   r   ro   assertIsNoneassertIsNotNonerp   r   rq   rZ   r;   )r   r3   r2   rt   rG   ru   s         r   test_getBeams_offsetTest.test_getBeams_offset~   s   
 NN	tyyh/35!A#6%(#qrA  # <
 	..s5z5AB	)*A#6< 	..s5z5A3u:NNN	tyyh/35!A#6<
 	..s5z5AB NN	tyyh/35!A#6< 	..s5z5AB	)*A#6<
 	..s5z5A3u:Nr   c                   [        S5      n[        [        U5      5       H  nX   R                  S5      X'   [        [        X   5      5       H_  nX   U   R                  S5      X   U'   [        [        X   U   5      5       H$  nX   U   U   R                  S5      X   U   U'   M&     Ma     M     / SQn[        S5       H,  nUS-  nUR	                  USS9nU R                  XU   5        M.     / SQn[        S	5       H/  nUS-  S-   nUR	                  US
S9nU R                  XU   5        M1     / SQn[        S5       H/  nUS-  S-   nUR	                  USS9nU R                  XU   5        M1     g )NrW   r   )r   r   r   r   r!   r   r   r   r   r   start)align)r   r   r   r!   r   r   r   r$   end      ?quantize)r	   r8   lenr[   offsetToDepthrY   )	r   r   hr=   r?   ru   rI   postests	            r   testOffsetToDepthTest.testOffsetToDepth   sm   % s1vA4>>!$AD3qt9%$q'++A.Qs147|,A!"a!5!5a!8ADGAJ - &  )qAc'C??3g?6DT8, 
 &qAs7c/C??3e?4DT8,	  )qAs7d"C??3j?9DT8, r   c                	   / SQnU H  n[        U5      nU R                  [        UR                  5      S5        U R                  UR                  S5        UR
                  S:X  a0  UR                   H  nU R                  [        U5      S5        M      M  UR
                  S:X  d  M  UR                   H  nU R                  [        U5      S5        M      M     / SQnU H  n[        U5      nU R                  [        UR                  5      S5        U R                  UR                  S5        UR
                  S:X  a0  UR                   H  nU R                  [        U5      S5        M      M  UR
                  S:X  d  M  UR                   H  nU R                  [        U5      S5        M      M     / S	QnU Hx  n[        U5      nU R                  [        UR                  5      S
5        U R                  UR                  S5        UR                   H  nU R                  U[        5        M     Mz     / SQnU H  n[        U5      nU R                  [        UR                  5      S5        U R                  UR                  S5        UR
                  S:X  a0  UR                   H  nU R                  [        U5      S5        M      M  UR
                  S:X  d  M  UR                   H  nU R                  [        U5      S5        M      M     / SQnU H  n[        U5      nU R                  [        UR                  5      S5        U R                  UR                  S5        UR
                  S:X  a0  UR                   H  nU R                  [        U5      S5        M      M  UR
                  S:X  d  M  UR                   H  nU R                  [        U5      S5        M      M     / SQnU H  n[        U5      nU R                  [        UR                  5      S5        U R                  UR                  S5        UR
                  S:X  d  Ma  UR                   H  nU R                  [        U5      S5        M      M     / SQnU H@  nUR                  S5      u  pV[        U5      nU R                  UR                  US-   5        MB     g )N)r|   2/4z2/8z6/4rC   6/16r   Dupler#   r!   )r   3/49/49/8z9/16Tripler%   )3/8r   z3/32r   Single)z4/2rW   z4/8z12/412/8z12/16r   	Quadrupler'   )z5/25/45/8z15/4z15/8z15/16r"   	Quintuple   )18/4z18/8z18/16Sextuple   )z13/4z19/8z17/16r)   z-uple)	r   rY   r   beatSequencebeatCountName	numeratorassertIsInstancer
   split)r   srctsStrr2   ms	firstPartunuseds          r   testDefaultBeatPartitionsTest.testDefaultBeatPartitions   s   9Eu%BS115R--w7||q //B$$SWa0 *"//B$$SWa0 *  3Eu%BS115R--x8||q //B$$SWa0 *"//B$$SWa0 *  &Eu%BS115R--x8oo%%b-8 &	  =Eu%BS115R--{;||q //B$$SWa0 *#//B$$SWa0 *  =Eu%BS115R--{;||q //B$$SWa0 *#//B$$SWa0 *  (Eu%BS115R--z:||r!//B$$SWa0 *  (E %C 0Iu%BR--y7/BC	 r   c                @   / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/nU H  u  p#pE[        U5      n[        [        U5      5       HX  nX7   nU R                  UR	                  U5      XG   S5        U R                  UR                  U5      R                  XW   5        MZ     M     g )	N)r   r   r   r   r}   r   r}   r   g      @r   r   r   r   )r   r   r   r   )rW   r   r   r   )rC   r   r   r   r}   r   r   gUUUUUU?g?g       @竪@r}   r}   r}   r}   r}   )r   r   r   r   )r   r   r   r   )2/8+3/8r   )r   r}   r   r   )r   r   r}   r}   r}   r   )r   r8   r   assertAlmostEqualgetBeatProportionrY   getBeatDurationr/   )	r   datar   r   dstbeatDurr2   r=   qls	            r   #testBeatProportionFromTimeSignature(Test.testBeatProportionFromTimeSignature&  s     FEEbbcT

 )-$Eu%B3s8_V&&r';';B'?K  !3!3B!7!E!E!(- % )-r   c                t   [        S5      nUR                  S 5        U R                  [        U5      S5        [        S5      nUR                  S 5        U R                  [        U5      S5        [        S5      nUR                  S 5        U R                  [        U5      S5        [        S5      nUR                  S 5        U R                  [        U5      S5        [        S	5      nUR                  S 5        U R                  [        U5      S
5        [        S5      nUR                  S 5        U R                  [        U5      S5        [        S5      nUR                  S 5        U R                  [        U5      S5        [        S5      nUR                  S 5        U R                  [        U5      S5        g )Nr   z{{1/4+1/4}}r   z{{1/4+1/4+1/4}}rC   z{{3/8+3/8}}r   z{{3/16+3/16}}z3/8+3/8{{1/8+1/8+1/8}+{1/8+1/8+1/8}}r   {{1/8+1/8}+{1/8+1/8+1/8}}r   z{{1/8+1/8+1/8+1/8+1/8}}z3/8+3/4z{{1/8+1/8+1/8}+{1/4+1/4+1/4}})r	   subdividePartitionsEqualrY   rZ   )r   r   s     r   testSubdividePartitionsEqual!Test.testSubdividePartitionsEqual<  sg   5!
##D)R-05!
##D)R"345!
##D)R-06"
##D)R/29%
##D)R"AB9%
##D)R"=>5!
##D)R";<9%
##D)R"ABr   c                D   S/ SQ4S/ SQ4S/ SQ4S/ SQ4S/ S	Q4S
/ SQ4S/ SQ4S/ SQ4S/ SQ4S/ SQ4S/ SQ4S/ SQ4/nU HW  u  p#[        U5      nUR                  S5        U R                  UR                   Vs/ s H  oUR                  PM     snU5        MY     g s  snf )NrW   )r         ?r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   rC   )r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )$r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   z11/8),r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )
r   r   r   r   r   r   r   r   r   r   z3/8+2/8+3/4),r         ?r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r         ?r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   z1/2+2/16)(r         ?r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r!   )r   _setDefaultAccentWeightsrY   accentSequenceweight)r   pairsr   ru   ts1mts         r   testSetDefaultAccentWeights Test.testSetDefaultAccentWeights]  s	    FG_`FG  ; < YZ  ; <  < =  ; < 
'( 45  GHwD
L "LE&C((+#2D2DE2DBii2DEuM	 " Fs   ;B
c                   SSK Jn  [        S5      nUR                  5       R	                  U5      R                  S5      nSnUR                  SS5      nUR                  SS5      nU R                  UR                  U5      S	5        g )
Nr   )m21ToXmlr   zutf-8z5<time><beats>3</beats><beat-type>8</beat-type></time>  
)	music21.musicxmlr   r   GeneralObjectExporterparsedecodereplacerf   find)r   r   r2   xmlOutru   s        r   testMusicxmlDirectOutTest.testMusicxmlDirectOut  sq    -5!//177;BB7KGR(b)FKK.3r   c                   SSK Jn  UR                  S5      nUR                  R	                  S5        U R                  [        UR                  5      S5        U R                  [        UR                  5      S5        [        R                  " 5       nX#l
        [        R                  " SS9nUR                  US5        UR                   Vs/ s H  oDR                  PM     nnU R                  U/ S	Q5        UR!                  S
S9  UR                  S5      nU R                  UR"                  S5        U R                  [        UR                  5      S5        UR                  S5      nU R                  UR"                  S5        U R                  [        UR                  5      S5        UR                  S5      nU R                  UR"                  S5        U R                  [        UR                  5      S5        g s  snf )Nr   meterrC   r#   z{1/8+1/8+1/8+1/8+1/8+1/8}z	{3/8+3/8}r   rn   )123456T)inPlacere   SimplezI{{1/16+1/16}+{1/16+1/16}+{1/16+1/16}+{1/16+1/16}+{1/16+1/16}+{1/16+1/16}}Compoundr   z6/8 fast)music21r   r   r   	partitionrY   rZ   beamSequencer   r+   r,   r   rF   r   notesbeatStr	makeBeamsbeatDivisionCountName)r   r   r2   r3   rJ   ru   s         r   testSlowSixEightTest.testSlowSixEight  s   !  '
!!!$R__-/JKR__-{; NNIIC(	q!$%GG,GqG, >?	D!   ,118< W	

   '11:>R__-/NO  ,11:>R__-/NO% -s   G=c           	        [        S5      n[        R                  nU" SS9U" SS9U" SS9U" SS9U" SS9U" SS9/nUR                  U5      nU R	                  US /S-  5        U" SS9U" SS9U" SS9U" SS9U" SS9U" SS9/nUR                  U5      nU R	                  U Vs/ s H  n[        U5      PM     sn/ SQ5        g s  snf )NrW   ry   rz   quarterr#   )Noner   r   0<music21.beam.Beams <music21.beam.Beam 1/start>>z/<music21.beam.Beams <music21.beam.Beam 1/stop>>r   )r   r   rF   ro   rY   repr)r   fourFourrJ   dListbeamListrG   s         r   testMixedDurationsBeamsTest.testMixedDurationsBeams  s     'II!1)#4aX6F!1)#4aX6FH$$U+D6A:.!1)#4aX6F!1(#3QI5FH$$U+848a$q'84"	#4s   #Cc                   SSK Jn  UR                  S5      R                  5       nUR	                  5       nUR                  5       R                   Vs/ s H  oDR                  PM     nnU R                  U Vs/ s H  n[        U5      PM     sn/ SQ5        UR                  S5      nUR	                  5       nUR                  5       R                   Vs/ s H  oDR                  PM     nn[        [        U5      5       Vs/ s H  n[        U5      S-   [        XW   5      -   PM!     nnSU l        U R                  U/ SQ5        g s  snf s  snf s  snf s  snf )	Nr   	converterz!tinyNotation: 3/8 b8 c16 r e. d32)r   zR<music21.beam.Beams <music21.beam.Beam 1/stop>/<music21.beam.Beam 2/partial/left>>zL<music21.beam.Beams <music21.beam.Beam 1/start>/<music21.beam.Beam 2/start>>zm<music21.beam.Beams <music21.beam.Beam 1/stop>/<music21.beam.Beam 2/stop>/<music21.beam.Beam 3/partial/left>>z%tinyNotation: 2/4 b16 c' b a g f# g rr   i  )zN0 <music21.beam.Beams <music21.beam.Beam 1/start>/<music21.beam.Beam 2/start>>zP1 <music21.beam.Beams <music21.beam.Beam 1/continue>/<music21.beam.Beam 2/stop>>zQ2 <music21.beam.Beams <music21.beam.Beam 1/continue>/<music21.beam.Beam 2/start>>zL3 <music21.beam.Beams <music21.beam.Beam 1/stop>/<music21.beam.Beam 2/stop>>zN4 <music21.beam.Beams <music21.beam.Beam 1/start>/<music21.beam.Beam 2/start>>zT5 <music21.beam.Beams <music21.beam.Beam 1/continue>/<music21.beam.Beam 2/continue>>zL6 <music21.beam.Beams <music21.beam.Beam 1/stop>/<music21.beam.Beam 2/stop>>)r   r  r   flattenmakeNotationrecurser   rt   rY   r   r8   r   rZ   maxDiff)	r   r  bmbm2rJ   r  rG   r=   beamListReprs	            r   testMixedDurationBeams2Test.testMixedDurationBeams2  s   %__@AIIKoo%([[]%8%89%8GG%89&'hT!Wh'8	
 __DEoo%([[]%8%89%8GG%89BGHBVWBVQAtHK'88BVW (
 	 :' :Ws   E8E
E&Ec                8   SSK Jn  SSK Jn  UR                  SSS9R	                  5       R
                  n[        R                  " 5       nU H  nUR                  UR                  U5        M!     UR                  U5      nU R                  [        U5      S5        g )Nr   r  r   zC4 D16.tinyNotationformatz#<music21.meter.TimeSignature 11/32>r   r  r   r   r	  r   r   r+   r-   offsetbestTimeSignaturerY   r   r   r  r   s6m6elts6s          r   testBestTimeSignatureTest.testBestTimeSignature  sv    %!__Y~_>FFHNN^^BIIbii$ %%b)c$IJr   c                   SSK Jn  UR                  S5      nUR                  5       R	                  [
        R                  5       H  nUR                  5       Ul        M     UR                  S   n/ nUR	                  [
        R                  5       H'  nUR                  [        UR                  5      5        M)     U R                  U/ SQ5        g)z
Correct the TimeSignatures (4/4 in m. 1; no others) in a 4-measure score
of 12, 11.5, 12, 13 quarters, where one of the parts is a PartStaff with
multiple voices.
r   )corpusz!demos/incorrect_time_signature_pvr   )"<music21.meter.TimeSignature 12/4>z"<music21.meter.TimeSignature 23/8>r"  z"<music21.meter.TimeSignature 13/4>N)r   r!  r   r  getElementsByClassr   r+   r  r,   partsr;   r   rY   )r   r!  faultyr3   p1tsRepss         r   testBestTimeSignatureBTest.testBestTimeSignatureB  s     	#AB!44V^^DA113AO E\\!_&&v~~6AMM$q/0 7 "H 	Ir   c                p   SSK Jn  SSK Jn  UR                  SSS9R	                  5       R
                  n[        R                  " 5       nU H  nUR                  UR                  U5        M!     UR                  U5      nU R                  [        U5      S5        UR                  SSS9R	                  5       R
                  n[        R                  " 5       nU H  nUR                  UR                  U5        M!     UR                  U5      nU R                  [        U5      S	5        UR                  S
SS9R	                  5       R
                  n[        R                  " 5       nU H  nUR                  UR                  U5        M!     UR                  U5      nU R                  [        U5      S5        g )Nr   r  r   zC4.r  r  z!<music21.meter.TimeSignature 3/8>zC2..!<music21.meter.TimeSignature 7/8>zC2...#<music21.meter.TimeSignature 15/16>r  r  s          r   !testBestTimeSignatureDoubleDotted&Test.testBestTimeSignatureDoubleDotted$  sR   %!__U>_:BBDJJ^^BIIbii$ %%b)c$GH__VN_;CCEKK^^BIIbii$ %%b)c$GH__W^_<DDFLL^^BIIbii$ %%b)c$IJr   c                T   SSK Jn  SSK Jn  UR                  SSS9R	                  5       R
                  n[        R                  " 5       nU H  nUR                  UR                  U5        M!     UR                  U5      nU R                  [        U5      S5        UR                  SSS9R	                  5       R
                  n[        R                  " 5       nU H  nUR                  UR                  U5        M!     UR                  U5      nU R                  [        U5      S	5        g
)zU
These add up the same as testBestTimeSignatureDoubleDotted, but
use multiple notes.
r   r  r   zC2 D4 E8r  r  r+  zC2 D4 E8 F16r,  Nr  r  s          r   "testBestTimeSignatureDoubleDottedB'Test.testBestTimeSignatureDoubleDottedB=  s    
 	&!__Z_?GGIOO^^BIIbii$ %%b)c$GH__^N_CKKMSS^^BIIbii$ %%b)c$IJr   c                T   SSK Jn  SSK Jn  UR                  SSS9R	                  5       R
                  n[        R                  " 5       nU H  nUR                  UR                  U5        M!     UR                  U5      nU R                  [        U5      S5        UR                  SSS9R	                  5       R
                  n[        R                  " 5       nU H  nUR                  UR                  U5        M!     UR                  U5      nU R                  [        U5      S	5        g
)z
These add up the same as testBestTimeSignatureDoubleDotted, but
use multiple notes which are dotted divisions of the original
r   r  r   z	C4.. D4..r  r  r+  zC4... D4...r,  Nr  r  s          r   "testBestTimeSignatureDoubleDottedC'Test.testBestTimeSignatureDoubleDottedCR  s    
 	&!__[_@HHJPP^^BIIbii$ %%b)c$GH__]>_BJJLRR^^BIIbii$ %%b)c$IJr   c                h    [        S5      nUR                  nU R                  [        U5      S5        g )N3+2/8z	{3/8+2/8})r   r   rY   rZ   )r   ts328beatSeqs      r   testCompoundSameDenominator Test.testCompoundSameDenominatorh  s+    g&$$W{3r   c                   [        S5      n[        S5      nU R                  UR                  S5        U R                  [        UR                  5      S5        U R                  UR                  S5        U R                  [        UR                  5      S5        U R                  X5        [        S5      nU R                  UR                  S5        U R                  [        UR                  5      S5        U R                  X5        [        S5      n[        5       nU R                  XE5        [        S5      nU R                  UR                  S	5        U R                  X5        U R                  [        S5      [        S	5      5        U R                  [        5       [        R                  " 5       5        U R                  [        R                  " 5       [        5       5        g
)z
Additional tests of TimeSignature object equality.
Apart from this and the doc tests,
see also testTimeSignatureDeepcopy for a test of
time signatures with different structure with same ratioString
(fast vs slow 6/8).
z2+3/8r   r   r6  z3/8+2/8z{{1/8+1/8+1/8}+{1/8+1/8}}rW   Cutr|   N)r   rY   ratioStringrZ   r   rf   r   rF   )r   
oneKindOf5sameKindOf5otherKindOf5oneKindOf44sameKindOf44otherKindOf44s          r   testEqualityTest.testEqualitym  so    #7+
#G,//;Z4457RS00)<[5568ST1$W-119=\6679TUJ5 $E*$3%e,22E:J6M%0-2FG 	MOTYY[9DIIK9r   )r  N)rN   rO   rP   rQ   r\   rb   rk   rv   r   r   r   r   r   r   r   r   r  r  r  r(  r-  r0  r3  r9  rD  rR   rM   r   r   rT   rT   M   s~    	N"C&<O~->HDT-,CBMN^
4PB#":KI&K2K*K,4
':r   rT   __main__)
__future__r   r_   r9   unittestr   r   r   r   r   music21.meter.baser   music21.meter.corer	   r
   TestCaser   rT   rN   mainTestrM   r   r   <module>rM     sm    #        , ;18$$ 1hG	:8 G	:V zT r   