dotar/vim/autoload/railmoon/unit_test.vim
2011-11-17 16:00:49 -06:00

70 lines
1.7 KiB
VimL
Executable File

" Author: Mykola Golubyev ( Nickolay Golubev )
" Email: golubev.nikolay@gmail.com
" Site: www.railmoon.com
" Module: railmoon#unit_test
" Purpose: provide unit test object
" -
" [ public library function ]
" Name: railmoon#unit_test#create
" Purpose: create "unit test" object
" [ parameters ]
" name name of test
" -
function! railmoon#unit_test#create(name)
let new_object = deepcopy(s:unit_test)
let new_object.name = a:name
let new_object.number_of_test = 0
return new_object
endfunction
" -
" [ internal usage ]
" Name: unit_test
" Purpose: object "unit test"
" -
let s:unit_test = {}
" -
" [ object method ]
" Object: unit_test
" Name: assert_equal
" Purpose: compare two values
" -
function! s:unit_test.assert_equal(first, second)
if !( a:second == a:first )
throw string(a:first).' != '.string(a:second)
endif
let self.number_of_test += 1
endfunction
" -
" [ object method ]
" Object: unit_test
" Name: run
" Purpose: run all unit tests from suit
" -
function! s:unit_test.run()
let test_name = ''
try
for key in keys(self)
if key =~ '^test_'
let self.number_of_test = 1
let call_command = 'call self.'.key.'()'
let test_name = substitute(key, '^test_\(.*\)', '\1', '')
exec call_command
endif
endfor
catch /.*/
echohl Identifier | echo 'Suit:'.self.name | echohl None
echohl Identifier | echo 'Test:'.test_name | echohl None
echohl Identifier | echo 'Number:'.self.number_of_test | echohl None
echohl Statement | echo v:exception | echohl None
echohl Statement | echo v:throwpoint | echohl None
endtry
endfunction