view src/testdir/test_random.vim @ 33225:52b121d4feb5 v9.0.1887

patch 9.0.1887: Vim9: class members are accessible via object Commit: https://github.com/vim/vim/commit/23c92d93c1b877edf18881b715ad51ec26386c2e Author: Yegappan Lakshmanan <yegappan@yahoo.com> Date: Sat Sep 9 11:33:29 2023 +0200 patch 9.0.1887: Vim9: class members are accessible via object Problem: Vim9: class members are accessible via object Solution: Disable class member variable access using an object Class methods can be accessed only using the class name and cannot be accessed using an object. To be consistent with this, do the same for class member variables also. They can be accessed only using the class name and not using an object. closes: #13057 Signed-off-by: Christian Brabandt <cb@256bit.org> Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
author Christian Brabandt <cb@256bit.org>
date Sat, 09 Sep 2023 11:45:06 +0200
parents a267e07ded3b
children
line wrap: on
line source

" Tests for srand() and rand()

source check.vim
source shared.vim

func Test_Rand()
  let r = srand(123456789)
  call assert_equal([1573771921, 319883699, 2742014374, 1324369493], r)
  call assert_equal(4284103975, rand(r))
  call assert_equal(1001954530, rand(r))
  call assert_equal(2701803082, rand(r))
  call assert_equal(2658065534, rand(r))
  call assert_equal(3104308804, rand(r))

  let s = srand()
  " using /dev/urandom or used time, result is different each time
  call assert_notequal(s, srand())

  call test_srand_seed(123456789)
  call assert_equal(4284103975, rand())
  call assert_equal(1001954530, rand())
  call test_srand_seed()

  call assert_fails('echo srand(1.2)', 'E805:')
  call assert_fails('echo srand([1])', 'E745:')
  call assert_fails('echo rand("burp")', 'E475:')
  call assert_fails('echo rand([1, 2, 3])', 'E730:')
  call assert_fails('echo rand([[1], 2, 3, 4])', 'E730:')
  call assert_fails('echo rand([1, [2], 3, 4])', 'E730:')
  call assert_fails('echo rand([1, 2, [3], 4])', 'E730:')
  call assert_fails('echo rand([1, 2, 3, [4]])', 'E730:')
endfunc

func Test_issue_5587()
  call rand()
  call garbagecollect()
  call rand()
endfunc

func Test_srand()
  CheckNotGui

  let cmd = GetVimCommand() .. ' -V -es -c "echo rand()" -c qa!'
  let bad = 0
  for _ in range(10)
    echo cmd
    let result1 = system(cmd)
    let result2 = system(cmd)
    if result1 ==# result2
      let bad += 1
    endif
  endfor
  call assert_inrange(0, 4, bad)
endfunc

" vim: shiftwidth=2 sts=2 expandtab