github.com/solo-io/cue@v0.4.7/cue/testdata/basicrewrite/002_arithmetic.txtar (about)

     1  # DO NOT EDIT; generated by go run testdata/gen.go
     2  #
     3  #name: arithmetic
     4  #evalPartial
     5  -- in.cue --
     6  i1: 1 & int
     7  i2: 2 & int
     8  
     9  sum:     -1 + +2     // 1
    10  div1:    2.0 / 3 * 6 // 4
    11  div2:    2 / 3 * 6   // 4
    12  div3:    1.00 / 1.00
    13  divZero: 1.0 / 0
    14  div00:   0 / 0
    15  b:       1 != 4
    16  add:     div1 + 1.0
    17  
    18  idiv00: 0 div 0
    19  imod00: 0 mod 0
    20  iquo00: 0 quo 0
    21  irem00: 0 rem 0
    22  
    23  v1: 1.0T / 2.0
    24  v2: 2.0 == 2
    25  v3: 2.0 / 3.0
    26  v5: i1 div i2
    27  
    28  e0: 2 + "a"
    29  // these are now all alloweed
    30  // e1: 2.0 / i1
    31  // e2: i1 / 2.0
    32  // e3: 3.0 % i2
    33  // e4: i1 % 2.0
    34  e5: 1.0 div 2
    35  e6: 2 rem 2.0
    36  e7: 2 quo 2.0
    37  e8: 1.0 mod 1
    38  -- out/def --
    39  i1:      1
    40  i2:      2
    41  sum:     1
    42  div1:    4.00000000000000000000000
    43  div2:    4.00000000000000000000000
    44  div3:    1.
    45  divZero: _|_ // division by zero
    46  div00:   _|_ // division undefined
    47  b:       true
    48  add:     5.00000000000000000000000
    49  idiv00:  _|_ // division by zero
    50  imod00:  _|_ // division by zero
    51  iquo00:  _|_ // division by zero
    52  irem00:  _|_ // division by zero
    53  v1:      5.0000000000e+11
    54  v2:      true
    55  v3:      0.666666666666666666666667
    56  v5:      0
    57  e0:      _|_ // invalid operation 2 + "a" (mismatched types int and string)
    58  // these are now all alloweed
    59  // e1: 2.0 / i1
    60  // e2: i1 / 2.0
    61  // e3: 3.0 % i2
    62  // e4: i1 % 2.0
    63  e5: _|_ // invalid operation 1.0 div 2 (mismatched types float and int)
    64  e6: _|_ // invalid operation 2 rem 2.0 (mismatched types int and float)
    65  e7: _|_ // invalid operation 2 quo 2.0 (mismatched types int and float)
    66  e8: _|_ // invalid operation 1.0 mod 1 (mismatched types float and int)
    67  -- out/legacy-debug --
    68  <0>{i1: 1, i2: 2, sum: 1, div1: 4.00000000000000000000000, div2: 4.00000000000000000000000, div3: 1., divZero: _|_((1.0 / 0):division by zero), div00: _|_((0 / 0):division undefined), b: true, add: 5.00000000000000000000000, idiv00: _|_((0 div 0):division by zero), imod00: _|_((0 mod 0):division by zero), iquo00: _|_((0 quo 0):division by zero), irem00: _|_((0 rem 0):division by zero), v1: 5.0000000000e+11, v2: true, v3: 0.666666666666666666666667, v5: 0, e0: _|_((2 + "a"):invalid operation 2 + "a" (mismatched types int and string)), e5: _|_((1.0 div 2):invalid operation 1.0 div 2 (mismatched types float and int)), e6: _|_((2 rem 2.0):invalid operation 2 rem 2.0 (mismatched types int and float)), e7: _|_((2 quo 2.0):invalid operation 2 quo 2.0 (mismatched types int and float)), e8: _|_((1.0 mod 1):invalid operation 1.0 mod 1 (mismatched types float and int))}
    69  -- out/compile --
    70  --- in.cue
    71  {
    72    i1: (1 & int)
    73    i2: (2 & int)
    74    sum: (-1 + +2)
    75    div1: ((2.0 / 3) * 6)
    76    div2: ((2 / 3) * 6)
    77    div3: (1.00 / 1.00)
    78    divZero: (1.0 / 0)
    79    div00: (0 / 0)
    80    b: (1 != 4)
    81    add: (〈0;div1〉 + 1.0)
    82    idiv00: (0 div 0)
    83    imod00: (0 mod 0)
    84    iquo00: (0 quo 0)
    85    irem00: (0 rem 0)
    86    v1: (1000000000000 / 2.0)
    87    v2: (2.0 == 2)
    88    v3: (2.0 / 3.0)
    89    v5: (〈0;i1〉 div 〈0;i2〉)
    90    e0: (2 + "a")
    91    e5: (1.0 div 2)
    92    e6: (2 rem 2.0)
    93    e7: (2 quo 2.0)
    94    e8: (1.0 mod 1)
    95  }
    96  -- out/eval --
    97  Errors:
    98  divZero: failed arithmetic: division by zero:
    99      ./in.cue:8:10
   100  div00: failed arithmetic: division undefined:
   101      ./in.cue:9:10
   102  idiv00: division by zero:
   103      ./in.cue:13:9
   104  imod00: division by zero:
   105      ./in.cue:14:9
   106  iquo00: division by zero:
   107      ./in.cue:15:9
   108  irem00: division by zero:
   109      ./in.cue:16:9
   110  e0: invalid operands 2 and "a" to '+' (type int and string):
   111      ./in.cue:23:5
   112      ./in.cue:23:9
   113  e5: invalid operands 1.0 and 2 to 'div' (type float and int):
   114      ./in.cue:29:5
   115      ./in.cue:29:13
   116  e6: invalid operands 2 and 2.0 to 'rem' (type int and float):
   117      ./in.cue:30:5
   118      ./in.cue:30:11
   119  e7: invalid operands 2 and 2.0 to 'quo' (type int and float):
   120      ./in.cue:31:5
   121      ./in.cue:31:11
   122  e8: invalid operands 1.0 and 1 to 'mod' (type float and int):
   123      ./in.cue:32:5
   124      ./in.cue:32:13
   125  
   126  Result:
   127  (_|_){
   128    // [eval]
   129    i1: (int){ 1 }
   130    i2: (int){ 2 }
   131    sum: (int){ 1 }
   132    div1: (float){ 4.00000000000000000000000 }
   133    div2: (float){ 4.00000000000000000000000 }
   134    div3: (float){ 1 }
   135    divZero: (_|_){
   136      // [eval] divZero: failed arithmetic: division by zero:
   137      //     ./in.cue:8:10
   138    }
   139    div00: (_|_){
   140      // [eval] div00: failed arithmetic: division undefined:
   141      //     ./in.cue:9:10
   142    }
   143    b: (bool){ true }
   144    add: (float){ 5.00000000000000000000000 }
   145    idiv00: (_|_){
   146      // [eval] idiv00: division by zero:
   147      //     ./in.cue:13:9
   148    }
   149    imod00: (_|_){
   150      // [eval] imod00: division by zero:
   151      //     ./in.cue:14:9
   152    }
   153    iquo00: (_|_){
   154      // [eval] iquo00: division by zero:
   155      //     ./in.cue:15:9
   156    }
   157    irem00: (_|_){
   158      // [eval] irem00: division by zero:
   159      //     ./in.cue:16:9
   160    }
   161    v1: (float){ 5.0000000000E+11 }
   162    v2: (bool){ true }
   163    v3: (float){ 0.666666666666666666666667 }
   164    v5: (int){ 0 }
   165    e0: (_|_){
   166      // [eval] e0: invalid operands 2 and "a" to '+' (type int and string):
   167      //     ./in.cue:23:5
   168      //     ./in.cue:23:9
   169    }
   170    e5: (_|_){
   171      // [eval] e5: invalid operands 1.0 and 2 to 'div' (type float and int):
   172      //     ./in.cue:29:5
   173      //     ./in.cue:29:13
   174    }
   175    e6: (_|_){
   176      // [eval] e6: invalid operands 2 and 2.0 to 'rem' (type int and float):
   177      //     ./in.cue:30:5
   178      //     ./in.cue:30:11
   179    }
   180    e7: (_|_){
   181      // [eval] e7: invalid operands 2 and 2.0 to 'quo' (type int and float):
   182      //     ./in.cue:31:5
   183      //     ./in.cue:31:11
   184    }
   185    e8: (_|_){
   186      // [eval] e8: invalid operands 1.0 and 1 to 'mod' (type float and int):
   187      //     ./in.cue:32:5
   188      //     ./in.cue:32:13
   189    }
   190  }