/* * Jitsi, the OpenSource Java VoIP and Instant Messaging client. * * Copyright @ 2015 Atlassian Pty Ltd * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.java.sip.communicator.slick.contactlist; import java.util.*; import junit.framework.*; import net.java.sip.communicator.impl.protocol.mock.*; import net.java.sip.communicator.service.contactlist.*; import net.java.sip.communicator.service.protocol.*; /** * Tests methods and behaviour of MetaContactGroup implementations. * * @author Emil Ivov */ public class TestMetaContactGroup extends TestCase { /** * A reference to the SLICK fixture. */ MclSlickFixture fixture = new MclSlickFixture(getClass().getName()); /** * The MetaContactGroup that we're doing the testing aginst. */ MetaContactGroup metaGroup = null; /** * The mock contact group that we're doing the testing against. */ MockContactGroup mockGroup = null; public TestMetaContactGroup(String name) { super(name); } @Override protected void setUp() throws Exception { super.setUp(); fixture.setUp(); OperationSetPersistentPresence opSetPresence = MclSlickFixture.mockProvider.getOperationSet( OperationSetPersistentPresence.class); mockGroup = (MockContactGroup)opSetPresence .getServerStoredContactListRoot(); mockGroup = (MockContactGroup)mockGroup .getGroup(MetaContactListServiceLick.topLevelGroupName); metaGroup = fixture.metaClService.getRoot() .getMetaContactSubgroup(mockGroup.getGroupName()); } @Override protected void tearDown() throws Exception { fixture.tearDown(); fixture = null; super.tearDown(); } /** * Verifies whehter the returned number of contacts corresponds to the * children of the corresponding mock contact group. */ public void testCountChildContacts() { assertEquals("MetaContactGroup.countChildContacts failed" , metaGroup.countChildContacts() , mockGroup.countContacts()); } /** * Verifies whehter the returned number of subgroups corresponds to the * subgroups of the corresponding mock contact group. */ public void testCountSubgroups() { assertEquals("MetaContactGroup.countChildContacts failed" , metaGroup.countSubgroups() , mockGroup.countSubgroups()); } /** * Goes through the iterator returned by the getChildContacts() method * and tries to make sure that it looks sane. */ public void testGetChildContacts() { Iterator<MetaContact> childContactsIter = metaGroup.getChildContacts(); assertNotNull("getChildContacts() returned a null iterator." , childContactsIter); assertTrue("getChildContacts() returned an empty iterator." , childContactsIter.hasNext()); //i don't think we could test anything else here without becoming //redundant with TestMetaContactList } /** * Tests getContactGroup() */ public void testGetContactGroup() { ContactGroup actualReturn = metaGroup.getContactGroup( mockGroup.getGroupName(), MclSlickFixture.mockProvider); assertNotNull("getContactGroup() return null.", actualReturn); assertSame("getContactGroup() did not return the right proto group." , actualReturn, mockGroup); } /** * Tests getContactGroups() */ public void testGetContactGroups() { Iterator<ContactGroup> contactGroups = metaGroup.getContactGroups(); assertNotNull("contact groups iterator", contactGroups); assertTrue("The contact groups iterator was empty." , contactGroups.hasNext()); ContactGroup actualMockGroup = contactGroups.next(); assertSame("Iterator did not contain the right contact group" , mockGroup , actualMockGroup); } /** * Tests testGetContactGroupsForProvider() */ public void testGetContactGroupsForProvider() { Iterator<ContactGroup> contactGroups = metaGroup.getContactGroups(); assertNotNull("contact groups for provider iterator", contactGroups); assertTrue("The contact groups iterator was empty for a mock provider." , contactGroups.hasNext()); ContactGroup actualMockGroup = contactGroups.next(); assertSame("A prov. iterator did not contain the right contact group" , mockGroup , actualMockGroup); } /** * Checks whether the name of the meta group has been properly initialized. */ public void testGetGroupName() { assertEquals("grp: " + metaGroup + " had the wrong name." , MetaContactListServiceLick.topLevelGroupName , metaGroup.getGroupName()); } /** * Verifies whether getMetaContact() returns proper results. */ public void testGetMetaContact() { //firt obtain references to 2 contacts. MetaContact firstContact = metaGroup.getMetaContact(0); MetaContact lastContact = metaGroup.getMetaContact( metaGroup.countChildContacts() - 1); //make sure that what we just got is not null. assertNotNull("getMetaContact(int) returned null for contact 0" , firstContact); assertNotNull("getMetaContact(int) returned null for its last contact " + (metaGroup.countChildContacts() - 1) , lastContact); //I don't see what else we could add here without copying code from //test meta contact } /** * Tests the method. */ public void testGetMetaContact2() { //firt obtain a reference to a contact through iteration. Iterator<MetaContact> childContactsIter = metaGroup.getChildContacts(); //make sure the returned ref is ok. assertNotNull("getChildContacts() returned a null iterator." , childContactsIter); assertTrue("getChildContacts() returned an empty iterator." , childContactsIter.hasNext()); MetaContact expectedChild = childContactsIter.next(); MetaContact actualChild = metaGroup.getMetaContact( expectedChild.getMetaUID()); assertSame("getMetaContact(metaUID) did not return as expected." , expectedChild, actualChild); } /** * Verifies whether getMetaContact(string, provider) returns proper results. */ public void testGetMetaContact3() { MetaContactGroup metaContactGroup1 = fixture.metaClService .findMetaContactGroupByContactGroup(MetaContactListServiceLick .topLevelMockGroup); MetaContact metaContact = metaContactGroup1.getMetaContact( MclSlickFixture.mockProvider, MetaContactListServiceLick.subLevelContactName); //do as best as we can to determine whether this is the right meta //contact assertNotNull( "getMetaCont(prov, contactID) returned a MetaC that didn't " + "contain our contact", metaContact.getContact( MetaContactListServiceLick.subLevelContactName, MclSlickFixture.mockProvider)); assertEquals( "getMetaCont(prov, contactID) returned a MetaC with a wrong name " , metaContact.getDisplayName() , MetaContactListServiceLick.subLevelContactName); } /** * test. */ public void testGetMetaContactSubgroup() { //firt obtain references to a group. MetaContactGroup actualGroup = metaGroup.getMetaContactSubgroup(0); //make sure that what we just got is not null. assertNotNull("getMetaContact(int) returned null for group 0" , actualGroup); //check whether this assertNotNull("The returned group does not appear to really exist" ,mockGroup.getGroup(actualGroup.getGroupName())); assertNotNull("Group encapsulated in the returned group did not match" , mockGroup.getGroup(actualGroup .getContactGroups().next().getGroupName())); } /** * test. */ public void testGetMetaContactSubgroup2() { //firt obtain references to a group. MetaContactGroup actualGroup = metaGroup.getMetaContactSubgroup( (metaGroup.getSubgroups().next()).getGroupName()); //make sure that what we just got is not null. assertNotNull("getMetaContact(String) returned null for group 0" , actualGroup); } /** * Tests MetaContact.contains(MetaContact) */ public void testContains() { MetaContactGroup metaContactGroup1 = fixture.metaClService .findMetaContactGroupByContactGroup(MetaContactListServiceLick .topLevelMockGroup); MetaContact metaContact = fixture.metaClService.findMetaContactByContact( MetaContactListServiceLick.subLevelContact); assertTrue(metaContactGroup1.contains(metaContact)); } /** * Tests MetaContact.contains(MetaContact) */ public void testContains2() { MetaContactGroup metaContactGroup1 = fixture.metaClService .findMetaContactGroupByContactGroup(MetaContactListServiceLick .topLevelMockGroup); MetaContactGroup metaContactGroup2 = metaContactGroup1 .getMetaContactSubgroup(MetaContactListServiceLick .subLevelGroup.getGroupName()); assertTrue(metaContactGroup1.contains(metaContactGroup2)); } /** * Tests MetaContactGroup.getSubgroups(); */ public void testGetSubgroups() { Iterator<MetaContactGroup> subgroupsIter = metaGroup.getSubgroups(); assertNotNull("getSubgroup() returned a null iterator." , subgroupsIter); assertTrue("getSubgroups() returned an empty iterator." , subgroupsIter.hasNext()); //i don't think we could test anything else here without becoming //redundant with TestMetaContactList } /** * Goes over the contacts in one of the groups and verifies that indexOf * returns properly for every one of them. */ public void testIndexOf1() { MetaContactGroup metaContactGroup = fixture.metaClService .findMetaContactGroupByContactGroup(MetaContactListServiceLick .topLevelMockGroup); for ( int i = 0; i < metaContactGroup.countChildContacts(); i++) { MetaContact currentMetaContact = metaContactGroup.getMetaContact(i); assertEquals("indexOf failed for " + currentMetaContact , i, metaContactGroup.indexOf(currentMetaContact)); } } /** * Goes over the subgroups in one the root group and verifies that indexOf * returns properly for every one of them */ public void testIndexOf2() { MetaContactGroup metaContactGroup = fixture.metaClService.getRoot(); for ( int i = 0; i < metaContactGroup.countSubgroups(); i++) { MetaContactGroup currentMetaContactGroup = metaContactGroup.getMetaContactSubgroup(i); assertEquals("indexOf failed for " + currentMetaContactGroup , i, metaContactGroup.indexOf(currentMetaContactGroup)); } } }