a
    hP                     @   sT   d dl Z G dd dZdd Zdd Zd dlZedkrPG d	d
 d
ejZe  dS )    Nc                   @   sL   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S )	genquat_tc                 C   s>   ||| ; }||kr$|d7 }||8 }|| _ || _|d@ | _d S )N      )nij)selfZargiZargjargn r
   T/homepages/25/d321765456/htdocs/pub_http_internet/grad-school/src/sack/genquat_tm.py__init__5   s    zgenquat_t.__init__c                 C   s   | j |j ko| j|jkS N)r   r   abr
   r
   r   __eq__>   s    zgenquat_t.__eq__c                 C   s
   | |k S r   r
   r   r
   r
   r   __ne__A   s    zgenquat_t.__ne__c           	      C   s   | j |j krttdd| j }| j}| j}|j}|j}| j }|| }|d@ r`|| | | |_n|| | |_|| d@ |_|j|kr| j|8  _| jd7  _| jdM  _|S )Nr      r   r   )r   RuntimeErrorr   r   r   )	r   r   cr   r   klr   Ztwonr
   r
   r   __mul__D   s$    
zgenquat_t.__mul__c                 C   s:   | j d@ r| j}n| j| j | j }t|| j  | j}|S )Nr   )r   r   r   r   )r   Zmsir   r
   r
   r   inv[   s
    
zgenquat_t.invc                 C   sB   t d| }t|dkr t| t|d t|d | d S )Nz^(\d)+,(\d+)$r   r   r   )reZmatchgroupslenIOErrorr   int)r   Zstringr	   r   r
   r
   r   scane   s    zgenquat_t.scanc                 C   s   t | jd t | j S )N,)strr   r   r   r
   r
   r   __str__k   s    zgenquat_t.__str__c                 C   s   |   S r   )r#   r"   r
   r
   r   __repr__n   s    zgenquat_t.__repr__N)__name__
__module____qualname__r   r   r   r   r   r   r#   r$   r
   r
   r
   r   r   3   s   	
r   c                 C   s   t | }|S r   )r   )params_stringr   r
   r
   r   params_from_stringq   s    r)   c                 C   s$   t |}tdd|}|| | |S )Nr   )r)   r   r   )Zvalue_stringr(   r   objr
   r
   r   from_stringu   s    r+   __main__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_casesc                 C   s   d S r   r
   r"   r
   r
   r   test___init__   s    ztest_cases.test___init__c                 C   s   d S r   r
   r"   r
   r
   r   test___eq__   s    ztest_cases.test___eq__c                 C   s   d S r   r
   r"   r
   r
   r   test___ne__   s    ztest_cases.test___ne__c                 C   s   d S r   r
   r"   r
   r
   r   test___mul__   s    ztest_cases.test___mul__c                 C   s   d S r   r
   r"   r
   r
   r   test_inv   s    ztest_cases.test_invc                 C   s   d S r   r
   r"   r
   r
   r   	test_scan   s    ztest_cases.test_scanc                 C   s   d S r   r
   r"   r
   r
   r   test___str__   s    ztest_cases.test___str__c                 C   s   d S r   r
   r"   r
   r
   r   test___repr__   s    ztest_cases.test___repr__c                 C   s   d S r   r
   r"   r
   r
   r   test_params_from_string   s    z"test_cases.test_params_from_stringc                 C   s   d S r   r
   r"   r
   r
   r   test_from_string   s    ztest_cases.test_from_stringN)r%   r&   r'   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r
   r
   r
   r   r-      s   r-   )	r   r   r)   r+   Zunittestr%   ZTestCaser-   mainr
   r
   r
   r   <module>1   s   > 