diff options
Diffstat (limited to 'src/testdir/test_expr.vim')
-rw-r--r-- | src/testdir/test_expr.vim | 244 |
1 files changed, 115 insertions, 129 deletions
diff --git a/src/testdir/test_expr.vim b/src/testdir/test_expr.vim index 3cd2a0d0d..8e2345d7f 100644 --- a/src/testdir/test_expr.vim +++ b/src/testdir/test_expr.vim @@ -77,9 +77,7 @@ func Test_op_falsy() call assert_equal(0z00, 0z00 ?? 456) call assert_equal([1], [1] ?? 456) call assert_equal({'one': 1}, {'one': 1} ?? 456) - if has('float') - call assert_equal(0.1, 0.1 ?? 456) - endif + call assert_equal(0.1, 0.1 ?? 456) call assert_equal(456, v:false ?? 456) call assert_equal(456, 0 ?? 456) @@ -87,9 +85,7 @@ func Test_op_falsy() call assert_equal(456, 0z ?? 456) call assert_equal(456, [] ?? 456) call assert_equal(456, {} ?? 456) - if has('float') - call assert_equal(456, 0.0 ?? 456) - endif + call assert_equal(456, 0.0 ?? 456) END call v9.CheckLegacyAndVim9Success(lines) endfunc @@ -200,10 +196,8 @@ func Test_compare_with_null() call assert_false(s:value == v:null) let s:value = 0 call assert_true(s:value == v:null) - if has('float') - let s:value = 0.0 - call assert_true(s:value == v:null) - endif + let s:value = 0.0 + call assert_true(s:value == v:null) let s:value = '' call assert_false(s:value == v:null) let s:value = 0z @@ -467,116 +461,114 @@ func Test_printf_misc() endfunc func Test_printf_float() - if has('float') - let lines =<< trim END - call assert_equal('1.000000', printf('%f', 1)) - call assert_equal('1.230000', printf('%f', 1.23)) - call assert_equal('1.230000', printf('%F', 1.23)) - call assert_equal('9999999.9', printf('%g', 9999999.9)) - call assert_equal('9999999.9', printf('%G', 9999999.9)) - call assert_equal('1.00000001e7', printf('%.8g', 10000000.1)) - call assert_equal('1.00000001E7', printf('%.8G', 10000000.1)) - call assert_equal('1.230000e+00', printf('%e', 1.23)) - call assert_equal('1.230000E+00', printf('%E', 1.23)) - call assert_equal('1.200000e-02', printf('%e', 0.012)) - call assert_equal('-1.200000e-02', printf('%e', -0.012)) - call assert_equal('0.33', printf('%.2f', 1.0 / 3.0)) - call assert_equal(' 0.33', printf('%6.2f', 1.0 / 3.0)) - call assert_equal(' -0.33', printf('%6.2f', -1.0 / 3.0)) - call assert_equal('000.33', printf('%06.2f', 1.0 / 3.0)) - call assert_equal('-00.33', printf('%06.2f', -1.0 / 3.0)) - call assert_equal('-00.33', printf('%+06.2f', -1.0 / 3.0)) - call assert_equal('+00.33', printf('%+06.2f', 1.0 / 3.0)) - call assert_equal(' 00.33', printf('% 06.2f', 1.0 / 3.0)) - call assert_equal('000.33', printf('%06.2g', 1.0 / 3.0)) - call assert_equal('-00.33', printf('%06.2g', -1.0 / 3.0)) - call assert_equal('0.33', printf('%3.2f', 1.0 / 3.0)) - call assert_equal('003.33e-01', printf('%010.2e', 1.0 / 3.0)) - call assert_equal(' 03.33e-01', printf('% 010.2e', 1.0 / 3.0)) - call assert_equal('+03.33e-01', printf('%+010.2e', 1.0 / 3.0)) - call assert_equal('-03.33e-01', printf('%010.2e', -1.0 / 3.0)) - - #" When precision is 0, the dot should be omitted. - call assert_equal(' 2', printf('%3.f', 7.0 / 3.0)) - call assert_equal(' 2', printf('%3.g', 7.0 / 3.0)) - call assert_equal(' 2e+00', printf('%7.e', 7.0 / 3.0)) - - #" Float zero can be signed. - call assert_equal('+0.000000', printf('%+f', 0.0)) - call assert_equal('0.000000', printf('%f', 1.0 / (1.0 / 0.0))) - call assert_equal('-0.000000', printf('%f', 1.0 / (-1.0 / 0.0))) - call assert_equal('0.0', printf('%s', 1.0 / (1.0 / 0.0))) - call assert_equal('-0.0', printf('%s', 1.0 / (-1.0 / 0.0))) - call assert_equal('0.0', printf('%S', 1.0 / (1.0 / 0.0))) - call assert_equal('-0.0', printf('%S', 1.0 / (-1.0 / 0.0))) - - #" Float infinity can be signed. - call assert_equal('inf', printf('%f', 1.0 / 0.0)) - call assert_equal('-inf', printf('%f', -1.0 / 0.0)) - call assert_equal('inf', printf('%g', 1.0 / 0.0)) - call assert_equal('-inf', printf('%g', -1.0 / 0.0)) - call assert_equal('inf', printf('%e', 1.0 / 0.0)) - call assert_equal('-inf', printf('%e', -1.0 / 0.0)) - call assert_equal('INF', printf('%F', 1.0 / 0.0)) - call assert_equal('-INF', printf('%F', -1.0 / 0.0)) - call assert_equal('INF', printf('%E', 1.0 / 0.0)) - call assert_equal('-INF', printf('%E', -1.0 / 0.0)) - call assert_equal('INF', printf('%E', 1.0 / 0.0)) - call assert_equal('-INF', printf('%G', -1.0 / 0.0)) - call assert_equal('+inf', printf('%+f', 1.0 / 0.0)) - call assert_equal('-inf', printf('%+f', -1.0 / 0.0)) - call assert_equal(' inf', printf('% f', 1.0 / 0.0)) - call assert_equal(' inf', printf('%6f', 1.0 / 0.0)) - call assert_equal(' -inf', printf('%6f', -1.0 / 0.0)) - call assert_equal(' inf', printf('%6g', 1.0 / 0.0)) - call assert_equal(' -inf', printf('%6g', -1.0 / 0.0)) - call assert_equal(' +inf', printf('%+6f', 1.0 / 0.0)) - call assert_equal(' inf', printf('% 6f', 1.0 / 0.0)) - call assert_equal(' +inf', printf('%+06f', 1.0 / 0.0)) - call assert_equal('inf ', printf('%-6f', 1.0 / 0.0)) - call assert_equal('-inf ', printf('%-6f', -1.0 / 0.0)) - call assert_equal('+inf ', printf('%-+6f', 1.0 / 0.0)) - call assert_equal(' inf ', printf('%- 6f', 1.0 / 0.0)) - call assert_equal('-INF ', printf('%-6F', -1.0 / 0.0)) - call assert_equal('+INF ', printf('%-+6F', 1.0 / 0.0)) - call assert_equal(' INF ', printf('%- 6F', 1.0 / 0.0)) - call assert_equal('INF ', printf('%-6G', 1.0 / 0.0)) - call assert_equal('-INF ', printf('%-6G', -1.0 / 0.0)) - call assert_equal('INF ', printf('%-6E', 1.0 / 0.0)) - call assert_equal('-INF ', printf('%-6E', -1.0 / 0.0)) - call assert_equal('inf', printf('%s', 1.0 / 0.0)) - call assert_equal('-inf', printf('%s', -1.0 / 0.0)) - - #" Test special case where max precision is truncated at 340. - call assert_equal('1.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', printf('%.330f', 1.0)) - call assert_equal('1.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', printf('%.340f', 1.0)) - call assert_equal('1.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', printf('%.350f', 1.0)) - - #" Float nan (not a number) has no sign. - call assert_equal('nan', printf('%f', sqrt(-1.0))) - call assert_equal('nan', printf('%f', 0.0 / 0.0)) - call assert_equal('nan', printf('%f', -0.0 / 0.0)) - call assert_equal('nan', printf('%g', 0.0 / 0.0)) - call assert_equal('nan', printf('%e', 0.0 / 0.0)) - call assert_equal('NAN', printf('%F', 0.0 / 0.0)) - call assert_equal('NAN', printf('%G', 0.0 / 0.0)) - call assert_equal('NAN', printf('%E', 0.0 / 0.0)) - call assert_equal('NAN', printf('%F', -0.0 / 0.0)) - call assert_equal('NAN', printf('%G', -0.0 / 0.0)) - call assert_equal('NAN', printf('%E', -0.0 / 0.0)) - call assert_equal(' nan', printf('%6f', 0.0 / 0.0)) - call assert_equal(' nan', printf('%06f', 0.0 / 0.0)) - call assert_equal('nan ', printf('%-6f', 0.0 / 0.0)) - call assert_equal('nan ', printf('%- 6f', 0.0 / 0.0)) - call assert_equal('nan', printf('%s', 0.0 / 0.0)) - call assert_equal('nan', printf('%s', -0.0 / 0.0)) - call assert_equal('nan', printf('%S', 0.0 / 0.0)) - call assert_equal('nan', printf('%S', -0.0 / 0.0)) - END - call v9.CheckLegacyAndVim9Success(lines) - - call v9.CheckLegacyAndVim9Failure(['echo printf("%f", "a")'], 'E807:') - endif + let lines =<< trim END + call assert_equal('1.000000', printf('%f', 1)) + call assert_equal('1.230000', printf('%f', 1.23)) + call assert_equal('1.230000', printf('%F', 1.23)) + call assert_equal('9999999.9', printf('%g', 9999999.9)) + call assert_equal('9999999.9', printf('%G', 9999999.9)) + call assert_equal('1.00000001e7', printf('%.8g', 10000000.1)) + call assert_equal('1.00000001E7', printf('%.8G', 10000000.1)) + call assert_equal('1.230000e+00', printf('%e', 1.23)) + call assert_equal('1.230000E+00', printf('%E', 1.23)) + call assert_equal('1.200000e-02', printf('%e', 0.012)) + call assert_equal('-1.200000e-02', printf('%e', -0.012)) + call assert_equal('0.33', printf('%.2f', 1.0 / 3.0)) + call assert_equal(' 0.33', printf('%6.2f', 1.0 / 3.0)) + call assert_equal(' -0.33', printf('%6.2f', -1.0 / 3.0)) + call assert_equal('000.33', printf('%06.2f', 1.0 / 3.0)) + call assert_equal('-00.33', printf('%06.2f', -1.0 / 3.0)) + call assert_equal('-00.33', printf('%+06.2f', -1.0 / 3.0)) + call assert_equal('+00.33', printf('%+06.2f', 1.0 / 3.0)) + call assert_equal(' 00.33', printf('% 06.2f', 1.0 / 3.0)) + call assert_equal('000.33', printf('%06.2g', 1.0 / 3.0)) + call assert_equal('-00.33', printf('%06.2g', -1.0 / 3.0)) + call assert_equal('0.33', printf('%3.2f', 1.0 / 3.0)) + call assert_equal('003.33e-01', printf('%010.2e', 1.0 / 3.0)) + call assert_equal(' 03.33e-01', printf('% 010.2e', 1.0 / 3.0)) + call assert_equal('+03.33e-01', printf('%+010.2e', 1.0 / 3.0)) + call assert_equal('-03.33e-01', printf('%010.2e', -1.0 / 3.0)) + + #" When precision is 0, the dot should be omitted. + call assert_equal(' 2', printf('%3.f', 7.0 / 3.0)) + call assert_equal(' 2', printf('%3.g', 7.0 / 3.0)) + call assert_equal(' 2e+00', printf('%7.e', 7.0 / 3.0)) + + #" Float zero can be signed. + call assert_equal('+0.000000', printf('%+f', 0.0)) + call assert_equal('0.000000', printf('%f', 1.0 / (1.0 / 0.0))) + call assert_equal('-0.000000', printf('%f', 1.0 / (-1.0 / 0.0))) + call assert_equal('0.0', printf('%s', 1.0 / (1.0 / 0.0))) + call assert_equal('-0.0', printf('%s', 1.0 / (-1.0 / 0.0))) + call assert_equal('0.0', printf('%S', 1.0 / (1.0 / 0.0))) + call assert_equal('-0.0', printf('%S', 1.0 / (-1.0 / 0.0))) + + #" Float infinity can be signed. + call assert_equal('inf', printf('%f', 1.0 / 0.0)) + call assert_equal('-inf', printf('%f', -1.0 / 0.0)) + call assert_equal('inf', printf('%g', 1.0 / 0.0)) + call assert_equal('-inf', printf('%g', -1.0 / 0.0)) + call assert_equal('inf', printf('%e', 1.0 / 0.0)) + call assert_equal('-inf', printf('%e', -1.0 / 0.0)) + call assert_equal('INF', printf('%F', 1.0 / 0.0)) + call assert_equal('-INF', printf('%F', -1.0 / 0.0)) + call assert_equal('INF', printf('%E', 1.0 / 0.0)) + call assert_equal('-INF', printf('%E', -1.0 / 0.0)) + call assert_equal('INF', printf('%E', 1.0 / 0.0)) + call assert_equal('-INF', printf('%G', -1.0 / 0.0)) + call assert_equal('+inf', printf('%+f', 1.0 / 0.0)) + call assert_equal('-inf', printf('%+f', -1.0 / 0.0)) + call assert_equal(' inf', printf('% f', 1.0 / 0.0)) + call assert_equal(' inf', printf('%6f', 1.0 / 0.0)) + call assert_equal(' -inf', printf('%6f', -1.0 / 0.0)) + call assert_equal(' inf', printf('%6g', 1.0 / 0.0)) + call assert_equal(' -inf', printf('%6g', -1.0 / 0.0)) + call assert_equal(' +inf', printf('%+6f', 1.0 / 0.0)) + call assert_equal(' inf', printf('% 6f', 1.0 / 0.0)) + call assert_equal(' +inf', printf('%+06f', 1.0 / 0.0)) + call assert_equal('inf ', printf('%-6f', 1.0 / 0.0)) + call assert_equal('-inf ', printf('%-6f', -1.0 / 0.0)) + call assert_equal('+inf ', printf('%-+6f', 1.0 / 0.0)) + call assert_equal(' inf ', printf('%- 6f', 1.0 / 0.0)) + call assert_equal('-INF ', printf('%-6F', -1.0 / 0.0)) + call assert_equal('+INF ', printf('%-+6F', 1.0 / 0.0)) + call assert_equal(' INF ', printf('%- 6F', 1.0 / 0.0)) + call assert_equal('INF ', printf('%-6G', 1.0 / 0.0)) + call assert_equal('-INF ', printf('%-6G', -1.0 / 0.0)) + call assert_equal('INF ', printf('%-6E', 1.0 / 0.0)) + call assert_equal('-INF ', printf('%-6E', -1.0 / 0.0)) + call assert_equal('inf', printf('%s', 1.0 / 0.0)) + call assert_equal('-inf', printf('%s', -1.0 / 0.0)) + + #" Test special case where max precision is truncated at 340. + call assert_equal('1.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', printf('%.330f', 1.0)) + call assert_equal('1.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', printf('%.340f', 1.0)) + call assert_equal('1.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', printf('%.350f', 1.0)) + + #" Float nan (not a number) has no sign. + call assert_equal('nan', printf('%f', sqrt(-1.0))) + call assert_equal('nan', printf('%f', 0.0 / 0.0)) + call assert_equal('nan', printf('%f', -0.0 / 0.0)) + call assert_equal('nan', printf('%g', 0.0 / 0.0)) + call assert_equal('nan', printf('%e', 0.0 / 0.0)) + call assert_equal('NAN', printf('%F', 0.0 / 0.0)) + call assert_equal('NAN', printf('%G', 0.0 / 0.0)) + call assert_equal('NAN', printf('%E', 0.0 / 0.0)) + call assert_equal('NAN', printf('%F', -0.0 / 0.0)) + call assert_equal('NAN', printf('%G', -0.0 / 0.0)) + call assert_equal('NAN', printf('%E', -0.0 / 0.0)) + call assert_equal(' nan', printf('%6f', 0.0 / 0.0)) + call assert_equal(' nan', printf('%06f', 0.0 / 0.0)) + call assert_equal('nan ', printf('%-6f', 0.0 / 0.0)) + call assert_equal('nan ', printf('%- 6f', 0.0 / 0.0)) + call assert_equal('nan', printf('%s', 0.0 / 0.0)) + call assert_equal('nan', printf('%s', -0.0 / 0.0)) + call assert_equal('nan', printf('%S', 0.0 / 0.0)) + call assert_equal('nan', printf('%S', -0.0 / 0.0)) + END + call v9.CheckLegacyAndVim9Success(lines) + + call v9.CheckLegacyAndVim9Failure(['echo printf("%f", "a")'], 'E807:') endfunc func Test_printf_errors() @@ -585,10 +577,8 @@ func Test_printf_errors() call v9.CheckLegacyAndVim9Failure(['echo printf("%d", 1, 2)'], 'E767:') call v9.CheckLegacyAndVim9Failure(['echo printf("%*d", 1)'], 'E766:') call v9.CheckLegacyAndVim9Failure(['echo printf("%s")'], 'E766:') - if has('float') - call v9.CheckLegacyAndVim9Failure(['echo printf("%d", 1.2)'], 'E805:') - call v9.CheckLegacyAndVim9Failure(['echo printf("%f")'], 'E766:') - endif + call v9.CheckLegacyAndVim9Failure(['echo printf("%d", 1.2)'], 'E805:') + call v9.CheckLegacyAndVim9Failure(['echo printf("%f")'], 'E766:') endfunc func Test_printf_64bit() @@ -607,9 +597,7 @@ func Test_printf_spec_s() call assert_equal("abcdefgi", printf('%s', "abcdefgi")) #" float - if has('float') - call assert_equal("1.23", printf('%s', 1.23)) - endif + call assert_equal("1.23", printf('%s', 1.23)) #" list VAR lvalue = [1, 'two', ['three', 4]] @@ -878,8 +866,6 @@ endfunc " Test for float value comparison func Test_float_compare() - CheckFeature float - let lines =<< trim END call assert_true(1.2 == 1.2) call assert_true(1.0 != 1.2) |