neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

065_float_and_logic_operators_spec.lua (3683B)


      1 -- Test for floating point and logical operators.
      2 
      3 local n = require('test.functional.testnvim')()
      4 
      5 local insert, source = n.insert, n.source
      6 local clear, expect = n.clear, n.expect
      7 
      8 describe('floating point and logical operators', function()
      9  setup(clear)
     10 
     11  it('is working', function()
     12    insert([=[
     13      Results of test65:]=])
     14 
     15    source([[
     16      $put =printf('%f', 123.456)
     17      $put =printf('%e', 123.456)
     18      $put =printf('%g', 123.456)
     19      " Check we don't crash on division by zero.
     20      echo 1.0 / 0.0
     21      $put ='+='
     22      let v = 1.234
     23      let v += 6.543
     24      $put =printf('%g', v)
     25      let v = 1.234
     26      let v += 5
     27      $put =printf('%g', v)
     28      let a = 5
     29      let a += 3.333
     30      $put =string(a)
     31      $put ='=='
     32      let v = 1.234
     33      $put =v == 1.234
     34      $put =v == 1.2341
     35      $put ='add-subtract'
     36      $put =printf('%g', 4 + 1.234)
     37      $put =printf('%g', 1.234 - 8)
     38      $put ='mult-div'
     39      $put =printf('%g', 4 * 1.234)
     40      $put =printf('%g', 4.0 / 1234)
     41      $put ='dict'
     42      $put =string({'x': 1.234, 'y': -2.0e20})
     43      $put ='list'
     44      $put =string([-123.4, 2.0e-20])
     45      $put ='abs'
     46      $put =printf('%d', abs(1456))
     47      $put =printf('%d', abs(-4))
     48      silent! $put =printf('%d', abs([1, 2, 3]))
     49      $put =printf('%g', abs(14.56))
     50      $put =printf('%g', abs(-54.32))
     51      $put ='ceil'
     52      $put =printf('%g', ceil(1.456))
     53      $put =printf('%g', ceil(-5.456))
     54      $put =printf('%g', ceil(-4.000))
     55      $put ='floor'
     56      $put =printf('%g', floor(1.856))
     57      $put =printf('%g', floor(-5.456))
     58      $put =printf('%g', floor(4.0))
     59      $put ='log10'
     60      $put =printf('%g', log10(1000))
     61      $put =printf('%g', log10(0.01000))
     62      $put ='pow'
     63      $put =printf('%g', pow(3, 3.0))
     64      $put =printf('%g', pow(2, 16))
     65      $put ='round'
     66      $put =printf('%g', round(0.456))
     67      $put =printf('%g', round(4.5))
     68      $put =printf('%g', round(-4.50))
     69      $put ='sqrt'
     70      $put =printf('%g', sqrt(100))
     71      echo sqrt(-4.01)
     72      $put ='str2float'
     73      $put =printf('%g', str2float('1e40'))
     74      $put ='trunc'
     75      $put =printf('%g', trunc(1.456))
     76      $put =printf('%g', trunc(-5.456))
     77      $put =printf('%g', trunc(4.000))
     78      $put ='float2nr'
     79      $put =float2nr(123.456)
     80      $put =float2nr(-123.456)
     81      $put ='AND'
     82      $put =and(127, 127)
     83      $put =and(127, 16)
     84      $put =and(127, 128)
     85      $put ='OR'
     86      $put =or(16, 7)
     87      $put =or(8, 7)
     88      $put =or(0, 123)
     89      $put ='XOR'
     90      $put =xor(127, 127)
     91      $put =xor(127, 16)
     92      $put =xor(127, 128)
     93      $put ='invert'
     94      $put =and(invert(127), 65535)
     95      $put =and(invert(16), 65535)
     96      $put =and(invert(128), 65535)
     97      silent! $put =invert(1.0)
     98    ]])
     99 
    100    -- Assert buffer contents.
    101    expect([=[
    102      Results of test65:
    103      123.456000
    104      1.234560e+02
    105      123.456
    106      +=
    107      7.777
    108      6.234
    109      8.333
    110      ==
    111      1
    112      0
    113      add-subtract
    114      5.234
    115      -6.766
    116      mult-div
    117      4.936
    118      0.003241
    119      dict
    120      {'x': 1.234, 'y': -2.0e20}
    121      list
    122      [-123.4, 2.0e-20]
    123      abs
    124      1456
    125      4
    126      -1
    127      14.56
    128      54.32
    129      ceil
    130      2.0
    131      -5.0
    132      -4.0
    133      floor
    134      1.0
    135      -6.0
    136      4.0
    137      log10
    138      3.0
    139      -2.0
    140      pow
    141      27.0
    142      65536.0
    143      round
    144      0.0
    145      5.0
    146      -5.0
    147      sqrt
    148      10.0
    149      str2float
    150      1.0e40
    151      trunc
    152      1.0
    153      -5.0
    154      4.0
    155      float2nr
    156      123
    157      -123
    158      AND
    159      127
    160      16
    161      0
    162      OR
    163      23
    164      15
    165      123
    166      XOR
    167      0
    168      111
    169      255
    170      invert
    171      65408
    172      65519
    173      65407
    174      0]=])
    175  end)
    176 end)