70 lines
1.7 KiB
VimL
Executable File
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
|
|
|