Results for ysh-expr-arith.test.sh

statusosh
pass 21
FAIL 6
total27
caseoshdescription
0pass Minus operator is left associative
1pass Division operators are left associative
2pass Exponentiation is right associative
3FAIL Binary operators, with conversions from string
details
4pass Floating Point Division with /
5FAIL Operations That Convert to Integer: // % **
details
6pass Division by zero
7pass Unary Operations
8FAIL unary minus on strings
details
9FAIL unary ~ complement on strings
details
10pass unary ~ doesn't work on bool
11pass unary ~ doesn't work on float
12pass unary - applied to bool is not allowed
13pass Big float constants becomes inf and -inf, tiny become 0.0 and -0.0
14FAIL Int constants bigger than 64 bits
details
15pass Bit shift by negative number is not allowed
16FAIL 64-bit operations
details
17pass 64-bit integer doesn't overflow
18pass Integer literals
19pass Integer literals with underscores
20pass Exponentiation with **
21pass Float Division
22pass Integer Division (rounds toward zero)
23pass % operator is remainder
24pass Bitwise logical
25pass Shift operators
26pass multiline strings, list, tuple syntax for list, etc.
21 passed, 0 OK, 0 not implemented, 0 BUG, 6 failed, 0 timeouts, 0 cases skipped
6 failed under osh

Details on runs that didn't PASS

osh3 Binary operators, with conversions from string

[osh stdout] Expected ' i i 3\nsi i 3\n i si 3\n---\n f f 1.0\nsf f 1.0\n f sf 1.0\n---\n i f 6.0\nsi f 6.0\n i sf 6.0\n---\n f i 2.5\nsf i 2.5\n f si 2.5\n' Got ' i i 3\n'
[osh status] Expected 0, got 1

stdout:
 i  i 3
stderr:
  echo 'si  i' $['1' + 2]
               ^~
[ stdin ]:2: fatal: Integer too big: 1
osh5 Operations That Convert to Integer: // % **

[osh stdout] Expected '2\n1\n25\n_status 3\n_status 3\n', got ''
[osh status] Expected 0, got 1

stdout:
stderr: 
  var m = ' 5 ' // 2
                ^~
[ stdin ]:3: fatal: Integer too big:  5 
osh8 unary minus on strings

[osh stdout] Expected '-3\n-4\n-5.5\n', got '-3\n'
[osh status] Expected 3, got 1

stdout:
-3
stderr:
  json write (-'4')
  ^~~~
[ stdin ]:2: fatal: Integer too big: 4
osh9 unary ~ complement on strings

[osh stdout] Expected '-1\n-2\n-3\n', got '-1\n'
[osh status] Expected 3, got 1

stdout:
-1
stderr:
  json write (~'1')
              ^
[ stdin ]:2: fatal: Integer too big: 1
osh14 Int constants bigger than 64 bits

[osh stdout] Expected '(Int) 1111\ndec=0\ndec=2\n(Int) 3\nbin=0\nbin=2\n(Int) 63\noct=0\noct=2\n(Int) 255\nhex=0\nhex=2\n' Got '(Int) 1111\ndec=0\n(Int) 111122223333444455556666\ndec=0\n(Int) 3\nbin=0\n(Int) 4722366482869645213695\nbin=0\n(Int) 63\noct=0\n(Int) 674788526559709289910\noct=0\n(Int) 255\nhex=0\n(Int) 52818855605794001074506366975\nhex=0\n'

stdout:
(Int)   1111
dec=0
(Int)   111122223333444455556666
dec=0
(Int)   3
bin=0
(Int)   4722366482869645213695
bin=0
(Int)   63
oct=0
(Int)   674788526559709289910
oct=0
(Int)   255
hex=0
(Int)   52818855605794001074506366975
hex=0
stderr:
osh16 64-bit operations

[osh stdout] Expected 'i = 4294967296, s = 4294967296\nequal\n', got 'i = 4294967296, s = 4294967296\n'
[osh status] Expected 0, got 1

stdout:
i = 4294967296, s = 4294967296
stderr:
  if (s ~== i) {
        ^~~
[ stdin ]:8: fatal: Integer too big