Package games.stendhal.client

Source Code of games.stendhal.client.PerceptionToObjectTest

/* $Id: PerceptionToObjectTest.java,v 1.10 2010/09/19 02:37:52 nhnb Exp $ */
/***************************************************************************
*                   (C) Copyright 2003-2010 - Stendhal                    *
***************************************************************************
***************************************************************************
*                                                                         *
*   This program 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 of the License, or     *
*   (at your option) any later version.                                   *
*                                                                         *
***************************************************************************/
package games.stendhal.client;

import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import marauroa.common.game.RPObject;

import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;

public class PerceptionToObjectTest {

  private class ObjectChangeListenerAdapter implements
      ObjectChangeListener {
   

    private ObjectChangeListenerAdapter() {
     
    }

    public void deleted() {
     
    }

    public void modifiedAdded(final RPObject changes) {
     
    }

    public void modifiedDeleted(final RPObject changes) {
     
    }
  }

  @BeforeClass
  public static void setUpBeforeClass() throws Exception {
  }

  @AfterClass
  public static void tearDownAfterClass() throws Exception {
  }

  @Before
  public void setUp() throws Exception {
  }

  @After
  public void tearDown() throws Exception {
  }

  /**
   * Tests for onClear2Listeners1Object.
   */
  @Test
  public final void testOnClear2Listeners1Object() {
    final PerceptionToObject pto = new PerceptionToObject();
    final RPObject testvalues = new RPObject();
   
    final ObjectChangeListener listener1 = new ObjectChangeListenerAdapter() {
      @Override
      public void deleted() {
        testvalues.put("listener1", "");

      }
    };
    final ObjectChangeListener listener2 = new ObjectChangeListenerAdapter() {
      @Override
      public void deleted() {
        testvalues.put("listener2", "");
      }
    };
   
    RPObject observed = new RPObject();
    observed.setID(new RPObject.ID(1, "zone"));
    assertFalse(testvalues.has("listener1"));
    assertFalse(testvalues.has("listener2"));
   
    pto.register(observed, listener1);
    pto.register(observed, listener2);
   
    assertTrue(pto.map.get(observed.getID()).contains(listener2));
    assertTrue(pto.map.get(observed.getID()).contains(listener1));
   
    pto.onClear();
   
   
    assertTrue(testvalues.has("listener2"));
    assertTrue(testvalues.has("listener1"));
  }
 
  // TODO: remove listener from pto must remove all references
 
 
 
  /**
   * Tests for onClear.
   */
  @Test
  public final void testOnClear() {
    final String attribute = "clear";
    final PerceptionToObject pto = new PerceptionToObject();
    final RPObject object = new RPObject();
    object.setID(new RPObject.ID(1, "zone"));
    final ObjectChangeListener listener = new ObjectChangeListenerAdapter() {

      @Override
      public void deleted() {
        object.put(attribute, "");
      }
     
    };
    final RPObject object2 = new RPObject();
    object2.setID(new RPObject.ID(2, "zone"));

    pto.register(object, listener);
    pto.register(object2, listener);
    assertTrue("object is contained in map after register of listener", pto.map.containsKey(object.getID()));
   
    assertFalse("deleted not yet called", object.has(attribute));

    assertTrue(pto.map.containsKey(object2.getID()));
    assertFalse(object2.has(attribute));

    pto.onClear();

    assertTrue(object.has(attribute));
    assertFalse(object2.has(attribute));
   
    assertFalse(pto.map.containsKey(object.getID()));
    assertFalse(pto.map.containsKey(object2.getID()));
  }

  /**
   * Tests for onDeleted.
   */
  @Test
  public final void testOnDeleted() {
    final String attribute = "deleted";
    final PerceptionToObject pto = new PerceptionToObject();
    final RPObject object = new RPObject();
    object.setID(new RPObject.ID(1, "zone"));
    final ObjectChangeListener listener = new ObjectChangeListenerAdapter() {

      @Override
      public void deleted() {
        object.put(attribute, "");
      }
     
    };
    final RPObject object2 = new RPObject();
    object2.setID(new RPObject.ID(2, "zone"));

    pto.register(object, listener);
    pto.register(object2, listener);
    assertTrue(pto.map.containsKey(object.getID()));
   
    assertFalse(object.has(attribute));

    assertTrue(pto.map.containsKey(object2.getID()));
    assertFalse(object2.has(attribute));

    pto.onDeleted(object);

    assertFalse(pto.map.containsKey(object.getID()));
    assertTrue(object.has(attribute));
    assertTrue(pto.map.containsKey(object2.getID()));
    assertFalse(object2.has(attribute));
  }

  /**
   * Tests for onException.
   */
  @Test
  public final void testOnException() {
    final String attribute = "clear";
    final PerceptionToObject pto = new PerceptionToObject();
    final RPObject object = new RPObject();
    object.setID(new RPObject.ID(1, "zone"));
    final ObjectChangeListener listener = new ObjectChangeListenerAdapter() {

      @Override
      public void deleted() {
        object.put(attribute, "");
      }
     
    };
    final RPObject object2 = new RPObject();
    object2.setID(new RPObject.ID(2, "zone"));

    pto.register(object, listener);
    pto.register(object2, listener);
    assertTrue(pto.map.containsKey(object.getID()));
   
    assertFalse(object.has(attribute));

    assertTrue(pto.map.containsKey(object2.getID()));
    assertFalse(object2.has(attribute));

    pto.onException(null, null);

    assertTrue(object.has(attribute));
    assertFalse(pto.map.containsKey(object.getID()));
    assertFalse(pto.map.containsKey(object2.getID()));
  }

  /**
   * Tests for onModifiedAdded.
   */
  @Test
  public final void testOnModifiedAdded() {
    final PerceptionToObject pto = new PerceptionToObject();
    final RPObject object = new RPObject();
    object.setID(new RPObject.ID(1, "zone"));
    final String attribute = "modifiedadded";
    final ObjectChangeListener listener = new ObjectChangeListenerAdapter() {

      @Override
      public void modifiedAdded(final RPObject changes) {
        object.add(attribute, 1);
      }
    };
   
    final RPObject changes = new RPObject();
    changes.setID(new RPObject.ID(object.getID().getObjectID(), object.getID().getZoneID()));
    final RPObject object2 = new RPObject();
    object2.setID(new RPObject.ID(2, "zone"));

    pto.register(object, listener);
    pto.register(object2, listener);
    assertTrue(pto.map.containsKey(object.getID()));
    assertFalse(object.has(attribute));

    assertTrue(pto.map.containsKey(object2.getID()));
    assertFalse(object2.has(attribute));

    pto.onModifiedAdded(object, changes);

    assertTrue(pto.map.containsKey(object.getID()));
    assertTrue(object.has(attribute));
    assertTrue(pto.map.containsKey(object2.getID()));
    assertFalse(object2.has(attribute));
  }

  /**
   * Tests for onModifiedDeleted.
   */
  @Test
  public final void testOnModifiedDeleted() {
    final PerceptionToObject pto = new PerceptionToObject();
    final RPObject object = new RPObject();
    object.setID(new RPObject.ID(1, "zone"));
    final String attribute = "modifieddeleted";
    final ObjectChangeListener listener = new ObjectChangeListenerAdapter() {
     
      @Override
      public void modifiedDeleted(final RPObject changes) {
        object.add(attribute, 1);
      }
    };
   
    final RPObject changes = new RPObject();
    changes.setID(new RPObject.ID(object.getID().getObjectID(), object.getID().getZoneID()));
    final RPObject object2 = new RPObject();
    object2.setID(new RPObject.ID(2, "zone"));

    pto.register(object, listener);
    pto.register(object2, listener);
    assertTrue(pto.map.containsKey(object.getID()));
    assertFalse(object.has(attribute));

    assertTrue(pto.map.containsKey(object2.getID()));
    assertFalse(object2.has(attribute));

    pto.onModifiedDeleted(object, changes);

    assertTrue(pto.map.containsKey(object.getID()));
    assertTrue(object.has(attribute));
    assertTrue(pto.map.containsKey(object2.getID()));
    assertFalse(object2.has(attribute));

  }

  /**
   * Tests for onMyRPObject.
   */
  @Test
  public final void testOnMyRPObject() {
    final PerceptionToObject pto = new PerceptionToObject();
    final RPObject object = new RPObject();
    object.setID(new RPObject.ID(1, "zone"));
    final String attribute = "modifieddeleted";
    final ObjectChangeListener listener = new ObjectChangeListenerAdapter() {
     
      @Override
      public void modifiedDeleted(final RPObject changes) {
        object.add(attribute, 1);
      }
      @Override
      public void modifiedAdded(final RPObject arg0) {
     
       
      }
    };
   
    final RPObject changes = new RPObject();
    changes.setID(new RPObject.ID(object.getID().getObjectID(), object.getID().getZoneID()));
    final RPObject object2 = new RPObject();
    object2.setID(new RPObject.ID(2, "zone"));

    pto.register(object, listener);
    pto.register(object2, listener);
    assertTrue(pto.map.containsKey(object.getID()));
    assertFalse(object.has(attribute));

    assertTrue(pto.map.containsKey(object2.getID()));
    assertFalse(object2.has(attribute));

    pto.onModifiedDeleted(object, changes);

    assertTrue(pto.map.containsKey(object.getID()));
    assertTrue(object.has(attribute));
    assertTrue(pto.map.containsKey(object2.getID()));
    assertFalse(object2.has(attribute));
  }

 
  /**
   * Tests for registerUnregister.
   */
  @Test
  public final void testRegisterUnregister() {
    final PerceptionToObject pto = new PerceptionToObject();
    final RPObject object = new RPObject();
    object.setID(new RPObject.ID(1, "zone"));
    final ObjectChangeListener listener = new ObjectChangeListenerAdapter();
   
    final RPObject changes = new RPObject();
    changes.setID(new RPObject.ID(object.getID().getObjectID(), object.getID().getZoneID()));
    final RPObject object2 = new RPObject();
    object2.setID(new RPObject.ID(2, "zone"));
    final RPObject object3 = new RPObject();
    object3.setID(new RPObject.ID(3, "zone"));

    pto.register(object, listener);
    pto.register(object2, listener);
    pto.register(object3, new ObjectChangeListenerAdapter());
    assertTrue(pto.map.containsKey(object.getID()));
    assertTrue(pto.map.containsKey(object2.getID()));
    assertTrue(pto.map.containsKey(object3.getID()));


    pto.unregister(listener);
    assertTrue(pto.map.get(object.getID()).isEmpty());
    assertTrue(pto.map.get(object2.getID()).isEmpty());
    assertFalse(pto.map.get(object3.getID()).isEmpty());
   
  }
 
  /**
   * Tests for absentObject.
   */
  @Test
  public final void testabsentObject() {
    PerceptionToObject pto = new PerceptionToObject();
    assertTrue(pto.map.isEmpty());
    RPObject object = new RPObject();
    object.setID(new RPObject.ID(1, "ZONE"));
   
    pto.onClear();
    pto.onDeleted(object);
    pto.onException(null, null);
    pto.onModifiedAdded(object, null);
    pto.onModifiedDeleted(object, null);
    pto.onMyRPObject(object, null);
    pto.onMyRPObject(null, object);

   
  }

}
TOP

Related Classes of games.stendhal.client.PerceptionToObjectTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.