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)