
    9j                         d Z ddlZddlmc mZ ddlZddlm	Z	 ddl
m
Z
mZmZ ddlmZ ddededee   fd	Z G d
 d      Zy)z"Unit tests for indicators service.    N)Decimal)datetimetimezone	timedelta)indicators_servicecount
base_pricereturnc                    g }|}t        |       D ]  }|dz  dz
  dz  }||z  }|j                  t        dddt        j                        t        |      z   t        t        |dz
              t        t        |d	z               t        t        |d	z
              t        t        |            t        t        d	|d
z  z               d        |S )N      2   i     )tzinfo)hours   d   
   )	open_timeopenhighlowclosevolume)rangeappendr   r   utcr   r   str)r   r	   candlespriceichanges         ?C:\xampp\htdocs\tradingbinance\backend\tests\test_indicators.pygenerate_candlesr$   
   s    GE5\a%!)r!!$1X\\BYUVEWWC
O,C,-3us{+,SZ(c#B,/0
 	  N    c                   $    e Zd Zd Zd Zd Zd Zy)TestIndicatorsServicec                 J	   t        d      }t        j                  |      }d}||v}|st        j                  d|fd||f      t        j
                  |      dt        j                         v st        j                  |      rt        j
                  |      nddz  }dd|iz  }t        t        j                  |            d x}}d	}||v }|st        j                  d
|fd||f      t        j
                  |      dt        j                         v st        j                  |      rt        j
                  |      nddz  }dd|iz  }t        t        j                  |            d x}}d}||v }|st        j                  d
|fd||f      t        j
                  |      dt        j                         v st        j                  |      rt        j
                  |      nddz  }dd|iz  }t        t        j                  |            d x}}d}||v }|st        j                  d
|fd||f      t        j
                  |      dt        j                         v st        j                  |      rt        j
                  |      nddz  }dd|iz  }t        t        j                  |            d x}}d}||v }|st        j                  d
|fd||f      t        j
                  |      dt        j                         v st        j                  |      rt        j
                  |      nddz  }dd|iz  }t        t        j                  |            d x}}d}||v }|st        j                  d
|fd||f      t        j
                  |      dt        j                         v st        j                  |      rt        j
                  |      nddz  }dd|iz  }t        t        j                  |            d x}}d}||v }|st        j                  d
|fd||f      t        j
                  |      dt        j                         v st        j                  |      rt        j
                  |      nddz  }dd|iz  }t        t        j                  |            d x}}y )Nr   error)not in)z%(py1)s not in %(py3)sresultpy1py3assert %(py5)spy5rsiinz%(py1)s in %(py3)smacdbb_upperatradxvwapr$   r   calculate_all
@pytest_ar_call_reprcompare	_saferepr@py_builtinslocals_should_repr_global_nameAssertionError_format_explanation)selfr   r+   @py_assert0@py_assert2@py_format4@py_format6s          r#   %test_calculate_all_returns_indicatorsz;TestIndicatorsService.test_calculate_all_returns_indicators   s   "3'#11':$wf$$$$wf$$$w$$$$$$f$$$f$$$$$$$uuuvvv#zV####zV###z######V###V#######uuuuuuvvvr%   c                    t        d      }t        j                  |      }d}||v }|st        j                  d|fd||f      t        j
                  |      dt        j                         v st        j                  |      rt        j
                  |      nddz  }dd|iz  }t        t        j                  |            d x}}|d   }d	}||k(  }|slt        j                  d
|fd||f      t        j
                  |      t        j
                  |      dz  }dd|iz  }	t        t        j                  |	            d x}x}}y )Nr   r)   r2   r4   r+   r,   r/   r0   insufficient_data)==)z%(py1)s == %(py4)sr-   py4assert %(py6)spy6r:   )
rD   r   r+   rE   rF   rG   rH   @py_assert3@py_format5@py_format7s
             r#   test_insufficient_dataz,TestIndicatorsService.test_insufficient_data'   s    "2&#11': w&    w&   w      &   &       g5"55"55555"5555555"55555555r%   c                 F   t        d      }t        j                  |      }|d   }g d}||v }|slt        j                  d|fd||f      t        j
                  |      t        j
                  |      dz  }dd|iz  }t        t        j                  |            d x}x}}y )	Nr   ema_crossover)bullishbearishnoner2   )z%(py1)s in %(py4)srM   rO   rP   )r$   r   r;   r<   r=   r>   rB   rC   )rD   r   r+   rE   rQ   rF   rR   rS   s           r#   test_ema_crossover_detectionz2TestIndicatorsService.test_ema_crossover_detection-   sr    "3'#11':o&H*HH&*HHHHH&*HHHH&HHH*HHHHHHHHr%   c                 (   t        d      }t        j                  |      }|d   }t        |t              }|sddt        j                         v st        j                  t              rt        j                  t              ndt        j                  |      dt        j                         v st        j                  t              rt        j                  t              ndt        j                  |      dz  }t        t        j                  |            d x}}|d   }t        |t              }|sddt        j                         v st        j                  t              rt        j                  t              ndt        j                  |      dt        j                         v st        j                  t              rt        j                  t              ndt        j                  |      dz  }t        t        j                  |            d x}}y )Nr   supportsz5assert %(py5)s
{%(py5)s = %(py0)s(%(py2)s, %(py3)s)
}
isinstancelist)py0py2r.   r0   resistances)r$   r   r;   r]   r^   r?   r@   r<   rA   r>   rB   rC   )rD   r   r+   @py_assert1@py_assert4rH   s         r#   test_support_resistancez-TestIndicatorsService.test_support_resistance2   s   "3'#11': ,3z,d33333333z333z333,333333d333d3333333333 /6z/66666666z666z666/6666666666666666666r%   N)__name__
__module____qualname__rI   rT   rZ   rd    r%   r#   r'   r'      s    	 6I
7r%   r'   )r   g     j@)__doc__builtinsr?   _pytest.assertion.rewrite	assertionrewriter<   pytestdecimalr   r   r   r   app.services.indicators_servicer   intfloatr^   dictr$   r'   rh   r%   r#   <module>rt      sC    (     2 2 >C 5 tDz "7 7r%   