about summary refs log tree commit diff
path: root/Test/C01arith.ztst
blob: 28287745911328f09dd248627f3736181b609b3c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
# Tests corresponding to the texinfo node `Arithmetic Evaluation'

%test

  integer light there
  (( light = 42 )) &&
  let 'there = light' &&
  print $(( there ))
0:basic integer arithmetic
>42

  float light there
  integer rnd
  (( light = 3.1415 )) &&
  let 'there = light' &&
  print -- $(( rnd = there * 10000 ))
# save rounding problems by converting to integer
0:basic floating point arithmetic
>31415

  print $(( 0x10 + 0X01 + 2#1010 ))
0:base input
>27

  float light
  (( light = 4 ))
  print $light
  typeset -F light
  print $light
0:conversion to float
>4.000000000e+00
>4.0000000000

  integer i
  (( i = 32.5 ))
  print $i
0:conversion to int
>32

  integer i
  (( i = 4 - - 3 * 7 << 1 & 7 ^ 1 | 16 ** 2 ))
  print $i
0:precedence (arithmetic)
>1591

  print $(( 1 < 2 || 2 < 2 && 3 > 4 ))
0:precedence (logical)
>1

  print $(( 1 + 4 ? 3 + 2 ? 4 + 3 ? 5 + 6 ? 4 * 8 : 0 : 0 : 0 : 0 ))
0:precedence (ternary)
>32

  print $(( 3 ? 2 ))
1:parsing ternary (1)
?ZTST_execchunk:1: ':' expected

  print $(( 3 ? 2 : 1 : 4 ))
1:parsing ternary (2)
?ZTST_execchunk:1: ':' without '?'

  print $(( 0, 4 ? 3 : 1, 5 ))
0:comma operator
>5

  foo=000
  print $(( ##A + ##\C-a + #foo + $#foo ))
0:#, ## and $#
>117

  integer i
  (( i = 3 + 5 * 1.75 ))
  print $i
0:promotion to float
>11

  typeset x      &&
  (( x = 3.5 ))  &&
  print $x       &&
  (( x = 4 ))    &&
  print $x
0:use of scalars to store integers and floats
>3.5
>4

  (( newarray[unsetvar]++ ))
  (( newarray[unsetvar]++ ))
  print ${(t)newarray} ${#newarray} ${newarray[1]}
0:setting array elements in math context
>array 1 2

  print $(( 13 = 42 ))
1:bad lvalue
?ZTST_execchunk:1: lvalue required

  x=/bar
  (( x = 32 ))
  print $x
0:assigning to scalar which contains non-math string
>32