// Tags: JDK1.0

// Copyright (C) 1998 Cygnus Solutions

// This file is part of Mauve.

// Mauve is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2, or (at your option)
// any later version.

// Mauve is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.

// You should have received a copy of the GNU General Public License
// along with Mauve; see the file COPYING.  If not, write to
// the Free Software Foundation, 59 Temple Place - Suite 330,
// Boston, MA 02111-1307, USA.  */

package gnu.testlet.java.util.Hashtable;
import gnu.testlet.Testlet;
import gnu.testlet.TestHarness;
import java.util.Hashtable;

public class basic implements Testlet
{
  public int getExpectedPass() { return 11; }
  public int getExpectedFail() { return 0; }
  public int getExpectedKnownFail() { return 0; }
  public void test (TestHarness harness)
    {
      // The toString tests have been commented out as they currently
      // print in reverse order from the std JDK.  Uncomment these if
      // we change our implementation to output in the same order.

      Hashtable hash = new Hashtable(13);

      harness.check (hash.toString(), "{}");
      harness.check (hash.isEmpty());

      hash.put(new Integer(1), "one");
      hash.put(new Integer(2), "two");
      hash.put(new Integer(3), "three");
      hash.put(new Integer(4), "four");
      hash.put(new Integer(5), "five");
      // Rehash should have just happened.
      hash.put(new Integer(6), "six");
      hash.put(new Integer(7), "seven");
      // Rehash should have just happened.
      hash.put(new Integer(8), "eight");
      hash.put(new Integer(9), "nine");
      hash.put(new Integer(10), "ten");
      hash.put(new Integer(11), "eleven");
      hash.put(new Integer(12), "twelve");
      hash.put(new Integer(13), "thirteen");
      hash.put(new Integer(14), "fourteen");
      // Rehash should have just happened.
      hash.put(new Integer(15), "fifteen");

      // harness.check (hash.toString());
      harness.check (! hash.isEmpty());
      harness.check (hash.size(), 15);

      Integer key = new Integer(13);
      String val = (String) hash.get(key);
      hash.put(key, val.toUpperCase());
      // harness.check (hash.toString());
      harness.check (hash.size(), 15);

      harness.check (hash.containsKey(key));
      harness.check (! hash.contains("thirteen"));
      harness.check (hash.contains("THIRTEEN"));

      hash.remove(key);
      // harness.check (hash.toString());
      harness.check (hash.size(), 14);

      hash.clear();
      harness.check (hash.toString(), "{}");
      harness.check (hash.size(), 0);
    }
}