Metadata-Version: 1.0
Name: minitest
Version: 1.4.0
Summary: Minitest is inspired by Ruby minispec.
Home-page: https://pypi.python.org/pypi/minitest
Author: Colin Ji
Author-email: jichen3000@gmail.com
License: UNKNOWN
Description: Mini Test
        =========
        
        This project is inspired by Ruby minispec, but now it just implement
        some methods including:
        
        ::
        
            must_equal, must_true, must_false, must_raise.
        
        And some other useful functions:
        
        ::
        
            p, pp, pl, ppl, length, size, inject, flag_test
        
        github: https://github.com/jichen3000/minitest
        
        pypi: https://pypi.python.org/pypi/minitest
        
        --------------
        
        Author
        ~~~~~~
        
        Colin Ji jichen3000@gmail.com
        
        How to use
        ~~~~~~~~~~
        
        install:
        
        ::
        
            pip install minitest
        
        code:
        
        ::
        
            if __name__ == '__main__':
                # import the minitest
                from minitest import *
        
                import operator
        
                # declare a variable for test
                tself = get_test_self()
                # you could put all your test variables on tself
                # just like declare your variables on setup.
                tself.jc = "jc"
        
                # declare a test
                with test(object.must_equal):
                    tself.jc.must_equal('jc')
                    None.must_equal(None)
        
        
                with test(object.must_true):
                    True.must_true()
                    False.must_true()
        
                with test(object.must_false):
                    True.must_false()
                    False.must_false()
        
                # using a funcation to test equal.
                with test("object.must_equal_with_func"):
                    (1).must_equal(1, key=operator.eq)
                    (1).must_equal(2, key=operator.eq)
        
                def div_zero():
                    1/0
                    
                # test exception
                with test("test must_raise"):
                    (lambda : div_zero()).must_raise(ZeroDivisionError)
                    (lambda : div_zero()).must_raise(ZeroDivisionError, "integer division or modulo by zero")
                    (lambda : div_zero()).must_raise(ZeroDivisionError, "in")
        
        result:
        
        ::
        
            Running tests:
        
            .FFFF.
        
            Finished tests in 0.013165s.
        
            1) Failure:
            File "/Users/Colin/work/minitest/test.py", line 29, in <module>:
            EXPECTED: True
              ACTUAL: False
        
        
            2) Failure:
            File "/Users/Colin/work/minitest/test.py", line 32, in <module>:
            EXPECTED: False
              ACTUAL: True
        
        
            3) Failure:
            File "/Users/Colin/work/minitest/test.py", line 38, in <module>:
            EXPECTED: 2
              ACTUAL: 1
        
        
            4) Failure:
            File "/Users/Colin/work/minitest/test.py", line 47, in <module>:
            EXPECTED: 'in'
              ACTUAL: 'integer division or modulo by zero'
        
        
            6 tests, 14 assertions, 4 failures, 0 errors.
            [Finished in 0.1s]
        
        Other useful function
        ~~~~~~~~~~~~~~~~~~~~~
        
        p, pp, pl, ppl, length, size, these four functions could been used by
        any object.
        
        p is a print function. This function will add variable name as the
        title. code:
        
        ::
        
            value = "Minitest"
            # add a title 'value : ' automatically.
            value.p()                       # value : Minitest
        
            # or you can give a string as title.
            value.p("It is a value:")       # It is a value: Minitest
        
            # if you don't want a title, use the parameter
            value.p(auto_get_title=False)   # Minitest
        
        pp is another print function which will invoke the pprint.pprint
        function. Its parameters are just like the p. code:
        
        ::
        
            value = "Minitest"
            value.pp()                      # value :
                                            # 'Minitest'
                                            
            value.pp("It is a value:")      #  It is a value:
                                            # 'Minitest'
                                            
            value.pp(auto_get_title=False)  # 'Minitest'
        
        pl is another print function which will print the file path and line NO.
        And some editors support to go to the line of that file, such as
        Sublime2. Its parameters are just like the p. Notice, it will print new
        line firstly, since in some case, there will be other string before file
        path, which cause some editor cannot jump to the location.
        
        code:
        
        ::
        
            value = "Minitest"
            value.pl()                      #     
                                            #     File "/Users/Colin/work/minitest/test.py", line 72
                                            # value : Minitest
                                            
            value.pl("It is a value:")      #     
                                            #     File "/Users/Colin/work/minitest/test.py", line 73
                                            #  It is a value: Minitest
                                            
            value.pl(auto_get_title=False)  #     
                                            #     File "/Users/Colin/work/minitest/test.py", line 74
                                            # Minitest
        
        ppl is another print function which will print the file path and line
        NO. It almost like pl except print value in another new line. Notice, it
        will print new line firstly. code:
        
        ::
        
            value = "Minitest"
            value.ppl()                     #     
                                            #     File "/Users/Colin/work/minitest/test.py", line 76
                                            # value :
                                            # 'Minitest'
                                            
            value.ppl("It is a value:")     #     
                                            #     File "/Users/Colin/work/minitest/test.py", line 77
                                            #  It is a value:
                                            # 'Minitest'
                                            
            value.ppl(auto_get_title=False) #     
                                            #     File "/Users/Colin/work/minitest/test.py", line 78
                                            # 'Minitest'
        
        length and size will invoke len function for the caller's object. code:
        
        ::
        
            [1,2].length()                  # 2, just like len([1,2])
            (1,2).size()                    # 2, just like len((1,2))
        
        inject\_customized\_must\_method or inject function will inject the
        function which you customize. Why do I make this function? Since in many
        case I will use numpy array. When it comes to comparing two numpy array,
        I have to use:
        
        ::
        
            import numpy
            numpy.array([1]).must_equal(numpy.array([1.0]), numpy.allclose)
        
        For being convient, I use inject\_customized\_must\_method or inject
        function like:
        
        ::
        
            import numpy
            inject(numpy.allclose, 'must_close')
            numpy.array([1]).must_close(numpy.array([1.0]))
        
        flag\_test will print a message 'This place have codes for test!' with
        the file path, file NO. code: flag\_test()
        
        ::
        
            # print like:
                File "/Users/colin/work/minitest/test.py", line 97, in <module>:
            This place have codes for test!    
        
            flag_test("for test")  # add a title
        
            # print like:
                File "/Users/colin/work/minitest/test.py", line 101, in <module>:
            for test: This place have codes for test!    
        
        
Platform: UNKNOWN
