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 / sets.icn < prev    next >
Text File  |  2001-12-06  |  2KB  |  82 lines

  1. #SRC: JCON
  2.  
  3. # set test
  4.  
  5. procedure main()
  6.    local x, y, z
  7.  
  8.    wset("empty", x := set())
  9.    write(type(x))
  10.    write(image(?x))        # should fail
  11.    write(image(member(x)))    # should fail
  12.    wset("insert", insert(x))
  13.    write(image(?x))        # should write &null
  14.    write(image(member(x)))    # should write &null
  15.    write(image(member(x,3)))    # should write &null
  16.    wset("insert", insert(x))
  17.    wset("delete", delete(x))
  18.    wset("delete", delete(x))
  19.    write()
  20.  
  21.    wset("x", x := set([1,2,4]))
  22.    wset("y", y := set([1,2,5]))
  23.    wset("x ++ y", x ++ y)
  24.    wset("y ++ x", y ++ x)
  25.    wset("x -- y", x -- y)
  26.    wset("y -- x", y -- x)
  27.    wset("x ** y", x ** y)
  28.    wset("y ** x", y ** x)
  29.    write()
  30.  
  31.    wset("empty", x := set(&null))
  32.    wset("+ 1", insert(x, 1,4,7))    # only inserts 1
  33.    wset("+ 2", insert(x, 2))
  34.    wset("+ c", insert(x, "c"))
  35.    wset("- 3", delete(x, 3))        # deletes nothing
  36.    wset("- 1", delete(x, 1, 2))        # only deletes 1
  37.    wset("- 1", delete(x, 1))
  38.    wset("+ 2", insert(x, 2))
  39.    wset("+ 1", insert(x, 1))
  40.    wset("+ 7.0", insert(x, 7.0))
  41.    wset("+ 7.0", insert(x, 7.0))
  42.    wset("+ 'cs'", insert(x, 'cs'))
  43.    wset("+ 'cs'", insert(x, 'cs'))
  44.    wset("x =", x)
  45.    write()
  46.  
  47.    wset("3,a,4", y := set([3,"a",4]))
  48.    wset("y ++ x", y ++ x)
  49.    wset("y ** x", y ** x)
  50.    wset("y -- x", y -- x)
  51.    wset("x -- y", x -- y)
  52.    write()
  53.  
  54.    every insert(z := set(), !y)
  55.    wset("z from !y", z)
  56.  
  57.    write()
  58.    x := set([3,1,4,1,5,9,2,6,5,3,5])
  59.    y := copy(x)
  60.    delete(x, 4)
  61.    insert(x, 7)
  62.    insert(y, 0)
  63.    delete(y, 1)
  64.    wset("x", x)
  65.    wset("y", y)
  66. end
  67.  
  68.  
  69.  
  70. #  dump a set, assuming it contains nothing other than:
  71. #    &null, 0 - 9, 0.0 - 9.0, "", "a" - "e", '', 'cs'
  72.  
  73. procedure wset(label, S)
  74.    local x
  75.  
  76.    writes(right(label, 10), " :", right(*S, 2), " :")
  77.    every x := &null | (0 to 9) | 0.0+(0 to 9) | "" | !"abcde" | '' | 'cs' do
  78.       writes(" ", image(member(S, x)))
  79.    write()
  80.    return
  81. end
  82.