NotificationContainerTest.java :  » UnTagged » otsopack » otsopack » droid » network » communication » notifications » Android Open Source

Android Open Source » UnTagged » otsopack 
otsopack » otsopack » droid » network » communication » notifications » NotificationContainerTest.java
/*
 * Copyright (C) 2008-2011 University of Deusto
 * 
 * All rights reserved.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution.
 * 
 * This software consists of contributions made by many individuals, 
 * listed below:
 *
 * Author: Aitor Gmez Goiri <aitor.gomez@deusto.es>
 */
package otsopack.droid.network.communication.notifications;

import java.util.Enumeration;

import junit.framework.TestCase;
import otsopack.commons.data.ISemanticFactory;
import otsopack.commons.data.impl.SemanticFactory;
import otsopack.commons.data.impl.microjena.MicrojenaFactory;
import otsopack.commons.exceptions.MalformedTemplateException;
import otsopack.commons.util.collections.HashSet;
import otsopack.commons.util.collections.Vector;
import otsopack.droid.network.communication.notifications.INotificationElement;
import otsopack.droid.network.communication.notifications.NotificationContainer;
import otsopack.droid.network.communication.notifications.NotificationsFactory;

public class NotificationContainerTest extends TestCase {
  NotificationContainer container;
  
  public void setUp() throws Exception {
    super.setUp();
    SemanticFactory.initialize(new MicrojenaFactory());
    container = new NotificationContainer();
  }
  
  public void tearDown() {
  }
  
  public void testAdd() throws MalformedTemplateException {
    final ISemanticFactory sf = new SemanticFactory();
    
    boolean added = container.add(NotificationsFactory.createAdvertisement("http://uri1", sf.createTemplate("?s1 ?p1 ?o1 .")));
    assertTrue(added);
    assertEquals(container.size(),1);
    
    added = container.add(NotificationsFactory.createSubscription("http://uri1", sf.createTemplate("?s ?p ?o ."), null));
    assertFalse(added);
    assertEquals(container.size(),1);
    
    added = container.add(NotificationsFactory.createSubscription("http://uri2", sf.createTemplate("?s2 ?p2 ?o2 ."), null));
    assertFalse(added);
    assertEquals(container.size(),1);
    
    added = container.add(NotificationsFactory.createSubscription("http://uri1", sf.createTemplate("<http://s1> ?p ?o ."), null));
    assertFalse(added);
    assertEquals(container.size(),1);
    
    added = container.add(NotificationsFactory.createSubscription("http://uri2",sf.createTemplate("<http://s1> ?p ?o ."), null));
    assertTrue(added);
    assertEquals(container.size(),2);

    try {
      added = container.add(new Integer(1));
      assertTrue(false);
    } catch(ClassCastException e) {
      //it's OK
    } finally {
      assertEquals(container.size(),2);
    }

    try {
      added = container.add(null);
      assertTrue(false);
    } catch(NullPointerException e) {
      //it's OK
    } finally {
      assertEquals(container.size(),2);
    }
  }

  public void testAddAll() throws MalformedTemplateException {
    final ISemanticFactory sf = new SemanticFactory();
    boolean added = false;
    
    Vector collection = new Vector();
    final Object[] elements = new Object[10];
    collection.addElement( elements[0] = NotificationsFactory.createAdvertisement("http://uri1", sf.createTemplate("?s1 ?p1 ?o1 .")) );
    collection.addElement( elements[1] = NotificationsFactory.createSubscription("http://uri2", sf.createTemplate("?s ?p <http://o1> ."),null) );
    collection.addElement( elements[2] = NotificationsFactory.createSubscription("http://uri3", sf.createTemplate("?s <http://p1> <http://o1> ."),null) );
    collection.addElement( elements[3] = NotificationsFactory.createSubscription("http://uri4", sf.createTemplate("?s <http://p1> ?o ."),null) );
    collection.addElement( elements[4] = NotificationsFactory.createSubscription("http://uri5", sf.createTemplate("<http://s1> ?p ?o ."),null) );
    collection.addElement( elements[5] = NotificationsFactory.createSubscription("http://uri6", sf.createTemplate("<http://s1> <http://p1> ?o ."),null) );
    collection.addElement( elements[6] = NotificationsFactory.createSubscription("http://uri7", sf.createTemplate("<http://s1> <http://p1> <http://o1> ."),null) );
    collection.addElement( elements[7] = NotificationsFactory.createSubscription("http://uri8", sf.createTemplate("<http://s1> <http://p1> <http://o1> ."),null) ); //repe
    collection.addElement( elements[8] = new Integer(1) );
    collection.addElement( elements[9] = null );
        
    try {
      added = container.addAll(collection);
      assertTrue(false);
    } catch(ClassCastException e) {
      //it's OK
    }
    container.clear();
    collection.remove( elements[8] );
    
    try {
      added = container.addAll(collection);
      assertTrue(false);
    } catch(NullPointerException e) {
      //it's OK
    }
    container.clear();
    collection.remove( elements[9] );
    
    added = container.addAll(collection);
    assertEquals( collection.size(), 8 );
    assertTrue( added );
    assertTrue( container.contains(elements[0]) );
    assertTrue( container.contains(elements[1]) );
    assertTrue( container.contains(elements[2]) );
    assertTrue( container.contains(elements[3]) );
    assertTrue( container.contains(elements[4]) );
    assertTrue( container.contains(elements[5]) );
    assertTrue( container.contains(elements[6]) );
    assertFalse( container.contains(elements[7]) ); //elements[7].equals(elements[6])
    assertEquals( container.size(), 7 );
    
    //Adding elements already in the list
    collection = new Vector(4);
    Object[] elements2 = new Object[4];
    collection.add( elements2[0] = elements[0] );
    collection.add( elements2[1] = elements[1] );
    collection.add( elements2[2] = NotificationsFactory.createSubscription("http://uri9", sf.createTemplate("?s <http://p9> <http://o9> ."),null) );
    collection.add( elements2[3] = NotificationsFactory.createSubscription("http://uri10", sf.createTemplate("?s <http://p10> ?o ."),null) );
    assertTrue( container.addAll(collection) );
    assertEquals( container.size(), 9 );
  }

  public void testClear() throws MalformedTemplateException {
    final ISemanticFactory sf = new SemanticFactory();
    
    boolean added = container.add(NotificationsFactory.createSubscription("http://uri1", sf.createTemplate("?s ?p ?o ."),null));
    assertTrue(added);
    added = container.add(NotificationsFactory.createSubscription("http://uri2", sf.createTemplate("?s <http://p2> ?o ."),null));
    assertTrue(added);
    added = container.add(NotificationsFactory.createSubscription("http://uri3", sf.createTemplate("?s <http://p3> ?o ."),null));
    assertTrue(added);
    added = container.add(NotificationsFactory.createSubscription("http://uri4", sf.createTemplate("?s <http://p4> ?o ."),null));
    assertTrue(added);
    assertEquals(container.size(),4);
    
    container.clear();
    assertEquals(container.size(),0);
    assertTrue(container.notificationsBySelector.isEmpty());
    assertTrue(container.notificationsByURI.isEmpty());
    assertTrue(container.isEmpty());
    
  }

  public void testContains() throws Exception {
    final ISemanticFactory sf = new SemanticFactory();
    
    final INotificationElement[] elements = new INotificationElement[4];
    boolean added = container.add(elements[0]=NotificationsFactory.createSubscription("http://uri1", sf.createTemplate("?s ?p ?o ."),null));
    assertTrue(added);
    added = container.add(elements[1]=NotificationsFactory.createSubscription("http://uri2", sf.createTemplate("?s <http://p2> ?o ."),null));
    assertTrue(added);
    added = container.add(elements[2]=NotificationsFactory.createSubscription("http://uri3", sf.createTemplate("?s <http://p3> ?o ."),null));
    assertTrue(added);
    added = container.add(elements[3]=NotificationsFactory.createSubscription("http://uri4", sf.createTemplate("?s <http://p4> ?o ."),null));
    assertTrue(added);
    assertEquals(container.size(),elements.length);
    
    assertTrue( container.contains(elements[0]) );
    assertTrue( container.contains(elements[1]) );
    assertTrue( container.contains(elements[2]) );
    assertTrue( container.contains(elements[3]) );
    assertFalse( container.contains(NotificationsFactory.createSubscription("http://uri5", sf.createTemplate("?s <http://p5> ?o ."),null)) );
  }

  public void testContainsAll() throws MalformedTemplateException {
    final ISemanticFactory sf = new SemanticFactory();
    
    HashSet elements = new HashSet(4);
    elements.add( NotificationsFactory.createSubscription("http://uri1", sf.createTemplate("?s ?p ?o ."),null) );
    elements.add( NotificationsFactory.createSubscription("http://uri2", sf.createTemplate("?s <http://p2> ?o ."),null) );
    elements.add( NotificationsFactory.createSubscription("http://uri3", sf.createTemplate("?s <http://p3> ?o ."),null) );
    elements.add( NotificationsFactory.createSubscription("http://uri4", sf.createTemplate("?s <http://p4> ?o ."),null) );
    boolean added = container.addAll(elements);
    assertTrue(added);
    assertEquals(container.size(),elements.size());
    assertTrue( container.containsAll(elements) );

    elements = new HashSet(2);
    elements.add( NotificationsFactory.createSubscription("http://uri1", sf.createTemplate("?s ?p ?o ."),null) );
    elements.add( NotificationsFactory.createSubscription("http://uri2", sf.createTemplate("?s <http://p2> ?o ."),null) );
    assertTrue( container.containsAll(elements) );
    
    elements = new HashSet(2);
    elements.add( NotificationsFactory.createSubscription("http://uri3", sf.createTemplate("?s ?p ?o ."),null) );
    elements.add( NotificationsFactory.createSubscription("http://uri2", sf.createTemplate("?s <http://p2> ?o ."),null) );
    assertFalse( container.containsAll(elements) );
  }

  public void testIsEmpty() throws MalformedTemplateException {
    final ISemanticFactory sf = new SemanticFactory();
    assertTrue(container.isEmpty());
    
    boolean added = container.add(NotificationsFactory.createSubscription("http://uri1", sf.createTemplate("?s ?p ?o ."),null));
    assertTrue(added);
    added = container.add(NotificationsFactory.createSubscription("http://uri2", sf.createTemplate("?s <http://p2> ?o ."),null));
    assertTrue(added);
    added = container.add(NotificationsFactory.createSubscription("http://uri3", sf.createTemplate("?s <http://p3> ?o ."),null));
    assertTrue(added);
    added = container.add(NotificationsFactory.createSubscription("http://uri4", sf.createTemplate("?s <http://p4> ?o ."),null));
    assertTrue(added);
    assertEquals(container.size(),4);
    assertFalse(container.isEmpty());
    
    container.clear();
    assertTrue(container.isEmpty());
  }

  public void testIterator() throws MalformedTemplateException {
    final ISemanticFactory sf = new SemanticFactory();
    
    boolean added = container.add(NotificationsFactory.createSubscription("http://uri1", sf.createTemplate("?s ?p ?o ."),null));
    assertTrue(added);
    added = container.add(NotificationsFactory.createSubscription("http://uri2", sf.createTemplate("?s <http://p2> ?o ."),null));
    assertTrue(added);
    added = container.add(NotificationsFactory.createSubscription("http://uri3", sf.createTemplate("?s <http://p3> ?o ."),null));
    assertTrue(added);
    added = container.add(NotificationsFactory.createSubscription("http://uri4", sf.createTemplate("?s <http://p4> ?o ."),null));
    assertTrue(added);
    assertEquals(container.size(),4);
    assertFalse(container.isEmpty());
    
    int i = 0;
    Enumeration<?> it = container.elements();
    while( it.hasMoreElements() ) {
      it.nextElement();
      i++;
    }
    assertEquals(i,4);
  }

  public void testRemove() throws Exception {
    final ISemanticFactory sf = new SemanticFactory();
    
    final INotificationElement[] elements = new INotificationElement[4];
    assertTrue( container.add(elements[0]=NotificationsFactory.createSubscription("http://uri1", sf.createTemplate("?s ?p ?o ."),null)) );
    assertTrue( container.add(elements[1]=NotificationsFactory.createSubscription("http://uri2", sf.createTemplate("?s <http://p2> ?o ."),null)) );
    assertTrue( container.add(elements[2]=NotificationsFactory.createSubscription("http://uri3", sf.createTemplate("?s <http://p3> ?o ."),null)) );
    assertTrue( container.add(elements[3]=NotificationsFactory.createSubscription("http://uri4", sf.createTemplate("?s <http://p4> ?o ."),null)) );
    
    assertEquals(container.size(),elements.length);
    assertTrue(container.contains(elements[0]));
    assertTrue(container.contains(elements[1]));
    assertTrue(container.contains(elements[2]));
    assertTrue(container.contains(elements[3]));
    
    container.remove(elements[1]);
    assertEquals(container.size(),3);
    assertTrue(container.contains(elements[0]));
    assertFalse(container.contains(elements[1]));
    assertTrue(container.contains(elements[2]));
    assertTrue(container.contains(elements[3]));
    
    container.remove(elements[2]);
    assertEquals(container.size(),2);
    assertTrue(container.contains(elements[0]));
    assertFalse(container.contains(elements[1]));
    assertFalse(container.contains(elements[2]));
    assertTrue(container.contains(elements[3]));
    
    container.remove(elements[0]);
    assertEquals(container.size(),1);
    assertFalse(container.contains(elements[0]));
    assertFalse(container.contains(elements[1]));
    assertFalse(container.contains(elements[2]));
    assertTrue(container.contains(elements[3]));
    
    container.remove(elements[3]);
    assertEquals(container.size(),0);
    assertFalse(container.contains(elements[0]));
    assertFalse(container.contains(elements[1]));
    assertFalse(container.contains(elements[2]));
    assertFalse(container.contains(elements[3]));
  }

  public void testRemoveAll() throws MalformedTemplateException {
    final ISemanticFactory sf = new SemanticFactory();
    final INotificationElement[] els = new INotificationElement[8];
    
    HashSet elements = new HashSet(4);
    elements.add( els[0] = NotificationsFactory.createSubscription("http://uri1", sf.createTemplate("?s ?p ?o ."),null) );
    elements.add( els[1] = NotificationsFactory.createSubscription("http://uri2", sf.createTemplate("?s <http://p2> ?o ."),null) );
    elements.add( els[2] = NotificationsFactory.createSubscription("http://uri3", sf.createTemplate("?s <http://p3> ?o ."),null) );
    elements.add( els[3] = NotificationsFactory.createSubscription("http://uri4", sf.createTemplate("?s <http://p4> ?o ."),null) );
    assertTrue( container.addAll(elements) );
    assertEquals(container.size(),elements.size());
    
    
    final HashSet elements2 = new HashSet(4);
    elements2.add( els[4] = NotificationsFactory.createSubscription("http://uri5", sf.createTemplate("<http://s5> ?p ?o ."),null) );
    elements2.add( els[5] = NotificationsFactory.createSubscription("http://uri6", sf.createTemplate("?s <http://p6> ?o ."),null) );
    elements2.add( els[6] = NotificationsFactory.createSubscription("http://uri7", sf.createTemplate("?s <http://p7> ?o ."),null) );
    elements2.add( els[7] = NotificationsFactory.createSubscription("http://uri8", sf.createTemplate("?s <http://p8> ?o ."),null) );
    assertTrue( container.addAll(elements2) );
    assertEquals(container.size(),elements.size()+elements2.size());
    
    assertTrue(container.contains(els[0]));
    assertTrue(container.contains(els[1]));
    assertTrue(container.contains(els[2]));
    assertTrue(container.contains(els[3]));
    assertTrue(container.contains(els[4]));
    assertTrue(container.contains(els[5]));
    assertTrue(container.contains(els[6]));
    assertTrue(container.contains(els[7]));
    
    assertTrue( container.removeAll(elements) );
    assertEquals(container.size(),elements2.size());
    assertFalse(container.contains(els[0]));
    assertFalse(container.contains(els[1]));
    assertFalse(container.contains(els[2]));
    assertFalse(container.contains(els[3]));
    assertTrue(container.contains(els[4]));
    assertTrue(container.contains(els[5]));
    assertTrue(container.contains(els[6]));
    assertTrue(container.contains(els[7]));
    
    elements = new HashSet(2);
    elements.add( els[6] );
    elements.add( NotificationsFactory.createSubscription("http://uri9", sf.createTemplate("?s <http://p9> ?o ."),null) );
    assertTrue( container.removeAll(elements) );
    assertEquals(container.size(),elements2.size()-1);
    assertFalse(container.contains(els[0]));
    assertFalse(container.contains(els[1]));
    assertFalse(container.contains(els[2]));
    assertFalse(container.contains(els[3]));
    assertTrue(container.contains(els[4]));
    assertTrue(container.contains(els[5]));
    assertFalse(container.contains(els[6]));
    assertTrue(container.contains(els[7]));
    
    assertTrue( container.removeAll(elements2) );
    assertEquals(container.size(),0);
    assertFalse(container.contains(els[0]));
    assertFalse(container.contains(els[1]));
    assertFalse(container.contains(els[2]));
    assertFalse(container.contains(els[3]));
    assertFalse(container.contains(els[4]));
    assertFalse(container.contains(els[5]));
    assertFalse(container.contains(els[6]));
    assertFalse(container.contains(els[7]));
  }

  public void testRetainAll() throws MalformedTemplateException {
    final ISemanticFactory sf = new SemanticFactory();
    final INotificationElement[] els = new INotificationElement[8];
    
    final HashSet elements = new HashSet(8);
    elements.add( els[0] = NotificationsFactory.createSubscription("http://uri1", sf.createTemplate("?s ?p ?o ."),null) );
    elements.add( els[1] = NotificationsFactory.createSubscription("http://uri2", sf.createTemplate("?s <http://p2> ?o ."),null) );
    elements.add( els[2] = NotificationsFactory.createSubscription("http://uri3", sf.createTemplate("?s <http://p3> ?o ."),null) );
    elements.add( els[3] = NotificationsFactory.createSubscription("http://uri4", sf.createTemplate("?s <http://p4> ?o ."),null) );
    elements.add( els[4] = NotificationsFactory.createSubscription("http://uri5", sf.createTemplate("<http://s5> ?p ?o ."),null) );
    elements.add( els[5] = NotificationsFactory.createSubscription("http://uri6", sf.createTemplate("?s <http://p6> ?o ."),null) );
    elements.add( els[6] = NotificationsFactory.createSubscription("http://uri7", sf.createTemplate("?s <http://p7> ?o ."),null) );
    elements.add( els[7] = NotificationsFactory.createSubscription("http://uri8", sf.createTemplate("?s <http://p8> ?o ."),null) );
    assertTrue( container.addAll(elements) );
    assertEquals(container.size(),elements.size());
    
    HashSet elements2 = new HashSet(6);
    elements2.add( els[1].clone() );
    elements2.add( els[2].clone() );
    elements2.add( els[3].clone() );
    elements2.add( els[4].clone() );
    elements2.add( els[5].clone() );
    elements2.add( els[6].clone() );
    assertTrue( container.retainAll(elements2) );
    assertEquals(elements2.size(), container.size());
    assertFalse(container.contains(els[0]));
    assertTrue(container.contains(els[1]));
    assertTrue(container.contains(els[2]));
    assertTrue(container.contains(els[3]));
    assertTrue(container.contains(els[4]));
    assertTrue(container.contains(els[5]));
    assertTrue(container.contains(els[6]));
    assertFalse(container.contains(els[7]));
    
    
    elements2 = new HashSet(4);
    elements2.add( els[2].clone() );
    elements2.add( els[3].clone() );
    elements2.add( els[4].clone() );
    elements2.add( els[5].clone() );
    assertTrue( container.retainAll(elements2) );
    assertEquals(container.size(),elements2.size());
    assertFalse(container.contains(els[0]));
    assertFalse(container.contains(els[1]));
    assertTrue(container.contains(els[2]));
    assertTrue(container.contains(els[3]));
    assertTrue(container.contains(els[4]));
    assertTrue(container.contains(els[5]));
    assertFalse(container.contains(els[6]));
    assertFalse(container.contains(els[7]));
    
    
    elements2 = new HashSet(2);
    elements2.add( els[2].clone() );
    elements2.add( els[3].clone() );
    assertTrue( container.retainAll(elements2) );
    assertEquals(container.size(),elements2.size());
    assertFalse(container.contains(els[0]));
    assertFalse(container.contains(els[1]));
    assertTrue(container.contains(els[2]));
    assertTrue(container.contains(els[3]));
    assertFalse(container.contains(els[4]));
    assertFalse(container.contains(els[5]));
    assertFalse(container.contains(els[6]));
    assertFalse(container.contains(els[7]));
    
    
    elements2 = new HashSet(1);
    elements2.add( els[2].clone() );
    assertTrue( container.retainAll(elements2) );
    assertEquals(container.size(),elements2.size());
    assertFalse(container.contains(els[0]));
    assertFalse(container.contains(els[1]));
    assertTrue(container.contains(els[2]));
    assertFalse(container.contains(els[3]));
    assertFalse(container.contains(els[4]));
    assertFalse(container.contains(els[5]));
    assertFalse(container.contains(els[6]));
    assertFalse(container.contains(els[7]));
    
    elements2 = new HashSet(0);
    assertTrue( container.retainAll(elements2) );
    assertEquals(container.size(),0);
    assertFalse(container.contains(els[0]));
    assertFalse(container.contains(els[1]));
    assertFalse(container.contains(els[2]));
    assertFalse(container.contains(els[3]));
    assertFalse(container.contains(els[4]));
    assertFalse(container.contains(els[5]));
    assertFalse(container.contains(els[6]));
    assertFalse(container.contains(els[7]));
  }

  public void testSize() throws Exception {
    final ISemanticFactory sf = new SemanticFactory();
    assertEquals(container.size(),0);
    assertTrue( container.add(NotificationsFactory.createSubscription("http://uri1", sf.createTemplate("?s ?p ?o ."),null)) );
    assertEquals(container.size(),1);
    assertTrue( container.add(NotificationsFactory.createSubscription("http://uri2", sf.createTemplate("?s <http://p2> ?o ."),null)) );
    assertEquals(container.size(),2);
    assertTrue( container.add(NotificationsFactory.createSubscription("http://uri3", sf.createTemplate("?s <http://p3> ?o ."),null)) );
    assertEquals(container.size(),3);
    assertTrue( container.add(NotificationsFactory.createSubscription("http://uri4", sf.createTemplate("?s <http://p4> ?o ."),null)) );
    assertEquals(container.size(),4);
  }

  public void testToArray1() throws MalformedTemplateException {
    final ISemanticFactory sf = new SemanticFactory();
    final Vector elements = new Vector(8);
    elements.add( NotificationsFactory.createSubscription("http://uri1", sf.createTemplate("?s ?p ?o ."),null) );
    elements.add( NotificationsFactory.createSubscription("http://uri2", sf.createTemplate("?s <http://p2> ?o ."),null) );
    elements.add( NotificationsFactory.createSubscription("http://uri3", sf.createTemplate("?s <http://p3> ?o ."),null) );
    elements.add( NotificationsFactory.createSubscription("http://uri4", sf.createTemplate("?s <http://p4> ?o ."),null) );
    elements.add( NotificationsFactory.createSubscription("http://uri5", sf.createTemplate("<http://s5> ?p ?o ."),null) );
    elements.add( NotificationsFactory.createSubscription("http://uri6", sf.createTemplate("?s <http://p6> ?o ."),null) );
    elements.add( NotificationsFactory.createSubscription("http://uri7", sf.createTemplate("?s <http://p7> ?o ."),null) );
    elements.add( NotificationsFactory.createSubscription("http://uri8", sf.createTemplate("?s <http://p8> ?o ."),null) );
    assertTrue( container.addAll(elements) );
    assertEquals(container.size(),elements.size());
    
    Object[] toArray = container.toArray();
    assertEquals(toArray.length,container.size());
    for(int i=0; i<toArray.length; i++) {
      assertTrue( elements.contains(toArray[i]) );
    }
  }

  public void testToArray2() throws MalformedTemplateException {
    final ISemanticFactory sf = new SemanticFactory();
    final Vector elements = new Vector(8);
    elements.add( NotificationsFactory.createSubscription("http://uri1", sf.createTemplate("?s ?p ?o ."),null) );
    elements.add( NotificationsFactory.createSubscription("http://uri2", sf.createTemplate("?s <http://p2> ?o ."),null) );
    elements.add( NotificationsFactory.createSubscription("http://uri3", sf.createTemplate("?s <http://p3> ?o ."),null) );
    elements.add( NotificationsFactory.createSubscription("http://uri4", sf.createTemplate("?s <http://p4> ?o ."),null) );
    elements.add( NotificationsFactory.createSubscription("http://uri5", sf.createTemplate("<http://s5> ?p ?o ."),null) );
    elements.add( NotificationsFactory.createSubscription("http://uri6", sf.createTemplate("?s <http://p6> ?o ."),null) );
    elements.add( NotificationsFactory.createSubscription("http://uri7", sf.createTemplate("?s <http://p7> ?o ."),null) );
    elements.add( NotificationsFactory.createSubscription("http://uri8", sf.createTemplate("?s <http://p8> ?o ."),null) );
    assertTrue( container.addAll(elements) );
    assertEquals(container.size(),elements.size());
    
    Object[] toArray = container.toArray(new Object[0]);
    assertEquals(toArray.length, container.size());
    for(int i=0; i<toArray.length; i++) {
      assertTrue( elements.contains(toArray[i]) );
    }
    
    toArray = container.toArray(new Object[10]);
    assertEquals(toArray.length,10);
    for(int i=0; i<container.size(); i++) {
      assertTrue( elements.contains(toArray[i]) );
    }
  }

  public void testGet1() throws MalformedTemplateException {
    final ISemanticFactory sf = new SemanticFactory();
    final INotificationElement[] els = new INotificationElement[8];
    final HashSet elements = new HashSet(8);
    elements.add( els[0] = NotificationsFactory.createSubscription("http://uri1", sf.createTemplate("?s ?p ?o ."),null) );
    elements.add( els[1] = NotificationsFactory.createSubscription("http://uri2", sf.createTemplate("?s <http://p2> ?o ."),null) );
    elements.add( els[2] = NotificationsFactory.createSubscription("http://uri3", sf.createTemplate("?s <http://p3> ?o ."),null) );
    elements.add( els[3] = NotificationsFactory.createSubscription("http://uri4", sf.createTemplate("?s <http://p4> ?o ."),null) );
    elements.add( els[4] = NotificationsFactory.createSubscription("http://uri5", sf.createTemplate("<http://s5> ?p ?o ."),null) );
    elements.add( els[5] = NotificationsFactory.createSubscription("http://uri6", sf.createTemplate("?s <http://p6> ?o ."),null) );
    elements.add( els[6] = NotificationsFactory.createSubscription("http://uri7", sf.createTemplate("?s <http://p7> ?o ."),null) );
    elements.add( els[7] = NotificationsFactory.createSubscription("http://uri8", sf.createTemplate("?s <http://p8> ?o ."),null) );
    assertTrue( container.addAll(elements) );
    assertEquals(container.size(),elements.size());
    
    assertEquals(container.get("http://uri1"),els[0]);
    assertEquals(container.get("http://uri8"),els[7]);
    assertEquals(container.get("http://uri7"),els[6]);
    assertEquals(container.get("http://uri2"),els[1]);
    assertEquals(container.get("http://uri3"),els[2]);
    assertEquals(container.get("http://uri4"),els[3]);
    assertEquals(container.get("http://uri6"),els[5]);
    assertEquals(container.get("http://uri5"),els[4]);
    assertNull(container.get("http://thisUriDoesnotExist"));
  }

  public void testGet2() throws MalformedTemplateException {
    final ISemanticFactory sf = new SemanticFactory();
    final INotificationElement[] els = new INotificationElement[8];
    final HashSet elements = new HashSet(8);
    elements.add( els[0] = NotificationsFactory.createSubscription("http://uri1", sf.createTemplate("?s ?p ?o ."),null) );
    elements.add( els[1] = NotificationsFactory.createSubscription("http://uri2", sf.createTemplate("?s <http://p2> ?o ."),null) );
    elements.add( els[2] = NotificationsFactory.createSubscription("http://uri3", sf.createTemplate("?s <http://p3> ?o ."),null) );
    elements.add( els[3] = NotificationsFactory.createSubscription("http://uri4", sf.createTemplate("?s <http://p4> ?o ."),null) );
    elements.add( els[4] = NotificationsFactory.createSubscription("http://uri5", sf.createTemplate("<http://s5> ?p ?o ."),null) );
    elements.add( els[5] = NotificationsFactory.createSubscription("http://uri6", sf.createTemplate("?s <http://p6> ?o ."),null) );
    elements.add( els[6] = NotificationsFactory.createSubscription("http://uri7", sf.createTemplate("?s <http://p7> ?o ."),null) );
    elements.add( els[7] = NotificationsFactory.createSubscription("http://uri8", sf.createTemplate("?s <http://p8> ?o ."),null) );
    assertTrue( container.addAll(elements) );
    assertEquals(container.size(),elements.size());
    
    assertEquals(container.get(sf.createTemplate("?s ?p ?o .")),els[0]);
    assertEquals(container.get(sf.createTemplate("?s <http://p8> ?o .")),els[7]);
    assertEquals(container.get(sf.createTemplate("?s <http://p7> ?o .")),els[6]);
    assertEquals(container.get(sf.createTemplate("?s <http://p2> ?o .")),els[1]);
    assertEquals(container.get(sf.createTemplate("?s <http://p3> ?o .")),els[2]);
    assertEquals(container.get(sf.createTemplate("?s <http://p4> ?o .")),els[3]);
    assertEquals(container.get(sf.createTemplate("?s <http://p6> ?o .")),els[5]);
    assertEquals(container.get(sf.createTemplate("<http://s5> ?p ?o .")),els[4]);
    assertNull(container.get(sf.createTemplate("<http://imposible> <http://is> <http://nothing> .")));
  }

  public void testGetThoseWhichMatch() throws MalformedTemplateException {
    final ISemanticFactory sf = new SemanticFactory();
    final INotificationElement[] els = new INotificationElement[8];
    final HashSet elements = new HashSet(8);
    elements.add( els[0] = NotificationsFactory.createSubscription("http://uri1", sf.createTemplate("?s ?p ?o ."),null) );
    elements.add( els[1] = NotificationsFactory.createSubscription("http://uri2", sf.createTemplate("?s <http://p2> ?o ."),null) );
    elements.add( els[2] = NotificationsFactory.createSubscription("http://uri3", sf.createTemplate("<http://s2> <http://p2> ?o ."),null) );
    elements.add( els[3] = NotificationsFactory.createSubscription("http://uri4", sf.createTemplate("?s <http://p2> <http://o2> ."),null) );
    elements.add( els[4] = NotificationsFactory.createSubscription("http://uri5", sf.createTemplate("<http://s5> ?p ?o ."),null) );
    elements.add( els[5] = NotificationsFactory.createSubscription("http://uri6", sf.createTemplate("?s <http://p6> ?o ."),null) );
    elements.add( els[6] = NotificationsFactory.createSubscription("http://uri7", sf.createTemplate("?s <http://p7> ?o ."),null) );
    elements.add( els[7] = NotificationsFactory.createSubscription("http://uri8", sf.createTemplate("?s <http://p8> ?o ."),null) );
    assertTrue( container.addAll(elements) );
    assertEquals(container.size(),elements.size());
    
    HashSet those = container.getThoseWhichMatch(sf.createTemplate("?s ?p ?o ."));
    assertEquals(those.size(),elements.size());
    assertTrue( those.contains(els[0]) );
    assertTrue( those.contains(els[1]) );
    assertTrue( those.contains(els[2]) );
    assertTrue( those.contains(els[3]) );
    assertTrue( those.contains(els[4]) );
    assertTrue( those.contains(els[5]) );
    assertTrue( those.contains(els[6]) );
    assertTrue( those.contains(els[7]) );
    
    those = container.getThoseWhichMatch(sf.createTemplate("?s <http://p2> ?o ."));
    assertEquals(those.size(),3);
    assertFalse( those.contains(els[0]) );
    assertTrue( those.contains(els[1]) );
    assertTrue( those.contains(els[2]) );
    assertTrue( those.contains(els[3]) );
    assertFalse( those.contains(els[4]) );
    assertFalse( those.contains(els[5]) );
    assertFalse( those.contains(els[6]) );
    assertFalse( those.contains(els[7]) );
    
    those = container.getThoseWhichMatch(sf.createTemplate("<http://imposible> <http://is> <http://nothing> ."));
    assertEquals(those.size(),0);
  }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.