ó
ÍÄiQc           @   sÂ   d  d l  Z  d  d l Z d  d l Z d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d	 „  ƒ  YZ d
 e f d „  ƒ  YZ d e f d „  ƒ  YZ	 d e f d „  ƒ  YZ
 d S(   iÿÿÿÿNt   Questionc           B   s5   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C   s(   d t  j ƒ  d d GHt j d ƒ d  S(   Ns   Method not implemented: %si   i   (   t   inspectt   stackt   syst   exit(   t   self(    (    sU   C:\Users\Nicholas\Desktop\CS188X Berkeley\05 Projects\03 Reinforcement\testClasses.pyt   raiseNotDefined   s    c         C   s    t  | d ƒ |  _ g  |  _ d  S(   Nt
   max_points(   t   intt	   maxPointst	   testCases(   R   t   questionDict(    (    sU   C:\Users\Nicholas\Desktop\CS188X Berkeley\05 Projects\03 Reinforcement\testClasses.pyt   __init__   s    c         C   s   |  j  S(   N(   R	   (   R   (    (    sU   C:\Users\Nicholas\Desktop\CS188X Berkeley\05 Projects\03 Reinforcement\testClasses.pyt   getMaxPoints   s    c         C   s   |  j  j | | f ƒ d  S(   N(   R
   t   append(   R   t   testCaset   thunk(    (    sU   C:\Users\Nicholas\Desktop\CS188X Berkeley\05 Projects\03 Reinforcement\testClasses.pyt   addTestCase#   s    c         C   s   |  j  ƒ  d  S(   N(   R   (   R   t   grades(    (    sU   C:\Users\Nicholas\Desktop\CS188X Berkeley\05 Projects\03 Reinforcement\testClasses.pyt   execute&   s    (   t   __name__t
   __module__R   R   R   R   R   (    (    (    sU   C:\Users\Nicholas\Desktop\CS188X Berkeley\05 Projects\03 Reinforcement\testClasses.pyR       s
   				t   PassAllTestsQuestionc           B   s   e  Z d  „  Z RS(   c         C   sc   t  } | j ƒ  x, |  j D]! \ } } | | ƒ s t } q q W| rU | j d ƒ n
 | j ƒ  d  S(   Ns   Tests failed.(   t   Falset   assignZeroCreditR
   t   Truet   failt   assignFullCredit(   R   R   t   testsFailedt   _t   f(    (    sU   C:\Users\Nicholas\Desktop\CS188X Berkeley\05 Projects\03 Reinforcement\testClasses.pyR   ,   s    
(   R   R   R   (    (    (    sU   C:\Users\Nicholas\Desktop\CS188X Berkeley\05 Projects\03 Reinforcement\testClasses.pyR   *   s   t   HackedPartialCreditQuestionc           B   s   e  Z d  „  Z RS(   c         C   sº   | j  ƒ  d } t } xa |  j D]V \ } } | | ƒ } d | j k rj | rv | t | j d ƒ 7} qv q  | os | } q  Wt | ƒ |  j k r£ | r£ | j  ƒ  n | j t | ƒ ƒ d  S(   Ni    t   points(   R   R   R
   t   testDictt   floatR   R	   t	   addPoints(   R   R   R    t   passedR   R   t
   testResult(    (    sU   C:\Users\Nicholas\Desktop\CS188X Berkeley\05 Projects\03 Reinforcement\testClasses.pyR   =   s    
 (   R   R   R   (    (    (    sU   C:\Users\Nicholas\Desktop\CS188X Berkeley\05 Projects\03 Reinforcement\testClasses.pyR   ;   s   t   Q6PartialCreditQuestionc           B   s   e  Z d  Z d „  Z RS(   s†   Fails any test which returns False, otherwise doesn't effect the grades object.
    Partial credit tests will add the required points.c         C   sZ   | j  ƒ  g  } x* |  j D] \ } } | j | | ƒ ƒ q Wt | k rV | j  ƒ  n  d  S(   N(   R   R
   R   R   (   R   R   t   resultsR   R   (    (    sU   C:\Users\Nicholas\Desktop\CS188X Berkeley\05 Projects\03 Reinforcement\testClasses.pyR   U   s    
(   R   R   t   __doc__R   (    (    (    sU   C:\Users\Nicholas\Desktop\CS188X Berkeley\05 Projects\03 Reinforcement\testClasses.pyR&   Q   s   t   PartialCreditQuestionc           B   s   e  Z d  Z d „  Z RS(   s†   Fails any test which returns False, otherwise doesn't effect the grades object.
    Partial credit tests will add the required points.c         C   sO   | j  ƒ  x> |  j D]3 \ } } | | ƒ s | j  ƒ  | j d ƒ t Sq Wd  S(   Ns   Tests failed.(   R   R
   R   R   (   R   R   R   R   (    (    sU   C:\Users\Nicholas\Desktop\CS188X Berkeley\05 Projects\03 Reinforcement\testClasses.pyR   b   s    

(   R   R   R(   R   (    (    (    sU   C:\Users\Nicholas\Desktop\CS188X Berkeley\05 Projects\03 Reinforcement\testClasses.pyR)   ^   s   t   NumberPassedQuestionc           B   s   e  Z d  Z d „  Z RS(   s)   Grade is the number of test cases passed.c         C   s<   | j  g  |  j D] \ } } | | ƒ ^ q j t ƒ ƒ d  S(   N(   R#   R
   t   countR   (   R   R   R   R   (    (    sU   C:\Users\Nicholas\Desktop\CS188X Berkeley\05 Projects\03 Reinforcement\testClasses.pyR   p   s    (   R   R   R(   R   (    (    (    sU   C:\Users\Nicholas\Desktop\CS188X Berkeley\05 Projects\03 Reinforcement\testClasses.pyR*   m   s   t   TestCasec           B   sb   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d	 „  Z RS(
   c         C   s(   d t  j ƒ  d d GHt j d ƒ d  S(   Ns   Method not implemented: %si   i   (   R   R   R   R   (   R   (    (    sU   C:\Users\Nicholas\Desktop\CS188X Berkeley\05 Projects\03 Reinforcement\testClasses.pyR   z   s    c         C   s   |  j  S(   N(   t   path(   R   (    (    sU   C:\Users\Nicholas\Desktop\CS188X Berkeley\05 Projects\03 Reinforcement\testClasses.pyt   getPath~   s    c         C   s,   | |  _  | |  _ | d |  _ g  |  _ d  S(   NR-   (   t   questionR!   R-   t   messages(   R   R/   R!   (    (    sU   C:\Users\Nicholas\Desktop\CS188X Berkeley\05 Projects\03 Reinforcement\testClasses.pyR      s    		c         C   s   |  j  ƒ  d  S(   N(   R   (   R   (    (    sU   C:\Users\Nicholas\Desktop\CS188X Berkeley\05 Projects\03 Reinforcement\testClasses.pyt   __str__‡   s    c         C   s   |  j  ƒ  d  S(   N(   R   (   R   R   t
   moduleDictt   solutionDict(    (    sU   C:\Users\Nicholas\Desktop\CS188X Berkeley\05 Projects\03 Reinforcement\testClasses.pyR   Š   s    c         C   s   |  j  ƒ  t S(   N(   R   R   (   R   R2   t   filePath(    (    sU   C:\Users\Nicholas\Desktop\CS188X Berkeley\05 Projects\03 Reinforcement\testClasses.pyt   writeSolution   s    
c         C   sC   | j  d |  j f ƒ x% |  j D] } | j  d | f ƒ q! Wt S(   Ns   PASS: %ss       %s(   t
   addMessageR-   R0   R   (   R   R   t   line(    (    sU   C:\Users\Nicholas\Desktop\CS188X Berkeley\05 Projects\03 Reinforcement\testClasses.pyt   testPass—   s    c         C   sC   | j  d |  j f ƒ x% |  j D] } | j  d | f ƒ q! Wt S(   Ns   FAIL: %ss       %s(   R6   R-   R0   R   (   R   R   R7   (    (    sU   C:\Users\Nicholas\Desktop\CS188X Berkeley\05 Projects\03 Reinforcement\testClasses.pyt   testFail   s    c         C   s«   | j  | ƒ t d | | ƒ } | | } | j d | | k rE d n d |  j | | f ƒ | d k r | j d | f ƒ n  x% |  j D] } | j d | f ƒ q‰ Wt S(   Ni    s   %s: %s (%s of %s points)t   PASSt   FAILs   EXTRA CREDIT: %s pointss       %s(   R#   t   maxR6   R-   R0   R   (   R   R   R    R	   t   extraCreditt   regularCreditR7   (    (    sU   C:\Users\Nicholas\Desktop\CS188X Berkeley\05 Projects\03 Reinforcement\testClasses.pyt   testPartial¥   s    
2c         C   s   |  j  j | j d ƒ ƒ d  S(   Ns   
(   R0   t   extendt   split(   R   t   message(    (    sU   C:\Users\Nicholas\Desktop\CS188X Berkeley\05 Projects\03 Reinforcement\testClasses.pyR6   ³   s    (   R   R   R   R.   R   R1   R   R5   R8   R9   R?   R6   (    (    (    sU   C:\Users\Nicholas\Desktop\CS188X Berkeley\05 Projects\03 Reinforcement\testClasses.pyR,   x   s   						
			(   R   t   reR   t   objectR    R   R   R&   R)   R*   R,   (    (    (    sU   C:\Users\Nicholas\Desktop\CS188X Berkeley\05 Projects\03 Reinforcement\testClasses.pyt   <module>   s   