
    |pj:                     P    d dl Zd dlmc mZ d dlmZmZm	Z	m
Z
 d Zd Zd Zd ZdS )    N)FinalVoiceoverScript,build_accessible_script_draft_from_voiceoverbuild_truetrace_final_voiceovervalidate_final_voiceover_scriptc            
         t          d          } | j        }d}||k    }|st          j        d|fd||f          dt	          j                    v st          j        |           rt          j        |           ndt          j        |          t          j        |          dz  }dd|iz  }t          t          j	        |                    d x}x}}| j
        }d}||k    }|st          j        d|fd	||f          dt	          j                    v st          j        |           rt          j        |           ndt          j        |          t          j        |          dz  }dd|iz  }t          t          j	        |                    d x}x}}| j        }d
}||k    }|st          j        d|fd||f          dt	          j                    v st          j        |           rt          j        |           ndt          j        |          t          j        |          dz  }dd|iz  }t          t          j	        |                    d x}x}}| j        }d}||k    }|st          j        d|fd||f          dt	          j                    v st          j        |           rt          j        |           ndt          j        |          t          j        |          dz  }dd|iz  }t          t          j	        |                    d x}x}}| j        }|j        } |            }t          |          }d}	||	k    }
|
s+t          j        d|
fd||	f          dt	          j                    v st          j        t                    rt          j        t                    nddt	          j                    v st          j        |           rt          j        |           ndt          j        |          t          j        |          t          j        |          t          j        |          t          j        |	          dz  }dd|iz  }t          t          j	        |                    d x}x}x}x}x}
}	| j        }|j        }d} ||          }|sddt	          j                    v st          j        |           rt          j        |           ndt          j        |          t          j        |          t          j        |          t          j        |          dz  }t          t          j	        |                    d x}x}x}}d}| j        }||v }|st          j        d|fd||f          t          j        |          dt	          j                    v st          j        |           rt          j        |           ndt          j        |          dz  }dd|iz  }t          t          j	        |                    d x}x}}d}| j        }||v }|st          j        d|fd||f          t          j        |          dt	          j                    v st          j        |           rt          j        |           ndt          j        |          dz  }dd|iz  }t          t          j	        |                    d x}x}}d}| j        }|j        } |            }||v}|st          j        d|fd||f          t          j        |          dt	          j                    v st          j        |           rt          j        |           ndt          j        |          t          j        |          t          j        |          d z  }d!d"|iz  }t          t          j	        |                    d x}x}x}x}}d#}| j        }|j        } |            }||v}|st          j        d|fd||f          t          j        |          dt	          j                    v st          j        |           rt          j        |           ndt          j        |          t          j        |          t          j        |          d z  }d!d"|iz  }t          t          j	        |                    d x}x}x}x}}d$}| j        }|j        } |            }||v}|st          j        d|fd||f          t          j        |          dt	          j                    v st          j        |           rt          j        |           ndt          j        |          t          j        |          t          j        |          d z  }d!d"|iz  }t          t          j	        |                    d x}x}x}x}}d%}| j        }||v}|st          j        d|fd&||f          t          j        |          dt	          j                    v st          j        |           rt          j        |           ndt          j        |          dz  }dd|iz  }t          t          j	        |                    d x}x}}| j        }d'}||k    }|st          j        d|fd(||f          dt	          j                    v st          j        |           rt          j        |           ndt          j        |          t          j        |          dz  }dd|iz  }t          t          j	        |                    d x}x}}| j        }d'}||k    }|st          j        d|fd)||f          dt	          j                    v st          j        |           rt          j        |           ndt          j        |          t          j        |          dz  }dd|iz  }t          t          j	        |                    d x}x}}d S )*N%truetrace-ai-automation-quiet-rot-38s==)z4%(py2)s
{%(py2)s = %(py0)s.candidate_id
} == %(py5)sscriptpy0py2py5assert %(py7)spy7en)z0%(py2)s
{%(py2)s = %(py0)s.language
} == %(py5)sen-GB-RyanNeural)z-%(py2)s
{%(py2)s = %(py0)s.voice
} == %(py5)s%   )z?%(py2)s
{%(py2)s = %(py0)s.target_duration_seconds
} == %(py5)sU   )<=)z}%(py9)s
{%(py9)s = %(py0)s(%(py7)s
{%(py7)s = %(py5)s
{%(py5)s = %(py3)s
{%(py3)s = %(py1)s.text
}.split
}()
})
} <= %(py12)slen)r   py1py3r   r   py9py12zassert %(py14)spy14z/Your AI automation works perfectly in the demo.zfassert %(py8)s
{%(py8)s = %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.text
}.startswith
}(%(py6)s)
})r   r   py4py6py8zweird emailin)z,%(py1)s in %(py5)s
{%(py5)s = %(py3)s.text
}r   r   r   zreal life shows upexception pathnot in)ze%(py1)s not in %(py9)s
{%(py9)s = %(py7)s
{%(py7)s = %(py5)s
{%(py5)s = %(py3)s.text
}.casefold
}()
})r   r   r   r   r   zassert %(py11)spy11zinput boundaryzoutput standardFollow)z0%(py1)s not in %(py5)s
{%(py5)s = %(py3)s.text
} )z4%(py2)s
{%(py2)s = %(py0)s.side_effects
} == %(py5)s)z6%(py2)s
{%(py2)s = %(py0)s.external_calls
} == %(py5)s)r   candidate_id
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_safereprAssertionError_format_explanationlanguagevoicetarget_duration_secondstextsplitr   
startswithcasefoldside_effectsexternal_calls)r   @py_assert1@py_assert4@py_assert3@py_format6@py_format8@py_assert2@py_assert6@py_assert8@py_assert11@py_assert10@py_format13@py_format15@py_assert5@py_assert7@py_format9@py_assert0@py_format10@py_format12s                      N/home/agent/jarvis_runtime/autoshortsbot/AutoShortsBot/tests/test_voiceover.pyTtest_build_truetrace_final_voiceover_for_quiet_rot_is_beginner_friendly_and_concreterN   	   s   ,-TUUFI"II"IIIIIIIIIII"IIIIIIIIIIIII6IIIII6IIIIIIIIII"IIIIIIIIIIIIIIIIIIIIIIIIIIII?"d"?d""""""""""?d""""""""""""6"""""6""""""?""""d"""""""""""""""""""""""""""<---<-----------<-------------6-----6------<--------------------------------)/R/)R//////////)R////////////6/////6//////)////R///////////////////////////{){ )  "")3"##)r)#r))))))))))#r))))))))))))3)))))3)))))))))))))v)))))v)))))){)))) ))))"))))#))))r)))))))))))))))))))))))))))))))));T;!T"ST!!"STTTTTTTTTTTTTTT6TTTTT6TTTTTT;TTTT!TTTT"STTTTTTTTTTTTTTTTTTTTTTTTTTTT'FK'=K''''''''''=K'''''='''''''''''F'''''F''''''K'''''''''''''''''''''''''''.6;.;..........;................6.....6......;...........................96;9;#79#7#7#9#99#99999999999#999999999999999996999996999999;9999#79999#9999999999999999999999999999999996;9;#79#7#7#9#99#99999999999#999999999999999996999996999999;9999#79999#99999999999999999999999999999999:FK:K$8:$8$8$:$::$:::::::::::$:::::::::::::::::F:::::F::::::K::::$8::::$::::::::::::::::::::::::::::::::&6;&8;&&&&&&&&&&8;&&&&&8&&&&&&&&&&&6&&&&&6&&&&&&;&&&&&&&&&&&&&&&&&&&&&&&&&&&$"$"$$$$$$$$$$"$$$$$$$$$$$$6$$$$$6$$$$$$$$$$"$$$$$$$$$$$$$$$$$$$$$$$$$$$ &B& B&&&&&&&&&& B&&&&&&&&&&&&6&&&&&6&&&&&& &&&&B&&&&&&&&&&&&&&&&&&&&&&&&&&&&&    c                  (   d} t          d | D                       }d |D             }g d}||k    }|slt          j        d|fd||f          t          j        |          t          j        |          dz  }dd	|iz  }t	          t          j        |                    d x}x}}d
 |D             }t          |          }|sddt          j                    v st          j	        t                    rt          j        t                    ndt          j        |          t          j        |          dz  }t	          t          j        |                    d x}}d |D             }t          |          }|sddt          j                    v st          j	        t                    rt          j        t                    ndt          j        |          t          j        |          dz  }t	          t          j        |                    d x}}d S )N)r   z.truetrace-prompt-vs-system-workflow-breaks-35sz'truetrace-ai-notes-equal-importance-34sc              3   4   K   | ]}t          |          V  d S )N)r   ).0r)   s     rM   	<genexpr>zatest_build_truetrace_final_voiceover_has_all_top3_scripts_with_stable_duration.<locals>.<genexpr>#   s+      ZZl3LAAZZZZZZrO   c                     g | ]	}|j         
S r(   )r4   rR   r   s     rM   
<listcomp>zbtest_build_truetrace_final_voiceover_has_all_top3_scripts_with_stable_duration.<locals>.<listcomp>%   s    AAAvF*AAArO   )r         r	   )z%(py1)s == %(py4)s)r   r   zassert %(py6)sr   c              3   ~   K   | ]8}d t          |j                                                  cxk    odk    nc V  9dS )-   r   N)r   r5   r6   rU   s     rM   rS   zatest_build_truetrace_final_voiceover_has_all_top3_scripts_with_stable_duration.<locals>.<genexpr>&   sT      JJrS**,,--33333333JJJJJJrO   z,assert %(py4)s
{%(py4)s = %(py0)s(%(py2)s)
}all)r   r   r   c              3   R   K   | ]"}|j                             d           dk    V  #dS ).   N)r5   countrU   s     rM   rS   zatest_build_truetrace_final_voiceover_has_all_top3_scripts_with_stable_duration.<locals>.<genexpr>'   s7      AAvv{  %%*AAAAAArO   )
tupler*   r+   r/   r0   r1   r[   r,   r-   r.   )idsscriptsrJ   r=   r@   @py_format5@py_format7r;   s           rM   Ntest_build_truetrace_final_voiceover_has_all_top3_scripts_with_stable_durationre      sP   C ZZVYZZZZZGAAAAAQ\\\QA\QQQQQQQQQQA\QQQQQAQQQQ\QQQQQQQQQQQQQQQQQQQQQQQQQQQJJ'JJJJ3JJJJJJJJJJJJJJJJ3JJJJJ3JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJAAAAAA3AAAAAAAAAAAAAAAA3AAAAA3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArO   c                  |   t          d          } t          |           }|j        }| j        }||k    }|st	          j        d|fd||f          dt          j                    v st	          j        |          rt	          j	        |          ndt	          j	        |          dt          j                    v st	          j        |           rt	          j	        |           ndt	          j	        |          dz  }dd|iz  }t          t	          j        |                    d x}x}}|j        }d	}||k    }|st	          j        d|fd
||f          dt          j                    v st	          j        |          rt	          j	        |          ndt	          j	        |          t	          j	        |          dz  }dd|iz  }	t          t	          j        |	                    d x}x}}|j        }d}||k    }|st	          j        d|fd||f          dt          j                    v st	          j        |          rt	          j	        |          ndt	          j	        |          t	          j	        |          dz  }dd|iz  }	t          t	          j        |	                    d x}x}}|j        }| j        }||k    }|st	          j        d|fd||f          dt          j                    v st	          j        |          rt	          j	        |          ndt	          j	        |          dt          j                    v st	          j        |           rt	          j	        |           ndt	          j	        |          dz  }dd|iz  }t          t	          j        |                    d x}x}}|j        }d}||k    }|st	          j        d|fd||f          dt          j                    v st	          j        |          rt	          j	        |          ndt	          j	        |          t	          j	        |          dz  }dd|iz  }	t          t	          j        |	                    d x}x}}|j        }|j        }||k    }|st	          j        d|fd||f          dt          j                    v st	          j        |          rt	          j	        |          ndt	          j	        |          dt          j                    v st	          j        |          rt	          j	        |          ndt	          j	        |          dz  }dd|iz  }t          t	          j        |                    d x}x}}d}
d}|j        }|j        } ||          }|j        } |            }|
|v}|s	t	          j        d|fd|
|f          t	          j	        |
          t	          j	        |          t	          j	        |          dt          j                    v st	          j        |          rt	          j	        |          ndt	          j	        |          t	          j	        |          t	          j	        |          t	          j	        |          dz  }dd|iz  }t          t	          j        |                    d x}
x}x}x}x}x}x}}d S )Nr   r	   )zR%(py2)s
{%(py2)s = %(py0)s.brief_id
} == %(py6)s
{%(py6)s = %(py4)s.candidate_id
}draft	voiceover)r   r   r   r   zassert %(py8)sr   z>Your AI automation works in the demo. Then real life shows up.)z-%(py2)s
{%(py2)s = %(py0)s.title
} == %(py5)sr   r   r   zMYour AI automation works perfectly in the demo. Then one weird email arrives.)z,%(py2)s
{%(py2)s = %(py0)s.hook
} == %(py5)s)zo%(py2)s
{%(py2)s = %(py0)s.estimated_duration_seconds
} == %(py6)s
{%(py6)s = %(py4)s.target_duration_seconds
})zEThe name is missing. The format is different. The request is unclear.z9Suddenly the automation does the wrong thing confidently.z6That is not an AI problem. That is a workflow problem.zADecide what goes through, what gets reviewed, and what must stop.)z7%(py2)s
{%(py2)s = %(py0)s.retention_beats
} == %(py5)s)zI%(py2)s
{%(py2)s = %(py0)s.caption
} == %(py6)s
{%(py6)s = %(py4)s.hook
}r#    r$   )z%(py1)s not in %(py15)s
{%(py15)s = %(py13)s
{%(py13)s = %(py11)s
{%(py11)s = %(py6)s
{%(py6)s = %(py4)s.join
}(%(py9)s
{%(py9)s = %(py7)s.retention_beats
})
}.casefold
}()
})r   r   r   r   r   r&   py13py15zassert %(py17)spy17)r   r   brief_idr)   r*   r+   r,   r-   r.   r/   r0   r1   titlehookestimated_duration_secondsr4   retention_beatscaptionjoinr8   )rh   rg   r;   rG   r=   rd   rI   r<   r>   r?   rJ   rB   rD   @py_assert12@py_assert14r@   @py_format16@py_format18s                     rM   Rtest_build_accessible_script_draft_from_voiceover_uses_one_text_source_for_visualsrx   *   s!   /0WXXI8CCE>3Y33>33333333333>33333333333335333335333333>33333333333Y33333Y3333333333333333333333333333333333;ZZZ;ZZZZZZZZZZZ;ZZZZZZZZZZZZZ5ZZZZZ5ZZZZZZ;ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ:hhh:hhhhhhhhhhh:hhhhhhhhhhhhh5hhhhh5hhhhhh:hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh+Py/PP+/PPPPPPPPPPP+/PPPPPPPPPPPPP5PPPPP5PPPPPP+PPPPPPPPPPPyPPPPPyPPPPPP/PPPPPPPPPPPPPPPPPPPPPPPPPPPP   %   %     
     %     
    
     
      
 !   
%              
            =&EJ&=J&&&&&&&&&&=J&&&&&&&&&&&&5&&&&&5&&&&&&=&&&&&&&&&&&E&&&&&E&&&&&&J&&&&&&&&&&&&&&&&&&&&&&&&&&&M3M38ME,AM88,A#B#BM#B#KM#K#K#M#MM#MMMMMMMMMMM#MMMMMMMMMM3MMMM8MMMMMMMMMMMEMMMMMEMMMMMM,AMMMM#BMMMM#KMMMM#MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMrO   c                  D   t          ddddd          } t          |           }|j        }d}||u }|st          j        d|fd	||f          d
t          j                    v st          j        |          rt          j        |          nd
t          j        |          t          j        |          dz  }dd|iz  }t          t          j
        |                    d x}x}}d}|j        }||v }|st          j        d|fd||f          t          j        |          d
t          j                    v st          j        |          rt          j        |          nd
t          j        |          dz  }dd|iz  }t          t          j
        |                    d x}x}}d}|j        }||v }|st          j        d|fd||f          t          j        |          d
t          j                    v st          j        |          rt          j        |          nd
t          j        |          dz  }dd|iz  }t          t          j
        |                    d x}x}}d}|j        }||v }|st          j        d|fd||f          t          j        |          d
t          j                    v st          j        |          rt          j        |          nd
t          j        |          dz  }dd|iz  }t          t          j
        |                    d x}x}}d S )N	candidatezTIn this video we will unlock your full potential with a very long and generic intro.der      )r)   r5   r2   r3   r4   F)is)z0%(py2)s
{%(py2)s = %(py0)s.is_valid
} is %(py5)s
validationr   r   r   z#final voiceover language must be enr    )z.%(py1)s in %(py5)s
{%(py5)s = %(py3)s.errors
}r"   z1target_duration_seconds must be between 15 and 45z0voiceover contains generic intro/filler language)r   r   is_validr*   r+   r,   r-   r.   r/   r0   r1   errors)	r   r~   r;   r<   r=   r>   r?   rJ   r@   s	            rM   Mtest_validate_final_voiceover_script_rejects_bad_language_duration_and_fillerr   =   s   ! c  !  F 188J'%'%''''''''''%'''''''''''':''''':''''''''''%'''''''''''''''''''''''''''0EJ4EE04EEEEEEEEEEE04EEEEEE0EEEEEEEEEEEJEEEEEJEEEEEE4EEEEEEEEEEEEEEEEEEEEEEEEEEEE>S*BSS>BSSSSSSSSSSS>BSSSSSS>SSSSSSSSSSS*SSSSS*SSSSSSBSSSSSSSSSSSSSSSSSSSSSSSSSSSS=RARR=ARRRRRRRRRRR=AR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RAR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RrO   )builtinsr,   _pytest.assertion.rewrite	assertionrewriter*   autoshorts.audio.voiceoverr   r   r   r   rN   re   rx   r   r(   rO   rM   <module>r      s                             ' ' '&B B BN N N&S S S S SrO   