  test_place = proc()
      % effects:  Tests the place_t cluster.

      % create
      %
      % Black Box
      %
      % this will be tested by creating a few objects of
      % type place_t and useing them in later tests
      %
      % test invalid place

      ok_flag : bool := true
      g3 : place_t := place_t$create(3,7)
       except when invalid:
          ok_flag := false
        end
      assert("create",ok_flag)

      ok_flag := false
      place_t$create(9,1)
       except when invalid:
          ok_flag := true
        end
      assert("Invalid place",ok_flag)

      % Glass Box
      %
      % test when row is too big
      % test when col is too big
      % test when row is too small
      % test when col is too small
      % test lower limits
      % test upper limits

      % test when row is too big
      ok_flag := false
      place_t$create(9,1)
       except when invalid:
          ok_flag := true
        end
      assert("row too big",ok_flag)

      % test when col is too big
      ok_flag := false
      place_t$create(8,9)
       except when invalid:
          ok_flag := true
        end
      assert("col too big",ok_flag)

      % test when row is too small
      ok_flag := false
      place_t$create(0,1)
       except when invalid:
          ok_flag := true
        end
      assert("row too small",ok_flag)

      % test when col is too small
      ok_flag := false
      place_t$create(8,0)
       except when invalid:
          ok_flag := true
        end
      assert("col too small",ok_flag)

      % test lower limits
      ok_flag := true
      place_t$create(1,1)
       except when invalid:
          ok_flag := false
        end
      assert("row = 1 col = 1",ok_flag)

      % test upper limits
      ok_flag := true
      place_t$create(8,8)
       except when invalid:
          ok_flag := false
        end
      assert("row = 8 col = 8",ok_flag)


      % parse
      %
      % Black Box
      %
      % test uppercase letter in place string
      % test lowercase letter in place string
      % test invalid place string

      upper_g3 : place_t := place_t$parse("G3")
      assert("parse G3",upper_g3 = g3)

      lower_g3 : place_t := place_t$parse("g3")
      assert("parse g3",lower_g3 = g3)

      ok_flag := false
      place_t$parse("3g")
       except when invalid:
          ok_flag := true
        end
      assert("invalid place string",ok_flag)

      % Glass Box
      %
      % test row out of bounds
      % test col out of bounds
      % test 'a' col
      % test 'h' col
      % test 'A' col
      % test 'H' col
      % test 1 row
      % test 8 row

      ok_flag := false
      place_t$parse("g9")
       except when invalid:
          ok_flag := true
        end
      assert("row out of bounds",ok_flag)

      ok_flag := false
      place_t$parse("j2")
       except when invalid:
          ok_flag := true
        end
      assert("col out of bounds",ok_flag)

      assert("parse a5",place_t$parse("a5")=place_t$create(5,1))

      assert("parse h6",place_t$parse("h6")=place_t$create(6,8))

      assert("parse A7",place_t$parse("A7")=place_t$create(7,1))
      
      assert("parse H4",place_t$parse("H4")=place_t$create(4,8))
      
      assert("parse b8",place_t$parse("b8")=place_t$create(8,2))
      
      assert("parse c1",place_t$parse("c1")=place_t$create(1,3))
      
      
      

      % unparse
      %
      % Black Box
      % test by unparseing a place

      assert("unparse g3",place_t$unparse(g3) = "g3")

      % Glass Box
      %
      % test for row = 'a'
      a1 : place_t := place_t$create(1,1)
      assert("unparse a1",place_t$unparse(a1) = "a1")

      % get_row
      %
      % Black Box
      % get row of a place
      assert("get_row",g3.row = 3)

      % Glass Box
      %
      % No further tests should be nessesary

      % get_col
      %
      % Black Box

      assert("get_col",g3.col = 7)

      % Glass Box
      %
      % No further tests should be nessesary

      % equal
      %
      % Black Box
      % test when equal
      assert("equal",place_t$create(3,4) = place_t$create(3,4))

      % Glass Box
      %
      % test when cols are equal
      % test when rows are equal
      % test when niether is equal

      assert("equal",(place_t$create(3,4) = place_t$create(5,4)) = false)
      assert("equal",(place_t$create(3,4) = place_t$create(3,7)) = false)
      assert("equal",(place_t$create(3,4) = place_t$create(4,3)) = false)


    end test_place

