Include: include/setup.vader

Execute (neomake#compat#json_decode):
  AssertEqual neomake#compat#json_decode('{}'), {}

  let json = '{"dict":{"children":[],"null":null,"true":true,"false":false}}'

  AssertEqual neomake#compat#json_decode(json), {
  \ 'dict': {
  \   'false': g:neomake#compat#json_false,
  \   'true': g:neomake#compat#json_true,
  \   'children': [],
  \   'null': g:neomake#compat#json_null}}

  if exists('v:null')
    AssertEqual g:neomake#compat#json_null, v:null
    AssertEqual g:neomake#compat#json_true, v:true
    AssertEqual g:neomake#compat#json_false, v:false
  else
    AssertEqual type(g:neomake#compat#json_null), type([])
    AssertEqual type(g:neomake#compat#json_null[0]), type(function('tr'))
    AssertEqual g:neomake#compat#json_true, 1
    AssertEqual g:neomake#compat#json_false, 0
  endif

Execute (neomake#compat#json_null cannot be changed):
  AssertThrows let g:neomake#compat#json_null = 'changed'
  AssertEqual g:vader_exception, 'Vim(let):E741: Value is locked: g:neomake#compat#json_null'