aboutsummaryrefslogtreecommitdiff
path: root/tests/vimscript/version.vim
blob: 971801186c5aef1b7ddc74693e2423b2a34c42c9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
" To run the tests in this script, first add the vim-prettier plugin and let
" Vim load it, then uncomment the last line in this script, and source this
" file in Vim with the command
" ":source <file-path>" where <file-path> is the path to this file, e.g.
" ":source %".

function! s:Test_version_comparison_greater_case() abort
  echomsg 'Testing version comparison, greater case.'

  let l:ver_1 = '2.7.3'
  let l:ver_2 = '0.9.8'
  let l:value = prettier#utils#version#Compare_versions(l:ver_1, l:ver_2)
  let l:expected = 1
  return assert_equal(
          \ l:value,
          \ l:expected,
          \ 'Expected ' . l:expected . ' but received ' . l:value
          \ . ' instead.')
endfunction

function! s:Test_version_comparison_lesser_case() abort
  echomsg 'Testing version comparison, lesser case.'

  let l:ver_1 = '3.9.5'
  let l:ver_2 = '10.5.2'
  let l:value = prettier#utils#version#Compare_versions(l:ver_1, l:ver_2)
  let l:expected = -1
  return assert_equal(
          \ l:value,
          \ l:expected,
          \ 'Expected ' . l:expected . ' but received ' . l:value
          \ . ' instead.')
endfunction

function! s:Test_version_comparison_equal_case() abort
  echomsg 'Testing version comparison, equal case.'

  let l:ver_1 = '8.2.4'
  let l:ver_2 = '8.2.4'
  let l:value = prettier#utils#version#Compare_versions(l:ver_1, l:ver_2)
  let l:expected = 0
  return assert_equal(
          \ l:value,
          \ l:expected,
          \ 'Expected ' . l:expected . ' but received ' . l:value
          \ . ' instead.')
endfunction

function! s:Test_is_greater_or_equal_version_greater_case() abort
  echomsg 'Testing function that checks if is lesser version, greater case.'

  let l:ver_1 = '3.8.1'
  let l:ver_2 = '0.2.9'
  let l:value = prettier#utils#version#Is_greater_or_equal_version(
          \ l:ver_1, l:ver_2)
  let l:expected = 1
  return assert_equal(
          \ l:value,
          \ l:expected,
          \ 'Expected ' . l:expected . ' but received ' . l:value
          \ . ' instead.')
endfunction

function! s:Test_is_greater_or_equal_version_lesser_case() abort
  echomsg 'Testing function that checks if is lesser version, lesser case.'

  let l:ver_1 = '7.2.8'
  let l:ver_2 = '15.1.6'
  let l:value = prettier#utils#version#Is_greater_or_equal_version(
          \ l:ver_1, l:ver_2)
  let l:expected = 0
  return assert_equal(
          \ l:value,
          \ l:expected,
          \ 'Expected ' . l:expected . ' but received ' . l:value
          \ . ' instead.')
endfunction

function! s:Test_is_greater_or_equal_version_equal_case() abort
  echomsg 'Testing function that checks if is lesser version, lesser case.'

  let l:ver_1 = '4.12.185'
  let l:ver_2 = '4.12.185'
  let l:value = prettier#utils#version#Is_greater_or_equal_version(
          \ l:ver_1, l:ver_2)
  let l:expected = 1
  return assert_equal(
          \ l:value,
          \ l:expected,
          \ 'Expected ' . l:expected . ' but received ' . l:value
          \ . ' instead.')
endfunction

function! s:Run_tests() abort
  let v:errors = []

  let l:test_functions = [
          \ function('s:Test_version_comparison_greater_case'),
          \ function('s:Test_version_comparison_lesser_case'),
          \ function('s:Test_version_comparison_equal_case'),
          \ function('s:Test_is_greater_or_equal_version_greater_case'),
          \ function('s:Test_is_greater_or_equal_version_lesser_case'),
          \ function('s:Test_is_greater_or_equal_version_equal_case')]

  let l:results_as_returned = l:test_functions->copy()->map('v:val()')
  let l:results_as_text = l:results_as_returned
          \ ->copy()
          \ ->map('v:key + 1 .. '': '' .. (v:val ? "failed" : "passed")')

  let l:has_failed_test = v:errors->len() > 0
          \ || l:results_as_returned->index(1) >= 0
  if l:has_failed_test
    echoerr 'The tests failed.'
    echoerr 'Results:'
    echoerr l:results_as_text->join('; ')
    echoerr 'Errors:'
    echoerr v:errors->join('; ')
  else
    echomsg 'The tests were completed successfully.'
    echomsg 'Results:'
    echomsg l:results_as_text->join('; ')
  endif
endfunction

" Uncomment the next line to run the tests.
" call s:Run_tests()