
    rh]@                        S SK J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\R                  5      r	\
S	:X  a  S SKr\R                  " \	5        gg)
    )annotationsN)corpus)interval)note)pitchc                  \    \ 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)Test   c                8   [         R                  " S5      n[         R                  " S5      n[        R                  " X5      nU R	                  UR
                  S5        U R                  UR                  U5        U R                  UR                  U5        [        R                  " X!S9nU R	                  UR
                  S5        U R	                  UR                  S5        U R                  UR                  U5        U R                  UR                  U5        g )NA4E5P5)
pitchStartpitchEndP-5)
r   Pitchr   IntervalassertEqualnameassertIsr   r   directedName)selfp1p2intvs       T/home/james-whalen/.local/lib/python3.13/site-packages/music21/test/test_interval.pytestConstructorPitchesTest.testConstructorPitches   s    [[[[  (D)door*dmmR(   B<D)**E2door*dmmR(    c                $   [         R                  " 5       n[         R                  " 5       nSUl        SUl        SUl        SUl        [        R
                  " S5      UR                  l        [        R                  " XS9nUR                  nUR                  nU R                  UR                  5        U R                  UR                  5        [        R
                  " S5      UR                  l        [        R                  " XS9n[        R                  " X5      nU R!                  U[        R"                  5        UR$                  nU R'                  UR(                  UR(                  5        U R'                  UR*                  S5        U R'                  UR,                  S	5        U R'                  UR.                  S
5        U R'                  UR0                  [        R2                  R4                  5        UR                  n	U	R                  n
U R'                  U
R6                  S5        U R'                  U
R8                  S5        U R'                  U
R:                  S5        U R'                  U
R<                  S5        U R'                  UR(                  S5        U R'                  UR8                  S5        U R'                  UR>                  S5        U R'                  UR@                  S5        [         R                  " 5       nSUl        SUl        SUR                  l        [        R"                  " S5      nU R'                  UR(                  S5        U R'                  URB                  S5        U R'                  UR8                  S5        U R'                  UR>                  S5        U R'                  UR@                  S5        [         R                  " 5       nSUl        [         R                  " 5       nSUl        SUl        [        R                  " X5      nU R'                  URD                  S5        [         R                  " 5       nSUl        SUl        [         R                  " 5       nSUl        SUl        [        R                  " UU5      n[         R                  " 5       nSUl        SUl        [        RF                  " UU5      nU R'                  UR.                  S5        U R'                  UR                  S5        [        R                  " S5      n[        RF                  " UU5      n[        RF                  " US5      nU R'                  UR.                  S5        U R'                  UR.                  UR.                  5        [        R                  " S5      n[        RF                  " UU5      nU R'                  UR.                  S5        [         R                  " 5       n[        RF                  " US5      nU R'                  UR.                  S5        U R'                  UR                  S5        [        RF                  " US5      nU R'                  UR.                  S5        U R'                  UR                  S5        [        RF                  " US 5      nU R'                  UR.                  S!5        U R'                  UR                  S5        [         R                  " S"5      n[         R                  " S5      n[         R                  " S#5      n[         R                  " S$5      n[         R                  " S$5      n [        RH                  " UU5      n![        RH                  " UU5      n"[        RH                  " UU 5      n#U R'                  U!U5        U R'                  U"U5        U R'                  U#U5        [        RJ                  " UU5      n$[        RJ                  " UU5      n%[        RJ                  " UU5      n&[        RJ                  " UU5      n'U R'                  U$U5        U R'                  U%U5        U R'                  U&U5        U R'                  U'U5        [        RL                  " UU5      n([        RL                  " UU5      n)[        RL                  " UU 5      n*U R'                  U(U5        U R'                  U)U5        U R'                  U*U5        [        RN                  " UU5      n+[        RN                  " UU5      n,[        RN                  " UU5      n-U R'                  U+U5        U R'                  U,U5        U R'                  U-U5        [         R                  " 5       n.[         R                  " 5       n/SU/l        [        R                  " U.U/5      n0U R'                  U0R                  R:                  S5        U R'                  U0R                  RP                  S%5        U R'                  U0RR                  S&5        U R'                  U0RT                  S'5        [         R                  " 5       n1S(U1l        SU1l        [        R                  " U.U15      n2U R'                  U2R                  RV                  S)5        U R'                  U2R                  RT                  S*5        U R'                  U2R                  RX                  S+5        U R'                  U2R                  RZ                  S,5        U2R\                  n3U R'                  U3RD                  S-5        U R'                  U3R                  RX                  S,5        U R'                  U3R                  RZ                  S,5        U R'                  U3R\                  RD                  S.5        g )/NC   B   -	noteStartnoteEnd#zDiminished SeventhzAscending Diminished Seventhd14         	      Dii
      zB-zDiminished OctavezE-zF#   zE#z-P5r   zG-P8m7zdd-2zB##EzF-FizP-8P1GzDescending Perfect FourthzP-4P4r   zPerfect FifthzPerfect Fourth)/r   Notestepoctaver   
Accidental
accidentalr   r   diatonicgenericassertFalseisDiatonicStep
assertTrueisSkipnotesToChromaticassertIsInstanceChromaticInterval	chromaticr   	semitonessimpleNiceNamedirectedSimpleNiceNamer   	specifier	Specifier
DIMINISHEDdirected
undirectedsimpleDirectedsimpleUndirectedmod12intervalClasscentsniceNametransposeNotegetWrittenHigherNotegetAbsoluteHigherNotegetWrittenLowerNotegetAbsoluteLowerNotesemiSimpleDirectedr   directedSimpleNamedirectedNiceName
simpleNamemod7
complement)4r   n1n2int0dInt0gInt0int1cInt1cInt2dInt1gInt1n4cIlowBhighBbdimOctnoteA1noteA2
intervalA1noteA3noteA4	interval1n5n6n7n8n9n10nEnESharpnFFlatnF1nF2higher1higher2higher3higher4higher5higher6higher7lower1lower2lower3lower4lower5lower6middleClowerCdescendingOctavelowerGdescendingFourthperfectFifths4                                                       r   	testFirstTest.testFirst   s   YY[YY[		#..s3  2:--.%#..s3  2: ))"1eX%?%?@%//:,,.BC446TUE*););)F)FG ,))2.--q1//3"-))2.a(,,a0YY[	! '',s+5)+2&))1-yy{	""40*=>&&vv6
''
;d+*%%e,	##B	2##B.$'"''* %%e,	##B	2$'YY[##B-#&A&##B-$'A&$$R05)Q' YYs^))D/4iiniin//G<//@//S9'*&)#&00W=00&A00#>00g>'*'*'*#&--gr:--fg>--c37$)%..w;..vw?..w<$()))+#,,Wf=)11@@!D)11DDbI)66>)<<dC#,,Wf=)22CC4	6)22EEuM)22==tD)2277>'22..@..994@..33T:0099;KLr   c                    [         R                  " S5      n[         R                  " S5      n[        R                  " X5      nU R	                  UR
                  S5        g )Ncgr$   )r   r   r   r   r   rU   )r   r   r   is       r   testCreateIntervalFromPitch Test.testCreateIntervalFromPitch   sB    [[[[b%!,r   c                   S n[         R                  " S5      nUR                  S   R                  SS5      nU R	                  U" U5      / SQ5        UR                  5       R                  S5      nU R	                  U" U5      / SQ5        g )	Nc                    / nU R                  5       R                   H\  nUR                  R                  b1  UR	                  UR                  R                  R
                  5        MK  UR	                  S5        M^     U$ )Nx)flattennotesr   r?   appenddisplayStatus)s_innerpostes      r   collectAccidentalDisplayStatusBTest.testTransposeImported.<locals>.collectAccidentalDisplayStatus   s]    D__&,,77%%1KK 2 2 @ @AKK$	 -
 Kr   zbach/bwv66.6r/   r2      )r   Fr   r   TFr   FFFFFFr   r   r   FFFr   r   r   r   TFp5)r   Nr   r   NNNNNNNNNr   NNNNNr   r   r   NNN)r   parsepartsmeasuresr   r   	transpose)r   r   ssSubsTransposeds        r   testTransposeImportedTest.testTransposeImported   s    	 LL(wwqz""1a(7=;	<
 lln..t4 	7DA	Br   c                (   [         R                  " S5      nU R                  UR                  R                  S5        U R                  UR                  S5        [         R                  " S5      nU R                  UR                  R                  S5        U R                  UR                  S5        [         R                  " S5      nU R                  UR                  R                  S5        U R                  UR                  S	5        [         R                  " S
5      nU R                  UR                  R                  S5        U R                  UR                  S5        [         R                  " S5      nU R                  UR                  S5        U R                  UR                  S5        U R                  [        U5      S5        U R                  UR                  5       S5        [         R                  " S5      nU R                  [        U5      S5        U R                  UR                  5       S5        [         R                  " S5      nU R                  [        U5      S5        U R                  UR                  5       S5        [         R                  " S5      nU R                  [        U5      S5        U R                  UR                  5       S5        [         R                  " S5      n[        R                  " S5      nUR                  U5      nU R                  [        U5      S5        [         R                  " S5      n[        R                  " S5      nUR                  U5      nU R                  [        U5      S5        [         R                  " S5      n[        R                  " S5      nUR                  U5      nU R                  [        U5      S5        [         R                  " S5      n[        R                  " S5      nS Ul        U R                  [        U5      S!5        UR                  U5      nU R                  [        U5      S"5        [         R                  " S#5      n[        R                  " S5      nS$Ul        U R                  [        U5      S%5        UR                  U5      nU R                  [        U5      S&5        [         R                  " S#5      n[        R                  " S5      nS'Ul        UR                  U5      nU R                  [        U5      S(5        [         R                  " S)5      n[        R                  " S*5      nS Ul        UR                  U5      nU R                  [        U5      S+5        [         R                  " S,5      n[        R                  " S*5      nSUl        UR                  U5      nU R                  [        U5      S-5        [         R                  " S.5      n[        R                  " S*5      nSUl        UR                  U5      nU R                  [        U5      S/5        [         R                  " S05      n[        R                  " S*5      nSUl        UR                  U5      nU R                  [        U5      S15        [         R                  " S05      n[        R                  " S*5      nS$Ul        UR                  U5      nU R                  [        U5      S25        g )3Nm3i,  g     r@r   i  g     @   i   g      @g      !@g     @g      @g     h@z%<music21.interval.Interval P4 (+25c)>   g      @z%<music21.interval.Interval P4 (-25c)>igQ@z%<music21.interval.Interval M3 (+48c)>g      H@g      @z%<music21.interval.Interval M3 (+50c)>g      I@c4zF4(+25c)g333333@z	F#4(-20c)g      @F#4r$   r1   zC4(+10c)zF4(+10c)g@izC4(-20c)G4P   zG#4g?e4z	E~4(-20c)g?zE4(+10c)g(@zE5(+10c)g33333'@zE5(-10c)z	E`5(+15c))r   r   r   rI   rV   str_diatonicIntervalCentShiftassertAlmostEqualr   r   transposePitch	microtone)r   r   r   r   s       r   testIntervalMicrotonesATest.testIntervalMicrotonesA   sP   d#**C0%(d#**C0%(a **C0%(c"**E2%(d#%(%(Q!HI557<d#Q!HI557=d#Q!HIq;;=tDc"Q!HIq;;=tDd#[[b!R*-d#[[b!R+.d#[[b!R%(a [[R*-b!R*-d#[[R*-b!R$'d#[[b!R%(d#[[b!R+.d#[[b!R*-e$[[b!R*-e$[[b!R*-e$[[b!R+.r   c                l   [         R                  " [        R                  " S5      [        R                  " S5      5      nU R	                  [        U5      S5        [         R                  " [        R                  " S5      [        R                  " S5      5      nU R	                  [        U5      S5        g )Nr   zc#4z<music21.interval.Interval A1>zc~4z%<music21.interval.Interval A1 (-50c)>)r   r   r   r;   r   r   )r   r   s     r   testIntervalMicrotonesBTest.testIntervalMicrotonesBZ  sr    diiotyy/?@Q!ABdiiotyy/?@Q!HIr   c                    [         R                  " S5      n[         R                  " S5      n[        R                  " XS9nUR                  nU R                  US5        g )NC4zC-4r&   zDescending Diminished Unison)r   r;   r   r   r_   r   )r   nsner   r_   s        r   testDescendingAugmentedUnison"Test.testDescendingAugmentedUnisona  sK    YYt_YYu7--)+IJr   c                h   [         R                  " S5      n[        R                  " S5      nUR	                  U5      nU R                  UR                  S5        [         R                  " S5      n[        R                  " S5      nUR	                  U5      nU R                  UR                  S5        g )Nr   r$   F4zB#3)r   r;   r   rH   r   r   nameWithOctave)r   r   r   rd   s       r   "testTransposeWithChromaticInterval'Test.testTransposeWithChromaticIntervalh  s    YYt_&&q)\\!_**D1YYu&&q)\\!_**D1r   c                L   [         R                  " S5      n[        R                  " S5      nU R	                  UR
                  5        UR                  U5      nU R                  UR                  UR                  5        U R                  UR                  UR                  5        g )NzD#4r   )r   r   r   r   rD   implicitDiatonicr   r   psassertNotEqualr   )r   pr   r   s       r   testTransposeImplicitTest.testTransposeImplicits  sr    KKa **+a ruu%AFFBGG,r   c                   [         R                  " S5      n[        R                  " S5      n/ n[	        S5       H/  nUR                  UR                  5        UR                  US SS9  M1     U R                  U/ SQ5        U R                  [         R                  S5         UR                  US S9  S S S 5        UR                  U5      nU R                  UR                  S	5        g ! , (       d  f       N<= f)
NC1r   !   T)maxAccidentalinPlace)!r   G1D2A2E3B3r   zC#5zG#5zD#6zA#6zE#7zB#7zF##8zC##9zG##9zD##10zA##10zE##11zB##11zF###12zC###13zG###13zD###14zA###14zE###15zB###15zF####16zC####17zG####17zD####18zA####18zE####19z$5 is not a supported accidental type)r   zB-20)r   r   r   r   ranger   r   r   r   assertRaisesRegexAccidentalException)r   r   r   out_r   s         r   testRepeatedTransposePitchTest.testRepeatedTransposePitch{  s    KK  &rAJJq''(tD  		
 ##E$=$=$JL6L   #**F3	L Ls   !C((
C6c                   [         R                  " S5      nU R                  [        5         [        R
                  " SUS9nS S S 5        [        R
                  " SS9nXl        U R                  UR                  R                  S5        UR                  nU R                  [        5         [        R
                  " SXS9  S S S 5        U R                  [        5         [        R
                  " [        R                  " S5      UUS	9  S S S 5        [        R
                  " SXS9nU R                  UR                  U5        U R                  UR                  U5        U R                  UR                  S5        U R                  UR                  S
5        [        R
                  " [        R                  " S
5      UUS	9nU R                  UR                  U5        U R                  UR                  U5        U R                  UR                  S5        U R                  UR                  S
5        g ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNS= f)Nr   r:   )r   r'   )r   r   d5)r   r'   r(   r   )rI   r'   r(   r$   )r   r;   assertRaises
ValueErrorr   r   r'   r   r(   r   rH   r   r   rJ   )r   noteCr   noteFi2i3s         r   testIntervalWithOneNoteGiven!Test.testIntervalWithOneNoteGiven  s   		$z*!!tu=A +4(1148		 z*45H + z*(B(B1(E(-&+- + DEIbllE*bjj%($'q))C)CA)F).',. 	bllE*bjj%($'q)? +* +* +*s#   H1+I+I1
I 
I
I$c                8   [         R                  " 5       nU R                  UR                  S5        [         R                  " 5       nU R                  UR                  S5        U R                  UR
                  S5        U R                  UR                  S5        g)z,
As of v8, an empty Interval is equal to P1
g        r   r8   N)r   DiatonicIntervalr   rV   r   rU   r   )r   emptys     r   testEmptyIntervalProperties Test.testEmptyIntervalProperties  sr     ))+c*!!#c*,,a0T*r    N)__name__
__module____qualname____firstlineno__r   r   r   r   r   r   r   r   r   r   r   r   __static_attributes__r   r   r   r	   r	      sG    )vMp-B6c/JJK	2-4.!*H
+r   r	   __main__)
__future__r   unittestmusic21r   r   r   r   TestCaser	   r   mainTestr   r   r   <module>r     sL    "     u+8 u+p zT r   