home *** CD-ROM | disk | FTP | other *** search
/ ftp.cs.arizona.edu / ftp.cs.arizona.edu.tar / ftp.cs.arizona.edu / icon / historic / v941.tgz / icon.v941src.tar / icon.v941src / tests / general / coerce.icn < prev    next >
Text File  |  2001-12-06  |  1KB  |  68 lines

  1. #SRC: JCON
  2.  
  3. #  check coercion of operator arguments
  4. #  uses string invocation of operations
  5.  
  6.  
  7. procedure main()
  8.    local i, r, c, s
  9.  
  10.    i := 1
  11.    r := 2
  12.    c := '3'
  13.    s := "9"
  14.  
  15.    every unop(!"+-*!/\\", i, r, c, s)
  16.  
  17.    write()
  18.    every binop(!"+-*/%^<=>" | "<<" | "==" | ">>" , i, r, c, s)
  19.    binop("[]", i, r, '12345', "67890")
  20.    every binop("++" | "--" | "**", 12, .23, 'x1', "x2")
  21.  
  22.    write()
  23.    every toby(2.3 | '20' | "2", 17.5 | '71' | "17", 3.1 | '30' | "3.2")
  24.  
  25.    write()
  26.    every writes("  ", ~~(1257787 | 3.14159 | "arizona") | "\n")
  27.    every writes("  ", ((123456 | 678.901 | 'tucson') ? move(5)) | "\n")
  28.  
  29. end
  30.  
  31.  
  32. procedure toby(i, j, k)
  33.    local n, s
  34.    s := image(i) || " to " || image(j) || " by " || image(k) || ":"
  35.    writes(left(s, 24))
  36.    every n := i to j by k do
  37.       writes(" ", n)
  38.    write()
  39. end
  40.  
  41.  
  42. procedure unop(o, i, r, c, s)
  43.    write(left(o || "x", 7),
  44.       right(o(i) | "---", 6),
  45.       right(o(r) | "---", 6),
  46.       right(o(c) | "---", 6),
  47.       right(o(s) | "---", 6))
  48.    return
  49. end
  50.  
  51.  
  52. procedure binop(o, i, r, c, s)
  53.    write("x ", left(o || " y", 5),
  54.       right(o(i, r) | "---", 6),
  55.       right(o(i, c) | "---", 6),
  56.       right(o(i, s) | "---", 6),
  57.       right(o(r, i) | "---", 6),
  58.       right(o(r, c) | "---", 6),
  59.       right(o(r, s) | "---", 6),
  60.       right(o(c, i) | "---", 6),
  61.       right(o(c, r) | "---", 6),
  62.       right(o(c, s) | "---", 6),
  63.       right(o(s, i) | "---", 6),
  64.       right(o(s, r) | "---", 6),
  65.       right(o(s, c) | "---", 6))
  66.    return
  67. end
  68.