a
    !f                     @   s2  d dl Z G dd de jZG dd de jZG dd de jZG dd	 d	e jZG d
d de jZG dd de jZG dd de jZG dd de jZ	G dd de jZ
G dd de jZG dd de jZG dd deZG dd deZG dd deZG dd deZG d d! d!eZG d"d# d#eZdS )$    Nc                   @   s   e Zd Zdd Zdd ZdS )Test_make_rowc                 O   s   ddl m} ||i |S )Nr   )make_row)gcloud.bigtable.happybase.tabler   )selfargskwargsr    r   e/var/www/html/python-backend/venv/lib/python3.9/site-packages/gcloud/bigtable/happybase/test_table.py_callFUT   s    zTest_make_row._callFUTc                 C   s:   |  t | i d W d    n1 s,0    Y  d S NFassertRaisesNotImplementedErrorr
   r   r   r   r	   test_it   s    zTest_make_row.test_itN__name__
__module____qualname__r
   r   r   r   r   r	   r      s   r   c                   @   s   e Zd Zdd Zdd ZdS )Test_make_ordered_rowc                 O   s   ddl m} ||i |S )Nr   )make_ordered_row)r   r   )r   r   r   r   r   r   r	   r
      s    zTest_make_ordered_row._callFUTc                 C   s:   |  t | g d W d    n1 s,0    Y  d S r   r   r   r   r   r	   r   #   s    zTest_make_ordered_row.test_itNr   r   r   r   r	   r      s   r   c                	   @   sV  e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* ZdVd.d/Zd0d1 Zd2d3 Zd4d5 Zd6d7 Zd8d9 Zd:d; Zd<d= Zd>d? Z d@dA Z!dBdC Z"dDdE Z#dFdG Z$dHdI Z%dJdK Z&dLdM Z'dNdO Z(dPdQ Z)dRdS Z*dTdU Z+d,S )W	TestTablec                 C   s   ddl m} |S )Nr   )Table)r   r   )r   r   r   r   r	   _getTargetClass*   s    zTestTable._getTargetClassc                 O   s   |   |i |S N)r   r   r   r   r   r   r	   _makeOne.   s    zTestTable._makeOnec           	         s   ddl m} ddlm} d}t }t|}g   fdd}|||d | ||}W d    n1 sh0    Y  | |j| | |j	|  \}| |j
| | |j||f | |ji  d S )Nr   _Monkeytable
table-namec                     s   t | i |} | |S r   )_MockLowLevelTableappendr   r   resultZtables_constructedr   r	   make_low_level_table:   s    
z8TestTable.test_constructor.<locals>.make_low_level_table)Z_LowLevelTable)gcloud._testingr   gcloud.bigtable.happybaser    object_Connectionr   assertEqualname
connection_low_level_tabler   r   )	r   r   MUTr-   instancer.   r'   r    Ztable_instancer   r&   r	   test_constructor1   s    *zTestTable.test_constructorc                 C   sB   d}d }|  ||}| |j| | |j| | |jd  d S Nr!   )r   r,   r-   r.   r/   r   r-   r.   r    r   r   r	    test_constructor_null_connectionI   s    z*TestTable.test_constructor_null_connectionc                    s   ddl m} ddlm} d}d }| ||}t |_d}t }t||d}||i}	|	|j_	t g   fdd}
|||
d	 |
 }W d    n1 s0    Y  | ||i | |jjd
 |  |g d S )Nr   r   r   r!   famgc_rulec                    s     |  S r   r#   r7   Zto_dict_callsZto_dict_resultr   r	   mock_gc_rule_to_dictd   s    
z5TestTable.test_families.<locals>.mock_gc_rule_to_dict_gc_rule_to_dict   )r(   r   r)   r    r   r"   r/   r*   _MockLowLevelColumnFamilycolumn_familiesZfamiliesr,   list_column_families_calls)r   r   r0   r-   r.   r    Zcol_fam_namer8   col_famZcol_famsr;   r%   r   r:   r	   test_familiesQ   s&    &zTestTable.test_familiesc                 C   s$   d}|  |d }| t|d d S )Nr!   z<table.Table name='table-name'>)r   r,   repr)r   r-   r    r   r   r	   test___repr__o   s    zTestTable.test___repr__c                 C   sJ   d}d }|  ||}| t |  W d    n1 s<0    Y  d S r3   )r   r   r   Zregionsr4   r   r   r	   test_regionst   s
    zTestTable.test_regionsc                    s   ddl m} ddlm} d}d }| ||}t |_d |j_t  g  fdd}d}t }|||d |j	||d	}	W d    n1 s0    Y  | 
|	i  |f}
d
 i}| 
|jj|
|fg g d|d}| 
|g d S )Nr   r   r   r!   c                     s    |   S r   r9   r   fake_filtermock_filtersr   r	   mock_filter_chain_helper   s    
z>TestTable.test_row_empty_row.<locals>.mock_filter_chain_helperrow-key_filter_chain_helper	timestampfilter_r>   filtersversionsrP   r(   r   r)   r    r   r"   r/   read_row_resultr*   rowr,   read_row_calls)r   r   r0   r-   r.   r    rK   row_keyrP   r%   read_row_argsread_row_kwargsexpected_kwargsr   rH   r	   test_row_empty_row|   s2    ,
zTestTable.test_row_empty_rowc                    s  ddl m} ddlm} d}d }| ||}t |_d |j_t  g  fdd}t g fdd}d	}t }	||||d
 |j	||	d}
W d    n1 s0    Y  | 
|
i  |f}di}| 
|jj||fg | 
|	fg  gdd d}| 
|g d S )Nr   r   r   r!   c                     s    |   S r   r9   r   fake_col_filtermock_columnsr   r	   mock_columns_filter_helper   s    
zCTestTable.test_row_with_columns.<locals>.mock_columns_filter_helperc                     s    |   S r   r9   rG   rH   r   r	   rK      s    
zATestTable.test_row_with_columns.<locals>.mock_filter_chain_helperrL   rN   _columns_filter_helpercolumnsrQ   r>   rR   rU   )r   r   r0   r-   r.   r    rb   rK   rY   rf   r%   rZ   r[   r\   r   r`   rI   ra   rJ   r	   test_row_with_columns   s>    ,
zTestTable.test_row_with_columnsc                    sb  ddl m} ddlm} ddlm} d}d}d }| ||}t |_||}||j_	t
  g  fdd}	t
 g fd	d
}
d}d}t
 }|||ii|_t
 }|||	|
d |j||d}W d    n1 s0    Y  |dd | i}| || |f}d i}| |jj||fg g dd d}| |g d|i}| |f|fg d S )Nr   r   r   PartialRowDatarL   r!   c                     s    |   S r   r9   rG   rH   r   r	   rK      s    
zATestTable.test_row_with_results.<locals>.mock_filter_chain_helperc                     s    | |f  gS r   r9   r   r   	fake_pair
mock_cellsr   r	   mock_cells_to_pairs   s    z<TestTable.test_row_with_results.<locals>.mock_cells_to_pairscf1   qualrN   _cells_to_pairsinclude_timestampascii   :rQ   r>   rR   ru   )r(   r   r)   r    gcloud.bigtable.row_datarj   r   r"   r/   rV   r*   _cellsrW   encoder,   rX   )r   r   r0   rj   rY   r-   r.   r    partial_rowrK   ro   rB   qual
fake_cellsru   r%   expected_resultrZ   r[   r\   to_pairs_kwargsr   )rI   rm   rn   rJ   r	   test_row_with_results   sR    ,

zTestTable.test_row_with_resultsc                 C   s.   d}d }|  ||}|g }| |g  d S r3   )r   rowsr,   )r   r-   r.   r    r%   r   r   r	   test_rows_empty_row  s
    
zTestTable.test_rows_empty_rowc                    s`  ddl m} ddlm} d}d }| ||}t |_t }||j_| 	|j
d t  g  fdd}t g fdd}t g fd	d
}	dg}
t }|||	||d |j|
|d}W d    n1 s0    Y  | 	|g  d}di}| 	|jj||fg | 	|j
d | 	|fg | 	|
fg  gdd d}| 	|g d S )Nr   r   r   r!   c                     s    |   S r   r9   r^   )r`   	mock_colsr   r	   rb   $  s    
zDTestTable.test_rows_with_columns.<locals>.mock_columns_filter_helperc                     s    |   S r   r9   r^   fake_rows_filter	mock_rowsr   r	   mock_row_keys_filter_helper+  s    
zETestTable.test_rows_with_columns.<locals>.mock_row_keys_filter_helperc                     s    |   S r   r9   rG   rH   r   r	   rK   2  s    
zBTestTable.test_rows_with_columns.<locals>.mock_filter_chain_helperrL   )rN   _row_keys_filter_helperrd   re   r   rQ   r>   rR   )r(   r   r)   r    r   r"   r/   _MockPartialRowsDataread_rows_resultr,   consume_all_callsr*   r   read_rows_calls)r   r   r0   r-   r.   r    	rr_resultrb   r   rK   r   rf   r%   read_rows_argsread_rows_kwargsr\   r   )r`   rI   r   r   rJ   r   r	   test_rows_with_columns  sN    ,
z TestTable.test_rows_with_columnsc                    s  ddl m} ddlm} ddlm} d}d}||g}d}d }| ||}	t |	_||}
t	||
id}||	j_
| |jd t g fd	d
}t  g  fdd}t g fdd}d}d}t }|||ii|
_t }|||||d |	j||d}W d    n1 s0    Y  |dd | i}| |||fg d}d i}| |	jj||fg | |jd | |fg gdd d}| |g d|i}| |f|fg d S )Nr   r   r   ri   row-key1zrow-key2r!   )r   c                     s    |   S r   r9   r^   r   r   r	   r   g  s    
zETestTable.test_rows_with_results.<locals>.mock_row_keys_filter_helperc                     s    |   S r   r9   rG   rH   r   r	   rK   n  s    
zBTestTable.test_rows_with_results.<locals>.mock_filter_chain_helperc                     s    | |f  gS r   r9   rk   rl   r   r	   ro   u  s    z=TestTable.test_rows_with_results.<locals>.mock_cells_to_pairsrp   rq   )r   rN   rs   rt   rv   rw   r   rQ   r>   rR   ru   )r(   r   r)   r    rx   rj   r   r"   r/   r   r   r,   r   r*   ry   r   rz   r   )r   r   r0   rj   row_key1row_key2r   r-   r.   r    row1r   r   rK   ro   rB   r|   r}   ru   r%   r~   r   r   r\   r   r   )rI   rm   r   rn   rJ   r   r	   test_rows_with_resultsP  sf    .

z TestTable.test_rows_with_resultsc                    s   ddl m} ddlm} d}d }| ||}t |_d |j_t  g  fdd}d}d}|||d	 |	||}	W d    n1 s0    Y  | 
|	g  |f}
d
 i}| 
|jj|
|fg |d d d}| 
|g d S )Nr   r   r   r!   c                     s    |   S r   r9   rG   rH   r   r	   rK     s    
z@TestTable.test_cells_empty_row.<locals>.mock_filter_chain_helperrL   fam:col1rM   rQ   columnrT   rP   )r(   r   r)   r    r   r"   r/   rV   r*   cellsr,   rX   )r   r   r0   r-   r.   r    rK   rY   r   r%   rZ   r[   r\   r   rH   r	   test_cells_empty_row  s2    *
zTestTable.test_cells_empty_rowc                    sj  ddl m} ddlm} ddlm} d}d}d }| ||}t |_||}||j_	t
 }	t
 }
t
 }t
  g  fdd}t
 g fd	d
}d}d}t
 }|||ii|_|d | }||||d$ |j|||	|
|d}W d    n1 s0    Y  | | |f}d i}| |jj||fg ||	|
d}| |g d|i}| |f|fg d S )Nr   r   r   ri   rL   r!   c                     s    |   S r   r9   rG   rH   r   r	   rK     s    
zCTestTable.test_cells_with_results.<locals>.mock_filter_chain_helperc                     s    | |f  S r   r9   rk   )fake_resultrn   r   r	   ro     s    z>TestTable.test_cells_with_results.<locals>.mock_cells_to_pairsrp   r|   :rr   )rT   rP   ru   rQ   r   ru   )r(   r   r)   r    rx   rj   r   r"   r/   rV   r*   ry   r   r,   rX   )r   r   r0   rj   rY   r-   r.   r    r{   rT   rP   ru   rK   ro   rB   r|   r}   r   r%   rZ   r[   filter_kwargsr   r   )rI   r   rn   rJ   r	   test_cells_with_results  s\    
$

z!TestTable.test_cells_with_resultsc              	      s   ddl m} ddlm} g   fdd}d}d }| ||}| tP |||d$ t|jt	 d d W d    n1 s~0    Y  W d    n1 s0    Y  | 
t d	 | d
 d  d S )Nr   r   r   c                    s     |  d S r   r9   msgZwarnedr   r	   	mock_warn  s    z6TestTable.test_scan_with_batch_size.<locals>.mock_warnr!   Z_WARN)
batch_sizeunknownr>   r   r(   r   r)   r    r   r   	TypeErrorlistscanr*   r,   lenZassertInr   r   r0   r   r-   r.   r    r   r   r	   test_scan_with_batch_size  s    Pz#TestTable.test_scan_with_batch_sizec              	      s   ddl m} ddlm} g   fdd}d}d }| ||}| tP |||d$ t|jt	 d d W d    n1 s~0    Y  W d    n1 s0    Y  | 
t d	 | d
 d  d S )Nr   r   r   c                    s     |  d S r   r9   r   r   r   r	   r     s    z9TestTable.test_scan_with_scan_batching.<locals>.mock_warnr!   r   )scan_batchingr   r>   r   r   r   r   r   r	   test_scan_with_scan_batching  s    Pz&TestTable.test_scan_with_scan_batchingc              	      s   ddl m} ddlm} g   fdd}d}d }| ||}| tP |||d$ t|jt	 d d W d    n1 s~0    Y  W d    n1 s0    Y  | 
t d	 | d
 d  d S )Nr   r   r   c                    s     |  d S r   r9   r   r   r   r	   r   .  s    z:TestTable.test_scan_with_sorted_columns.<locals>.mock_warnr!   r   )sorted_columnsr   r>   r   r   r   r   r   r	   test_scan_with_sorted_columns(  s    Pz'TestTable.test_scan_with_sorted_columnsc                 C   sR   d}d }|  ||}| t  t|jdd W d    n1 sD0    Y  d S )Nr!   i)limitr   r   
ValueErrorr   r   r4   r   r   r	   test_scan_with_invalid_limit=  s
    z&TestTable.test_scan_with_invalid_limitc                 C   sT   d}d }|  ||}| t" t|jddd W d    n1 sF0    Y  d S )Nr!   aabc)
row_prefixrow_stopr   r4   r   r   r	   'test_scan_with_row_prefix_and_row_startD  s
    z1TestTable.test_scan_with_row_prefix_and_row_startc                 C   sR   d}d }|  ||}| t  t|jdd W d    n1 sD0    Y  d S )Nr!   zsome-string)filter)r   r   r   r   r   r4   r   r   r	   test_scan_with_string_filterK  s
    z&TestTable.test_scan_with_string_filterNNNFc
                    s  dd l }
ddlm} ddlm} d}|\}}d }| ||}t |_|pLt }||j_	| 
|jd t  g  fdd}t g fdd}||||d	T |j||||||||d
}| t||
j |	pg }	| 
t||	 W d    n1 s0    Y  d}|r|}||}|||d}| 
|jj||fg | 
|j|jd  |d urr| 
|fg n| 
g  g }|d ur|| |r|  |d|d}| 
|g d S )Nr   r   r   r!   c                     s    |   S r   r9   r^   r_   r   r	   rb   g  s    
z?TestTable._scan_test_helper.<locals>.mock_columns_filter_helperc                     s    |   S r   r9   rG   rH   r   r	   rK   n  s    
z=TestTable._scan_test_helper.<locals>.mock_filter_chain_helperrc   )	row_startr   r   rf   r   rP   ru   r   r   )end_keyrQ   r   Z	start_keyr>   rR   )typesr(   r   r)   r    r   r"   r/   r   r   r,   consume_next_callsr*   r   
assertTrue
isinstanceGeneratorTyper   _string_successorr   
iterationsr#   )r   
row_limitsr   rf   rQ   rP   ru   r   r   r~   r   r   r0   r-   r   r   r.   r    rb   rK   r%   r   r   rS   r\   r   rg   r	   _scan_test_helperR  sr    
.





zTestTable._scan_test_helperc                 C   s   t  }| j|d d S )Nre   r*   r   r   rf   r   r   r	   test_scan_with_columns  s    z TestTable.test_scan_with_columnsc                 C   s    d}d}||f}| j |d d S )Nbarfoo)r   r   )r   r   r   r   r   r   r	   !test_scan_with_row_start_and_stop  s    z+TestTable.test_scan_with_row_start_and_stopc                 C   s   d}| j |d d S )Nz	row-prefi)r   r   )r   r   r   r   r	   test_scan_with_row_prefix  s    z#TestTable.test_scan_with_row_prefixc                 C   s   t  }| j|d d S )N)rQ   r   )r   Zmock_filterr   r   r	   test_scan_with_filter  s    zTestTable.test_scan_with_filterc                 C   s   d}t  }| j||d d S )N9  )rP   r   r   )r   r   rP   r   r   r	   test_scan_with_no_results  s    z#TestTable.test_scan_with_no_resultsc                 C   sL   ddl m} d}||}t||idd}t }|i fg}| j|||d d S )Nr   ri   r   r>   )r   r   )ru   r   r~   )rx   rj   r   r*   r   )r   rj   r   r   r   ru   r~   r   r   r	   test_scan_with_results  s    
z TestTable.test_scan_with_resultsc                    s  ddl m} ddlm} ddlm} d}d }| ||}g   fdd}d}d	d
i}	d }
|||d  |j||	|
d}W d    n1 s0    Y  | |d   \}| 	t
|t | |j|f |
d d|d}| |j| | |jdg | |j||	fg | |jg  d S )Nr   r   r   _WAL_SENTINELr!   c                     s   t | i |} | |S r   
_MockBatchr#   r$   Zbatches_createdr   r	   
make_batch  s    
z&TestTable.test_put.<locals>.make_batchrL   zfam:colr   ZBatchrO   FrP   r   transactionwalNNN)r(   r   r)   r    r   r   r   putr,   r   r   r   r   r   	exit_valsput_argsdelete_args)r   r   r0   r   r-   r.   r    r   rW   datarP   r%   batchr\   r   r   r	   test_put  s4    .zTestTable.test_putc                    s  ddl m} ddlm} ddlm} d}d }| ||}g   fdd}d}d	d
g}	d }
|||d  |j||	|
d}W d    n1 s0    Y  | |d   \}| 	t
|t | |j|f |
d d|d}| |j| | |jdg | |jg  | |j||	fg d S )Nr   r   r   r   r!   c                     s   t | i |} | |S r   r   r$   r   r   r	   r     s    
z)TestTable.test_delete.<locals>.make_batchrL   r   zfam:col2r   )rf   rP   Fr   r   )r(   r   r)   r    r   r   r   deleter,   r   r   r   r   r   r   r   r   )r   r   r0   r   r-   r.   r    r   rW   rf   rP   r%   r   r\   r   r   r	   test_delete  s4    .zTestTable.test_deletec                 C   s   ddl m} ddlm} d}d }| ||}t }d}d}t }	||td" |j||||	d}
W d    n1 st0    Y  | t	|
t | 
|
j|f ||||	d}| 
|
j| d S )	Nr   r   r   r!   *   Fr   r   )r(   r   r)   r    r   r*   r   r   r   r   r,   r   r   )r   r   r0   r-   r.   r    rP   r   r   r   r%   r\   r   r   r	   
test_batch  s*    $zTestTable.test_batchc           	         sz   |   }d G  fddd|}d}d }|||}d}d}| |jg  |||}| |  | |j||dfg d S )Nr   c                       s   e Zd Zg Z ZdddZdS )z0TestTable.test_counter_get.<locals>.TableWithIncr>   c                 S   s&   | j |||f |  j|7  _| jS r   incrementedr#   valuer   rW   r   r   r   r   r	   counter_inc8  s    z<TestTable.test_counter_get.<locals>.TableWithInc.counter_incN)r>   r   r   r   r   r   r   r   Zcounter_valuer   r	   TableWithInc3  s   r   r!   rL   r   r   )r   r,   r   Zcounter_get)	r   klassr   r-   r.   r    rW   r   r%   r   r   r	   test_counter_get/  s    

zTestTable.test_counter_getc           
         s   |   }d G  fddd|}d}d }|||}d}d}d}| |jg  |j|||d}	| |	 |  | |j||| fg d S )	Nr   c                       s   e Zd Zg Z ZdddZdS )z0TestTable.test_counter_dec.<locals>.TableWithIncr>   c                 S   s&   | j |||f |  j|7  _| jS r   r   r   r   r   r	   r   Q  s    z<TestTable.test_counter_dec.<locals>.TableWithInc.counter_incN)r>   r   r   r   r   r	   r   L  s   r   r!   rL   r   i  r   )r   r,   r   Zcounter_dec)
r   r   r   r-   r.   r    rW   r   Z	dec_valuer%   r   r   r	   test_counter_decH  s    

zTestTable.test_counter_decc                 C   s   dd l }d}d }| ||}t |_t||d |jj|< }	| |	j |j|||d}
| 	|	j |tj
 }| |
| |jj| }	t||jr|d}| |	jt|d|i d S )Nr   r!   commit_resultr   utf-8r   )sixr   r"   r/   _MockLowLevelRow
row_valuesZassertFalse_appendr   r   COUNTER_DEFAULTr,   r   binary_typedecodecountstuplesplit)r   rW   r   r   r   r   r-   r.   r    Zrow_objr%   Zincremented_valuer   r   r	   _counter_inc_helperb  s&    

zTestTable._counter_inc_helperc                    s&  dd l }ddlm} ddlm} d}d }| ||}g   fdd}d}d}	d	}
|||d
  |j||	|
d}W d    n1 s0    Y  | |d   \}| t	|t
 | |j|f d d d|jd}| |j| | |jdg |	|d|
i}| |j||fg | |jg  d S )Nr   r   r   r!   c                     s   t | i |} | |S r   r   r$   r   r   r	   r     s    
z.TestTable.test_counter_set.<locals>.make_batchrL   r   r   r   r   Fr   r   >q)structr(   r   r)   r    r   Zcounter_setr,   r   r   r   r   r   r   r   Structpackr   r   )r   r  r   r0   r-   r.   r    r   rW   r   r   r%   r   r\   r   r   r   r	   test_counter_set{  s6    .zTestTable.test_counter_setc           
      C   sZ   dd l }d}d}d}|d | }d}|d|}d }||||fgii}	| ||||	 d S )Nr   rL   r6   col1r   r   r  )r  r  r  
r   r  rW   rB   col_qualr   r   packed_valuefake_timestampr   r   r   r	   test_counter_inc  s    
zTestTable.test_counter_incc           
      C   sf   dd l }d}d}d}|d | }d}|d|}d }|d|d||fgii}	| ||||	 d S )	Nr   rL   s   fam   col1rw   r   r  r   )r  r  r   r  r
  r   r   r	   test_counter_inc_column_bytes  s    z'TestTable.test_counter_inc_column_bytesc                 C   s^   d}d}d}|d | }d}d }|  t  | |||| W d    n1 sP0    Y  d S NrL   r6   r	  r   r   )r   r   r  r   rW   rB   r  r   r   r   r   r   r	   test_counter_inc_bad_result  s    z%TestTable.test_counter_inc_bad_resultc                 C   s^   d}d}d}|d | }d}i }|  t  | |||| W d    n1 sP0    Y  d S r  r   KeyErrorr  r  r   r   r	   !test_counter_inc_result_key_error  s    z+TestTable.test_counter_inc_result_key_errorc                 C   sb   d}d}d}|d | }d}|i i}|  t  | |||| W d    n1 sT0    Y  d S r  r  r  r   r   r	   (test_counter_inc_result_nested_key_error  s    z2TestTable.test_counter_inc_result_nested_key_errorc           	      C   sz   d}d}d}|d | }d}d }d }||||f||fgii}|  t  | |||| W d    n1 sl0    Y  d S r  )r   r   r  )	r   rW   rB   r  r   r   r  r  r   r   r   r	   'test_counter_inc_result_non_unique_cell  s     z1TestTable.test_counter_inc_result_non_unique_cell)	r   NNNNFNNN),r   r   r   r   r   r2   r5   rC   rE   rF   r]   rh   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   (   sZ   '09<I'>    
N(()


r   c                   @   s\   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd ZdS )Test__gc_rule_to_dictc                 O   s   ddl m} ||i |S )Nr   r<   )r   r=   )r   r   r   r=   r   r   r	   r
     s    zTest__gc_rule_to_dict._callFUTc                 C   s   d }|  |}| |i  d S r   r
   r,   r   r8   r%   r   r   r	   test_with_null  s    
z$Test__gc_rule_to_dict.test_with_nullc                 C   s:   ddl m} d}||}| |}d|i}| || d S )Nr   MaxVersionsGCRule   max_versions)gcloud.bigtable.column_familyr  r
   r,   )r   r  r   r8   r%   r~   r   r   r	   test_with_max_versions  s    
z,Test__gc_rule_to_dict.test_with_max_versionsc                 C   sN   dd l }ddlm} d}|j|d}||}| |}d|i}| || d S )Nr   MaxAgeGCRulee   secondstime_to_live)datetimer!  r$  	timedeltar
   r,   )r   r)  r$  r(  max_ager8   r%   r~   r   r   r	   test_with_max_age  s    
z'Test__gc_rule_to_dict.test_with_max_agec                 C   s"   t  }| |}| ||u  d S r   )r*   r
   r   r  r   r   r	   test_with_non_gc_rule  s    
z+Test__gc_rule_to_dict.test_with_non_gc_rulec                 C   s2   ddl m} |g d}| |}| ||u  d S )Nr   )GCRuleUnionrules)r!  r.  r
   r   )r   r.  r8   r%   r   r   r	   test_with_gc_rule_union  s    

z-Test__gc_rule_to_dict.test_with_gc_rule_unionc                 C   s2   ddl m} |g d}| |}| ||u  d S Nr   GCRuleIntersectionr/  r!  r4  r
   r   )r   r4  r8   r%   r   r   r	   %test_with_intersection_other_than_two#  s    

z;Test__gc_rule_to_dict.test_with_intersection_other_than_twoc                 C   sR   ddl m} ddl m} |d}|d}|||gd}| |}| ||u  d S )Nr   r3  r  r>   r  r/  )r!  r4  r  r
   r   )r   r4  r  rule1rule2r8   r%   r   r   r	   +test_with_intersection_two_max_num_versions*  s    
zATest__gc_rule_to_dict.test_with_intersection_two_max_num_versionsc                 C   s   dd l }ddlm} ddlm} ddlm} d}|j|d}||}d}||}	|||	gd}
| |
}||d	}| || d S )
Nr   r3  r#  r  r%  r&  r  r/  )r   r(  )r)  r!  r4  r$  r  r*  r
   r,   )r   r)  r4  r$  r  r(  r+  r7  r   r8  r8   r%   r~   r   r   r	    test_with_intersection_two_rules4  s    
z6Test__gc_rule_to_dict.test_with_intersection_two_rulesc                 C   sJ   ddl m} |g d}|g d}|||gd}| |}| ||u  d S r2  r5  )r   r4  r7  r8  r8   r%   r   r   r	   'test_with_intersection_two_nested_rulesG  s    


z=Test__gc_rule_to_dict.test_with_intersection_two_nested_rulesN)r   r   r   r
   r  r"  r,  r-  r1  r6  r9  r:  r;  r   r   r   r	   r    s   	
r  c                   @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )Test__string_successorc                 O   s   ddl m} ||i |S )Nr   )r   )r   r   )r   r   r   r   r   r   r	   r
   S  s    zTest__string_successor._callFUTc                 C   s(   |  | dd |  | dd d S )Ns   boa   bobs   abc1s   abc2r,   r
   r   r   r   r	   test_with_alphanumericW  s    z-Test__string_successor.test_with_alphanumericc                 C   s   |  | dd d S )Ns   boar=  r>  r   r   r   r	   test_with_last_byte[  s    z*Test__string_successor.test_with_last_bytec                 C   s   |  | dd d S )N    r>  r   r   r   r	   test_with_empty_string^  s    z-Test__string_successor.test_with_empty_stringc                 C   s   |  | dd d S )Ns   rA  r>  r   r   r   r	   test_with_all_last_bytesa  s    z/Test__string_successor.test_with_all_last_bytesc                 C   s   |  | dd d S )Nboar=  r>  r   r   r   r	   test_with_unicode_inputd  s    z.Test__string_successor.test_with_unicode_inputN)	r   r   r   r
   r?  r@  rB  rC  rE  r   r   r   r	   r<  Q  s   r<  c                   @   s.   e Zd Zd
ddZdd Zdd Zdd	 ZdS )Test__convert_to_time_rangeNc                 C   s   ddl m} ||dS )Nr   )_convert_to_time_rangerO   )r   rG  )r   rP   rG  r   r   r	   r
   j  s    z$Test__convert_to_time_range._callFUTc                 C   s    d }| j |d}| |d  d S NrO   r  )r   rP   r%   r   r   r	   	test_nulln  s    z%Test__convert_to_time_range.test_nullc                 C   s@   t  }| t | j|d W d    n1 s20    Y  d S rH  )r*   r   r   r
   )r   rP   r   r   r	   test_invalid_types  s    z-Test__convert_to_time_range.test_invalid_typec                 C   sd   ddl m} ddlm} d}|d| }| j|d}| t|| | |jd  | |j	| d S )Nr   _datetime_from_microsecondsTimestampRange   K@?s>  rO   )
gcloud._helpersrL  gcloud.bigtable.row_filtersrN  r
   r   r   r,   startend)r   rL  rN  rP   ts_dtr%   r   r   r	   test_successx  s    z(Test__convert_to_time_range.test_success)N)r   r   r   r
   rI  rJ  rV  r   r   r   r	   rF  h  s   
rF  c                   @   s$   e Zd Zdd Zdd Zdd ZdS )Test__cells_to_pairsc                 O   s   ddl m} ||i |S )Nr   )rs   )r   rs   )r   r   r   rs   r   r   r	   r
     s    zTest__cells_to_pairs._callFUTc                 C   sN   ddl m} d}||d d}d}||d d}| ||g}| |||g d S )Nr   Cellr   r   rP   r   )rx   rY  r
   r,   )r   rY  value1cell1value2cell2r%   r   r   r	   test_without_timestamp  s    z+Test__cells_to_pairs.test_without_timestampc                 C   s   ddl m} ddlm} d}d}||d }|||d}d}d	}||d }	|||	d}
| j||
gd
d}| |||f||fg d S )Nr   rK  rX  r      ZrrP  rZ  r   l   ^trTrt   )rQ  rL  rx   rY  r
   r,   )r   rL  rY  r[  
ts1_millists1r\  r]  
ts2_millists2r^  r%   r   r   r	   test_with_timestamp  s    z(Test__cells_to_pairs.test_with_timestampNr   r   r   r
   r_  re  r   r   r   r	   rW    s   rW  c                   @   s&   e Zd Zd	ddZdd Zdd ZdS )
Test__partial_row_to_dictFc                 C   s   ddl m} |||dS )Nr   )_partial_row_to_dictrt   )r   rh  )r   Zpartial_row_dataru   rh  r   r   r	   r
     s    z"Test__partial_row_to_dict._callFUTc                 C   sl   ddl m} ddl m} |d}d}d}||d g||d gd|jd< | |}||d	}| || d S )
Nr   rX  ri      row-key   hi-im-bytes   bi-im-hytesr  s   col2fam1s	   fam1:col1s	   fam1:col2)rx   rY  rj   ry   r
   r,   )r   rY  rj   row_dataval1val2r%   r~   r   r   r	   r_    s    


z0Test__partial_row_to_dict.test_without_timestampc                 C   s   ddl m} ddlm} ddlm} |d}d}d}||d }d	}d
}	||	d }
|||g|||
gd|jd< | j|dd}||f||	fd}| || d S )Nr   rK  rX  ri   ri  rj  r`  rP  rk  l    a;rl  rm  Trt   rn  )rQ  rL  rx   rY  rj   ry   r
   r,   )r   rL  rY  rj   ro  rp  ra  rb  rq  rc  rd  r%   r~   r   r   r	   re    s$    

z-Test__partial_row_to_dict.test_with_timestampN)Frf  r   r   r   r	   rg    s   
rg  c                   @   sf   e Zd Zdd Zdd Zdd Zdd Zdd
dZdd Zdd Z	dd Z
dd Zdd Zdd Zd	S )Test__filter_chain_helperc                 O   s   ddl m} ||i |S )Nr   rM   )r   rN   )r   r   r   rN   r   r   r	   r
     s    z"Test__filter_chain_helper._callFUTc                 C   s6   |  t |   W d    n1 s(0    Y  d S r   r   r   r
   r   r   r   r	   test_no_filters  s    z)Test__filter_chain_helper.test_no_filtersc                 C   s>   ddl m} d}| j|d}| t|| | |j| d S )Nr   CellsColumnLimitFilterr   )rT   )rR  rv  r
   r   r   r,   	num_cells)r   rv  rT   r%   r   r   r	   test_single_filter  s
    z,Test__filter_chain_helper.test_single_filterc                 C   sR   ddl m} g }d}| j||d}| ||g | t|| | |j| d S )Nr   ru  r   )rT   rS   )rR  rv  r
   r,   r   r   rw  )r   rv  rS   rT   r%   r   r   r	   test_existing_filters  s    z/Test__filter_chain_helper.test_existing_filtersNc                 C   s   ddl m} ddl m} ddl m}	 |d u r0d}|d u r<d}|d u rP|d | }| j|||d}
| t|
|	 | t|
j	| |
j	d }|
j	d	 }| t|| | t|| | |j
|d
 | |j
|d
 |
S )Nr   ColumnQualifierRegexFilterFamilyNameRegexFilterRowFilterChainrp   r|   r   )rT   rP   r>   r   )rR  r{  r}  r  r
   r   r   r,   r   rS   regexrz   )r   num_filtersrT   rP   r   rB   r|   r{  r}  r  r%   Z
fam_filterZqual_filterr   r   r	   _column_helper  s&    

z(Test__filter_chain_helper._column_helperc                 C   s   | j dd d S )Nr  )r  r  r   r   r   r	   test_column_only  s    z*Test__filter_chain_helper.test_column_onlyc                 C   s   | j ddddd d S )Nr  s	   cfB:qualYZcfBZqualYr  r   rB   r|   r  r   r   r   r	   test_column_bytes  s    z+Test__filter_chain_helper.test_column_bytesc                 C   s   | j ddddd d S )Nr  z	cfU:qualNZcfUZqualNr  r  r   r   r   r	   test_column_unicode  s    z-Test__filter_chain_helper.test_column_unicodec                 C   sJ   ddl m} d}| jd|d}|jd }| t|| | |j| d S )Nr   ru        )r  rT   r  )rR  rv  r  rS   r   r   r,   rw  )r   rv  rT   r%   Zversion_filterr   r   r	   test_with_versions"  s    
z,Test__filter_chain_helper.test_with_versionsc           	      C   s   ddl m} ddlm} ddlm} d}| jd|d}|jd }| t|| |j	}| t|| | 
|jd  |d	| }| 
|j| d S )
Nr   rK  rM  )TimestampRangeFilterrO  r  )r  rP   r  rP  )rQ  rL  rR  rN  r  r  rS   r   r   Zrange_r,   rS  rT  )	r   rL  rN  r  rP   r%   Zrange_filterZ
time_rangerU  r   r   r	   re  .  s    
z-Test__filter_chain_helper.test_with_timestampc                 C   s   d}d}| j d||d d S )Nr  rO     )r  rT   rP   r  )r   rT   rP   r   r   r	   test_with_all_options@  s
    z/Test__filter_chain_helper.test_with_all_options)NNNNN)r   r   r   r
   rt  rx  ry  r  r  r  r  r  re  r  r   r   r   r	   rr    s   
  
rr  c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
Test__columns_filter_helperc                 O   s   ddl m} ||i |S )Nr   )rd   )r   rd   )r   r   r   rd   r   r   r	   r
   I  s    z$Test__columns_filter_helper._callFUTc                 C   s<   g }|  t | | W d    n1 s.0    Y  d S r   rs  r   r   r   r	   test_no_columnsM  s    z+Test__columns_filter_helper.test_no_columnsc                 C   s8   ddl m} d}|g}| |}||}| || d S )Nr   r|  rp   )rR  r}  r
   r,   )r   r}  rB   rf   r%   r~   r   r   r	   test_single_columnR  s    
z.Test__columns_filter_helper.test_single_columnc                 C   s  ddl m} ddl m} ddl m} ddl m} d}d}d}||d	 | g}| |}	| t|	| | t	|	j
d
 |	j
d }
|	j
d }| t|
| | |
j|d | t|| |j
\}}| t|| | |j|d | t|| | |j|d d S )Nr   rz  r|  r~  RowFilterUnionrp   Zcf2Zqual2r   r  r>   r   )rR  r{  r}  r  r  r
   r   r   r,   r   rS   r  rz   )r   r{  r}  r  r  Zcol_fam1Zcol_fam2Z	col_qual2rf   r%   filter1filter2Zfilter2aZfilter2br   r   r	   test_column_and_column_families[  s*    



z;Test__columns_filter_helper.test_column_and_column_familiesN)r   r   r   r
   r  r  r  r   r   r   r	   r  G  s   	r  c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
Test__row_keys_filter_helperc                 O   s   ddl m} ||i |S )Nr   )r   )r   r   )r   r   r   r   r   r   r	   r
   y  s    z%Test__row_keys_filter_helper._callFUTc                 C   s<   g }|  t | | W d    n1 s.0    Y  d S r   rs  )r   row_keysr   r   r	   test_no_rows}  s    z)Test__row_keys_filter_helper.test_no_rowsc                 C   s8   ddl m} d}|g}| |}||}| || d S )Nr   RowKeyRegexFilterri  )rR  r  r
   r,   )r   r  rY   r  r%   r~   r   r   r	   test_single_row  s    
z,Test__row_keys_filter_helper.test_single_rowc                 C   sp   ddl m} ddl m} d}d}d}|||g}| |}||}||}	||}
|||	|
gd}| || d S )Nr   r  r  s   row-key1s   row-key2s   row-key3)rS   )rR  r  r  r
   r,   )r   r  r  r   r   Zrow_key3r  r%   r  r  Zfilter3r~   r   r   r	   test_many_rows  s    

z+Test__row_keys_filter_helper.test_many_rowsN)r   r   r   r
   r  r  r  r   r   r   r	   r  w  s   	r  c                   @   s   e Zd Zdd ZdS )r+   c                 C   s
   || _ d S r   )Z	_instance)r   r1   r   r   r	   __init__  s    z_Connection.__init__Nr   r   r   r  r   r   r   r	   r+     s   r+   c                   @   s   e Zd ZdddZdS )r?   Nc                 C   s   || _ || _d S r   )column_family_idr8   )r   r  r8   r   r   r	   r    s    z"_MockLowLevelColumnFamily.__init__)Nr  r   r   r   r	   r?     s   r?   c                   @   s6   e Zd Zdd Zdd ZdddZdd	 Zd
d ZdS )r"   c                 O   s:   || _ || _d| _i | _i | _g | _d | _g | _d | _d S Nr   )	r   r   rA   r@   r   rX   rV   r   r   r   r   r   r	   r    s    z_MockLowLevelTable.__init__c                 C   s   |  j d7  _ | jS Nr>   )rA   r@   r   r   r   r	   list_column_families  s    z'_MockLowLevelTable.list_column_familiesNc                 C   s   | j | }||_|S r   )r   r   )r   rY   r#   r%   r   r   r	   rW     s    
z_MockLowLevelTable.rowc                 O   s   | j ||f | jS r   )rX   r#   rV   r   r   r   r	   read_row  s    z_MockLowLevelTable.read_rowc                 O   s   | j ||f | jS r   )r   r#   r   r   r   r   r	   	read_rows  s    z_MockLowLevelTable.read_rows)N)r   r   r   r  r  rW   r  r  r   r   r   r	   r"     s
   
r"   c                   @   s*   e Zd ZdZd	ddZdd Zdd ZdS )
r   r   Nc                 C   s   || _ d| _i | _|| _d S r   )rY   r   r   r   )r   rY   r   r   r   r	   r    s    z_MockLowLevelRow.__init__c                 C   s*   | j ||f| j}|| | j ||f< d S r   )r   
setdefaultr   )r   r  r   Z	int_valuecountr   r   r	   increment_cell_value  s    z%_MockLowLevelRow.increment_cell_valuec                 C   s   | j S r   r   r   r   r   r	   commit  s    z_MockLowLevelRow.commit)N)r   r   r   r   r  r  r  r   r   r   r	   r     s   
r   c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )r   c                 O   s"   || _ || _g | _g | _g | _d S r   )r   r   r   r   r   r   r   r   r	   r    s
    z_MockBatch.__init__c                 C   s   | S r   r   r   r   r   r	   	__enter__  s    z_MockBatch.__enter__c                 C   s   | j |||f d S r   )r   r#   )r   exc_type	exc_value	tracebackr   r   r	   __exit__  s    z_MockBatch.__exit__c                 G   s   | j | d S r   )r   r#   r   r   r   r   r	   r     s    z_MockBatch.putc                 G   s   | j | d S r   )r   r#   r  r   r   r	   r     s    z_MockBatch.deleteN)r   r   r   r  r  r  r   r   r   r   r   r	   r     s
   r   c                   @   s&   e Zd Zd	ddZdd Zdd ZdS )
r   Nr   c                 C   s    |pi | _ d| _d| _|| _d S r  )r   r   r   r   )r   r   r   r   r   r	   r    s    
z_MockPartialRowsData.__init__c                 C   s   |  j d7  _ d S r  )r   r   r   r   r	   consume_all  s    z _MockPartialRowsData.consume_allc                 C   s"   |  j d7  _ | j | jkrtd S r  )r   r   StopIterationr   r   r   r	   consume_next  s    z!_MockPartialRowsData.consume_next)Nr   )r   r   r   r  r  r  r   r   r   r	   r     s   
r   )Z	unittest2ZTestCaser   r   r   r  r<  rF  rW  rg  rr  r  r  r*   r+   r?   r"   r   r   r   r   r   r   r	   <module>   s0          WY$1n0%