
    :QgC                         d dl mZ d dlZd dlZd dlZd dlmZ d Zd Z	ej                  j                  dej                  g dfej                  g dfg      d	        Zd
 Zd Zd Zd Zd Zy)    )patchN)xycutc                  Z   t        j                  g dg dg      } t        j                  | d      }t        j                  g d      }t        j                  |d d |      sJ t        j                  | d      }t        j                  g d      }t        j                  |d d |      sJ y )N)
      2   <   )   (   F   P   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   )nparrayr   projection_by_bboxesarray_equal)boxesresult_horizontalexpected_result_horizontalresult_verticalexpected_result_verticals        i/var/www/html/answerous/venv/lib/python3.12/site-packages/test_unstructured/partition/utils/test_xycut.pytest_projection_by_bboxesr   
   s    HH&(89:E 225!<!#b" >>+CR02LMMM 00:O!xxb  >>/#2.0HIII    c                     t        j                  g d      } d}d}t        j                  | ||      }t        j                  g d      t        j                  g d      f}t        j                  ||      sJ t        j                  g d      } d}d}t        j                  | ||      }t        j                  g d      t        j                  g d	      f}t        j                  ||      sJ y )
N)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   split_projection_profiler   )
arr_values	min_valuemin_gapresultexpected_results        r   test_split_projection_profiler+      s    JKJIG++J	7KFxx
+RXXj-ABO>>&/222 DEJIG++J	7KFxx	*BHHZ,@AO>>&/222r   )recursive_funcexpectedr   r   r   )r   r   r   c                     t        j                  g dg dg dg      }t        j                  g d      }g } | |||       ||k(  sJ y )N)r   r   r   r   )   r      r
   )r   r   r   r   r.   )r   r   )r,   r-   r   indicesress        r   test_recursive_xy_cutr4   .   sE     HHn&7IJEhhy!G
C5'3'(??r   c                  ^   g d} t        j                  |       }|g dk(  sJ g d} t        j                  |       }|g dk(  sJ g d} t        j                  |       }|g dk(  sJ t        j                  t              5  g d} t        j                  |        d d d        y # 1 sw Y   y xY w)N)r   r   r
   r   r   r	   r   r   r   r   r   r   )r
   r   r   r   r   r   r   r	   )iiiiiiii)r   r   r   r   )r   r   r
   r   r   r	   )r   points_to_bboxpytestraisesAssertionError)pointsr)   s     r   test_points_to_bboxr<   =   s    -F!!&)F%%%% .F!!&)F%%%% 6F!!&)F\!!! 
~	& %)V$% % %s    B##B,c                     g d} t        j                  |       }|g dk(  sJ g d} t        j                  |       }|g dk(  sJ g d} t        j                  |       }|g dk(  sJ g d} t        j                  |       }|g dk(  sJ y )	Nr6   )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   bbox2points)bboxr)   s     r   test_bbox2pointsr@   S   s    Dt$F5555 Dt$F5555 Dt$F5555 Dt$F5555r   c                     t        j                  dt         j                        dz  } g d}d}d}t        j                  | |||      }t        j
                  |       }t        j                  ||d   |d   ||       t        j                  ||d   |d   ||       t        j                  ||d   |d	   ||       t        j                  ||d	   |d   ||       t        j                  ||      sJ y )
Nr0   r0   r   dtype   ))r   r   )   r   )rF   rF   )r   rF   )r   r   rE   r   r   r   r   )	r   onesuint8r   vis_polygoncopycv2liner   )imgr;   color	thickness
result_imgexpected_imgs         r   test_vis_polygonrR   j   s    
''-rxx
03
6C9FEI""3	5AJ 773<LHH\6!9fQi	BHH\6!9fQi	BHH\6!9fQi	BHH\6!9fQi	B>>*l333r   c                     t        j                  dt         j                        dz  } g dg dg}ddg}d}t        j                  | |||      }t        j
                  |       }t        |      D ]6  \  }}t        j                  |t        j                  |      j                  d	d
      d
|       t        j                  |      }|\  }	}
}}|	|z   d
z  }|
|z   d
z  }||   }t        j                  |t        j                  dd
      d   }t        j                  ||dt        |      z  z
  ||d   z
  dz
  f|dt        |      z  z
  |d   z   |dz
  f|d	      }t        j                   |||dt        |      z  z
  |dz
  ft        j                  dddt        j"                        }9 t        j$                  ||      sJ y )NrB   rC   rE   r   r   r
   r   r
   r   r   r   r   r	   r   r	   r   r   r   r   Label1Label2)r   r0   r   r   )rO   rN   g      ?r   r   r   )rE   rE   rE   )rO   lineType)r   rG   rH   r   
vis_pointsrJ   	enumeraterI   r   reshaper7   rK   getTextSizeFONT_HERSHEY_SIMPLEX	rectanglelenputTextLINE_AAr   )rM   r;   textsrN   rP   rQ   i_pointsr?   lefttoprightbottomcxcytxtcat_sizes                    r   test_vis_pointsrn   |   s   
''-rxx
03
6C.0PQFx EE!!#vue<J 773<L  ' 

7,(9(A(A"a(HTU]bc##G,#' c5&Ulq Flq Ah ??3(@(@#qI!L}}!c#h,Xa[ 01 45!c#h,!,b1f5
 {{!c#h,Q'$$[[	
'
< >>*l333r   c                  &   t        j                  dt         j                        dz  } g dg dg}t        d|       5 }t	        j
                  | |      }|j                          t        j                  ||       sJ 	 d d d        y # 1 sw Y   y xY w)NrB   rC   rE   rT   rU   z-unstructured.partition.utils.xycut.vis_points)return_value)r   rG   rH   r   r   vis_polygons_with_indexassert_called_oncer   )rM   r;   mock_vis_pointsrP   s       r   test_vis_polygons_with_indexrt      s    
''-rxx
03
6C.0PQF	7c
 /	223?
 	**,~~j#.../ / /s   ?BB)unittest.mockr   rK   numpyr   r8   unstructured.partition.utilsr   r   r+   markparametrizerecursive_xy_cutrecursive_xy_cut_swappedr4   r<   r@   rR   rn   rt    r   r   <module>r}      s     
   .J$3$ "			+		'	'3%,6.4$*4Z/r   