
    3j]@                        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  G d dej                        Z	e
d	k(  rd dlZ ej                  e	       yy)
    )annotationsN)corpus)interval)note)pitchc                  T    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d Zy)Testc                :   t        j                  d      }t        j                  d      }t        j                  ||      }| j	                  |j
                  d       | j                  |j                  |       | j                  |j                  |       t        j                  ||      }| j	                  |j
                  d       | j	                  |j                  d       | j                  |j                  |       | j                  |j                  |       y )NA4E5P5)
pitchStartpitchEndP-5)
r   Pitchr   IntervalassertEqualnameassertIsr   r   directedName)selfp1p2intvs       G/DATA/.local/lib/python3.12/site-packages/music21/test/test_interval.pytestConstructorPitcheszTest.testConstructorPitches   s    [[[[  R(D)door*dmmR(   B<D)**E2door*dmmR(    c                   t        j                         }t        j                         }d|_        d|_        d|_        d|_        t	        j
                  d      |j                  _        t        j                  ||      }|j                  }|j                  }| j                  |j                         | j                  |j                         t	        j
                  d      |j                  _        t        j                  ||      }t        j                  ||      }| j!                  |t        j"                         |j$                  }| j'                  |j(                  |j(                         | j'                  |j*                  d       | j'                  |j,                  d	       | j'                  |j.                  d
       | j'                  |j0                  t        j2                  j4                         |j                  }	|	j                  }
| j'                  |
j6                  d       | j'                  |
j8                  d       | j'                  |
j:                  d       | j'                  |
j<                  d       | j'                  |j(                  d       | j'                  |j8                  d       | j'                  |j>                  d       | j'                  |j@                  d       t        j                         }d|_        d|_        d|j                  _        t        j"                  d      }| j'                  |j(                  d       | j'                  |jB                  d       | j'                  |j8                  d       | j'                  |j>                  d       | j'                  |j@                  d       t        j                         }d|_        t        j                         }d|_        d|_        t        j                  ||      }| j'                  |jD                  d       t        j                         }d|_        d|_        t        j                         }d|_        d|_        t        j                  ||      }t        j                         }d|_        d|_        t        jF                  ||      }| j'                  |j.                  d       | j'                  |j                  d       t        j                  d      }t        jF                  ||      }t        jF                  |d      }| j'                  |j.                  d       | j'                  |j.                  |j.                         t        j                  d      }t        jF                  ||      }| j'                  |j.                  d       t        j                         }t        jF                  |d      }| j'                  |j.                  d       | j'                  |j                  d       t        jF                  |d      }| j'                  |j.                  d       | j'                  |j                  d       t        jF                  |d       }| j'                  |j.                  d!       | j'                  |j                  d       t        j                  d"      }t        j                  d      }t        j                  d#      }t        j                  d$      }t        j                  d$      } t        jH                  ||      }!t        jH                  ||      }"t        jH                  ||       }#| j'                  |!|       | j'                  |"|       | j'                  |#|       t        jJ                  ||      }$t        jJ                  ||      }%t        jJ                  ||      }&t        jJ                  ||      }'| j'                  |$|       | j'                  |%|       | j'                  |&|       | j'                  |'|       t        jL                  ||      }(t        jL                  ||      })t        jL                  ||       }*| j'                  |(|       | j'                  |)|       | j'                  |*|       t        jN                  ||      }+t        jN                  ||      },t        jN                  ||      }-| j'                  |+|       | j'                  |,|       | j'                  |-|       t        j                         }.t        j                         }/d|/_        t        j                  |.|/      }0| j'                  |0j                  j:                  d       | j'                  |0j                  jP                  d%       | j'                  |0jR                  d&       | j'                  |0jT                  d'       t        j                         }1d(|1_        d|1_        t        j                  |.|1      }2| j'                  |2j                  jV                  d)       | j'                  |2j                  jT                  d*       | j'                  |2j                  jX                  d+       | j'                  |2j                  jZ                  d,       |2j\                  }3| j'                  |3jD                  d-       | j'                  |3j                  jX                  d,       | j'                  |3j                  jZ                  d,       | j'                  |3j\                  jD                  d.       y )/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   	testFirstzTest.testFirst   s   YY[YY[		#..s3  2r:--.%#..s3  2r: ))"b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                    t        j                  d      }t        j                  d      }t        j                  ||      }| j	                  |j
                  d       y )Ncgr"   )r   r   r   r   r   rS   )r   r   r   is       r   testCreateIntervalFromPitchz Test.testCreateIntervalFromPitch   sD    [[[[b"%!,r   c                   d }t        j                  d      }|j                  d   j                  dd      }| j	                   ||      g d       |j                         j                  d      }| j	                   ||      g d       y )	Nc                    g }| j                         j                  D ]Y  }|j                  j                  0|j	                  |j                  j                  j
                         I|j	                  d       [ |S )Nx)flattennotesr   r=   appenddisplayStatus)s_innerpostes      r   collectAccidentalDisplayStatuszBTest.testTransposeImported.<locals>.collectAccidentalDisplayStatus   s]    D__&,,77%%1KK 2 2 @ @AKK$	 -
 Kr   zbach/bwv66.6r-   r0      )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   testTransposeImportedzTest.testTransposeImported   s    	 LL(wwqz""1a(7=;	<
 lln..t4 	7DA	Br   c                   t        j                  d      }| j                  |j                  j                  d       | j                  |j                  d       t        j                  d      }| j                  |j                  j                  d       | j                  |j                  d       t        j                  d      }| j                  |j                  j                  d       | j                  |j                  d	       t        j                  d
      }| j                  |j                  j                  d       | j                  |j                  d       t        j                  d      }| j                  |j                  d       | j                  |j                  d       | j                  t        |      d       | j                  |j                         d       t        j                  d      }| j                  t        |      d       | j                  |j                         d       t        j                  d      }| j                  t        |      d       | j                  |j                         d       t        j                  d      }| j                  t        |      d       | j                  |j                         d       t        j                  d      }t        j                  d      }|j                  |      }| j                  t        |      d       t        j                  d      }t        j                  d      }|j                  |      }| j                  t        |      d       t        j                  d      }t        j                  d      }|j                  |      }| j                  t        |      d       t        j                  d      }t        j                  d      }d |_        | j                  t        |      d!       |j                  |      }| j                  t        |      d"       t        j                  d#      }t        j                  d      }d$|_        | j                  t        |      d%       |j                  |      }| j                  t        |      d&       t        j                  d#      }t        j                  d      }d'|_        |j                  |      }| j                  t        |      d(       t        j                  d)      }t        j                  d*      }d |_        |j                  |      }| j                  t        |      d+       t        j                  d,      }t        j                  d*      }d|_        |j                  |      }| j                  t        |      d-       t        j                  d.      }t        j                  d*      }d|_        |j                  |      }| j                  t        |      d/       t        j                  d0      }t        j                  d*      }d|_        |j                  |      }| j                  t        |      d1       t        j                  d0      }t        j                  d*      }d$|_        |j                  |      }| j                  t        |      d2       y )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"   r/   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   rG   rT   str_diatonicIntervalCentShiftassertAlmostEqualr   r   transposePitch	microtone)r   r   r   r   s       r   testIntervalMicrotonesAz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                `   t        j                  t        j                  d      t        j                  d            }| j	                  t        |      d       t        j                  t        j                  d      t        j                  d            }| j	                  t        |      d       y )Nr   zc#4z<music21.interval.Interval A1>zc~4z%<music21.interval.Interval A1 (-50c)>)r   r   r   r9   r   r   )r   r   s     r   testIntervalMicrotonesBzTest.testIntervalMicrotonesBZ  sr    diiotyy/?@Q!ABdiiotyy/?@Q!HIr   c                    t        j                  d      }t        j                  d      }t        j                  ||      }|j                  }| j                  |d       y )NC4zC-4r$   zDescending Diminished Unison)r   r9   r   r   r]   r   )r   nsner   r]   s        r   testDescendingAugmentedUnisonz"Test.testDescendingAugmentedUnisona  sM    YYt_YYuB7--)+IJr   c                `   t        j                  d      }t        j                  d      }|j	                  |      }| j                  |j                  d       t        j                  d      }t        j                  d      }|j	                  |      }| j                  |j                  d       y )Nr   r"   F4zB#3)r   r9   r   rF   r   r   nameWithOctave)r   r   r   rb   s       r   "testTransposeWithChromaticIntervalz'Test.testTransposeWithChromaticIntervalh  s    YYt_&&q)\\!_**D1YYu&&q)\\!_**D1r   c                H   t        j                  d      }t        j                  d      }| j	                  |j
                         |j                  |      }| j                  |j                  |j                         | j                  |j                  |j                         y )NzD#4r   )r   r   r   r   rB   implicitDiatonicr   r   psassertNotEqualr   )r   pr   r   s       r   testTransposeImplicitzTest.testTransposeImplicits  sr    KKa **+a ruu%AFFBGG,r   c                   t        j                  d      }t        j                  d      }g }t	        d      D ]1  }|j                  |j                         |j                  |d d       3 | j                  |g d       | j                  t         j                  d      5  |j                  |d        d d d        |j                  |      }| j                  |j                  d	       y # 1 sw Y   7xY w)
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   testRepeatedTransposePitchzTest.testRepeatedTransposePitch{  s    KK  &rAJJq''(tD  		
 ##E$=$=$JL6L   #**F3	L Ls    C**C3c                   t        j                  d      }| j                  t              5  t	        j
                  d|      }d d d        t	        j
                  d      }||_        | j                  |j                  j                  d       |j                  }| j                  t              5  t	        j
                  d||       d d d        | j                  t              5  t	        j
                  t	        j                  d      ||	       d d d        t	        j
                  d||      }| j                  |j                  |       | j                  |j                  |       | j                  |j                  d       | j                  |j                  d
       t	        j
                  t	        j                  d
      ||	      }| j                  |j                  |       | j                  |j                  |       | j                  |j                  d       | j                  |j                  d
       y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   HxY w)Nr   r8   )r   r%   )r   r   d5)r   r%   r&   r   )rG   r%   r&   r"   )r   r9   assertRaises
ValueErrorr   r   r%   r   r&   r   rF   r   r   rH   )r   noteCr   noteFi2i3s         r   testIntervalWithOneNoteGivenz!Test.testIntervalWithOneNoteGiven  s   		$z*!!tu=A +4(1148		 z*45%H + z*(B(B1(E(-&+- + DE5IbllE*bjj%($'q))C)CA)F).',. 	bllE*bjj%($'q)? +* +* +*s#   H=/I
%,I=I
II!c                4   t        j                         }| j                  |j                  d       t        j                         }| j                  |j                  d       | j                  |j
                  d       | j                  |j                  d       y)z<
        As of v8, an empty Interval is equal to P1
        g        r   r6   N)r   DiatonicIntervalr   rT   r   rS   r   )r   emptys     r   testEmptyIntervalPropertiesz Test.testEmptyIntervalProperties  sr     ))+c*!!#c*,,a0T*r   N)__name__
__module____qualname__r   r   r   r   r   r   r   r   r   r   r   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      sN    "     u+8 u+p zGT r   