
    iz                         d Z ddlZddlZddlmZ ddlmZ ej                  j                  dd       ddl	Z	dede
e   ddfd	Zded
eddfdZdedefdZd Zd Zd Zd Zd Zy)u  
test_dispatch_counter_sync.py

dispatch.py의 task-counter 정합성 개선에 대한 테스트:
  1. generate_task_id() — 카운터 < timers 최대값 → 보정
  2. generate_task_id() — 카운터 >= timers 최대값 → 보정 없음
  3. _sync_counter_if_needed() — 외부 ID가 카운터보다 큰 경우
  4. _sync_counter_if_needed() — 외부 ID가 카운터보다 작은 경우
  5. _sync_counter_if_needed() — 잘못된 task_id 형식 → 무시
    N)Path)patchz/home/jay/workspacetmp_pathtask_idsreturnc                     | dz  }|j                  dd       |D ci c]  }|ddi	 }}d|i}|dz  j                  t        j                  |dd	
      d       yc c}w )u0   task-timers.json을 tmp_path/memory/ 에 생성.memoryTparentsexist_okstatusdonetasksztask-timers.jsonF   )ensure_asciiindentutf-8encodingN)mkdir
write_textjsondumps)r   r   r	   tidr   datas         \/home/jay/workspace/.worktrees/task-2116-dev1/teams/dev1/tests/test_dispatch_counter_sync.py_make_timersr      sp     F
LLL-089S8V$$9E9UD  ,,TZZ5YZ-[fm,n :s   Avaluec                 r    | dz  }|j                  dd       |dz  j                  t        |      d       y)u3   task-counter 파일을 tmp_path/memory/ 에 생성.r	   Tr
   .task-counterr   r   N)r   r   str)r   r   r	   s      r   _make_counterr"   $   s8     F
LLL-o))#e*w)G    c                 \    t        | dz  dz  j                         j                               S )Nr	   r    )int	read_textstripr   s    r   _read_counterr)   +   s)    8#o5@@BHHJKKr#   c                    t        | d       t        | dg       t        j                  t        d|       5  t	        j
                         }ddd       dk(  s
J d|        t        |       dk(  sJ dt        |               y# 1 sw Y   :xY w)	uj   카운터(100)가 timers 최대(200)보다 작으면 timers 최대+1(201)로 보정되어 task-201 생성.d   
task-200.1	WORKSPACENztask-201zExpected task-201, got    zExpected counter=202, got r"   r   r   objectdispatchgenerate_task_idr)   r   task_ids     r   .test_generate_task_id_counter_less_than_timersr5   4       (C L>*	hX	6 .++-. j E$;G9"EE "c)a-GV^H_G`+aa). .   BBc                    t        | d       t        | dg       t        j                  t        d|       5  t	        j
                         }ddd       dk(  s
J d|        t        |       dk(  sJ dt        |               y# 1 sw Y   :xY w)	ui   카운터(300)가 timers 최대(200)보다 크면 카운터 값(300) 그대로 사용해 task-300 생성.i,  r,   r-   Nztask-300zExpected task-300, got i-  zExpected counter=301, got r/   r3   s     r   1test_generate_task_id_counter_greater_than_timersr9   F   r6   r7   c                    | dz  j                  dd       t        | d       t        j                  t        d|       5  t	        j
                  d       ddd       t        |       dk(  sJ d	t        |               y# 1 sw Y   +xY w)
uX   카운터(100)보다 큰 task-1280.1 지정 시 카운터가 1281로 업데이트된다.r	   Tr
   r+   r-   ztask-1280.1Ni  zExpected counter=1281, got r   r"   r   r0   r1   _sync_counter_if_neededr)   r(   s    r   +test_sync_counter_if_needed_external_largerr=   X   s    t<(C 	hX	6 8((78 "d*c.I-X`JaIb,cc*8 8   A>>Bc                    | dz  j                  dd       t        | d       t        j                  t        d|       5  t	        j
                  d       ddd       t        |       dk(  sJ dt        |               y# 1 sw Y   +xY w)	uU   카운터(1300)보다 작은 task-1200.1 지정 시 카운터는 변하지 않는다.r	   Tr
   i  r-   ztask-1200.1Nz'Expected counter=1300 (unchanged), got r;   r(   s    r   ,test_sync_counter_if_needed_external_smallerr@   g   s    t<(D!	hX	6 8((78 "d*o.UVcdlVmUn,oo*8 8r>   c                    | dz  j                  dd       t        | d       t        j                  t        d|       5  t	        j
                  d       ddd       t        |       dk(  sJ dt        |               y# 1 sw Y   +xY w)	ug   'invalid-id' 같은 잘못된 형식은 예외 없이 무시하며 카운터도 변경하지 않는다.r	   Tr
   i  r-   z
invalid-idNz&Expected counter=500 (unchanged), got r;   r(   s    r   *test_sync_counter_if_needed_invalid_formatrB   w   s    t<(C 	hX	6 7((67 "c)m-STabjTkSl+mm)	7 7r>   )__doc__r   syspathlibr   unittest.mockr   pathinsertr1   listr!   r   r%   r"   r)   r5   r9   r=   r@   rB    r#   r   <module>rK      s   	  
   ( ) o4 o49 o oHD H H HLD LS L
b$
b$dp 	nr#   