From: <lh...@us...> - 2008-04-23 14:35:05
|
Revision: 31 http://tinytim.svn.sourceforge.net/tinytim/?rev=31&view=rev Author: lheuer Date: 2008-04-23 07:35:03 -0700 (Wed, 23 Apr 2008) Log Message: ----------- - TypeInstanceIndex added Added Paths: ----------- tinytim/trunk/src/test/java/org/tinytim/index/ tinytim/trunk/src/test/java/org/tinytim/index/TestTypeInstanceIndex.java Added: tinytim/trunk/src/test/java/org/tinytim/index/TestTypeInstanceIndex.java =================================================================== --- tinytim/trunk/src/test/java/org/tinytim/index/TestTypeInstanceIndex.java (rev 0) +++ tinytim/trunk/src/test/java/org/tinytim/index/TestTypeInstanceIndex.java 2008-04-23 14:35:03 UTC (rev 31) @@ -0,0 +1,279 @@ +/* + * This is tinyTiM, a tiny Topic Maps engine. + * + * Copyright (C) 2008 Lars Heuer (heuer[at]semagia.com) + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the Free + * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + */ +package org.tinytim.index; + +import org.tinytim.TinyTimTestCase; +import org.tmapi.core.Association; +import org.tmapi.core.AssociationRole; +import org.tmapi.core.Occurrence; +import org.tmapi.core.Topic; +import org.tmapi.core.TopicName; + +/** + * Tests against {@link ITypeInstanceIndex}. + * + * @author Lars Heuer (heuer[at]semagia.com) <a href="http://www.semagia.com/">Semagia</a> + * @version $Rev:$ - $Date:$ + */ +public class TestTypeInstanceIndex extends TinyTimTestCase { + + private ITypeInstanceIndex _typeInstanceIdx; + + /* (non-Javadoc) + * @see org.tinytim.TinyTimTestCase#setUp() + */ + @Override + protected void setUp() throws Exception { + super.setUp(); + _typeInstanceIdx = _tm.getIndexManager().getTypeInstanceIndex(); + } + + /* (non-Javadoc) + * @see org.tinytim.TinyTimTestCase#tearDown() + */ + @Override + protected void tearDown() throws Exception { + super.tearDown(); + _typeInstanceIdx = null; + } + + private void _updateIndex() { + if (!_typeInstanceIdx.isAutoUpdated()) { + _typeInstanceIdx.reindex(); + } + } + + public void testTopic() throws Exception { + _updateIndex(); + assertTrue(_typeInstanceIdx.getTopics(null).isEmpty()); + assertTrue(_typeInstanceIdx.getTopicTypes().isEmpty()); + Topic topic = _tm.createTopic(); + _updateIndex(); + assertTrue(_typeInstanceIdx.getTopicTypes().isEmpty()); + assertEquals(1, _typeInstanceIdx.getTopics(null).size()); + assertTrue(_typeInstanceIdx.getTopics(null).contains(topic)); + Topic type1 = _tm.createTopic(); + Topic type2 = _tm.createTopic(); + assertTrue(_typeInstanceIdx.getTopicTypes().isEmpty()); + assertEquals(3, _typeInstanceIdx.getTopics(null).size()); + assertTrue(_typeInstanceIdx.getTopics(null).contains(topic)); + assertTrue(_typeInstanceIdx.getTopics(null).contains(type1)); + assertTrue(_typeInstanceIdx.getTopics(null).contains(type2)); + assertTrue(_typeInstanceIdx.getTopics(new Topic[] {type1, type2}, false).isEmpty()); + assertTrue(_typeInstanceIdx.getTopics(new Topic[] {type1, type2}, true).isEmpty()); + // Topic with one type + topic.addType(type1); + assertEquals(1, _typeInstanceIdx.getTopicTypes().size()); + assertTrue(_typeInstanceIdx.getTopicTypes().contains(type1)); + assertEquals(2, _typeInstanceIdx.getTopics(null).size()); + assertFalse(_typeInstanceIdx.getTopics(null).contains(topic)); + assertTrue(_typeInstanceIdx.getTopics(null).contains(type1)); + assertTrue(_typeInstanceIdx.getTopics(null).contains(type2)); + assertEquals(1, _typeInstanceIdx.getTopics(type1).size()); + assertTrue(_typeInstanceIdx.getTopics(type1).contains(topic)); + assertEquals(1, _typeInstanceIdx.getTopics(new Topic[] {type1, type2}, false).size()); + assertTrue(_typeInstanceIdx.getTopics(new Topic[] {type1, type2}, false).contains(topic)); + assertTrue(_typeInstanceIdx.getTopics(new Topic[] {type1, type2}, true).isEmpty()); + // Topic with two types + topic.addType(type2); + assertEquals(2, _typeInstanceIdx.getTopicTypes().size()); + assertTrue(_typeInstanceIdx.getTopicTypes().contains(type1)); + assertTrue(_typeInstanceIdx.getTopicTypes().contains(type2)); + assertEquals(2, _typeInstanceIdx.getTopics(null).size()); + assertFalse(_typeInstanceIdx.getTopics(null).contains(topic)); + assertTrue(_typeInstanceIdx.getTopics(null).contains(type1)); + assertTrue(_typeInstanceIdx.getTopics(null).contains(type2)); + assertEquals(1, _typeInstanceIdx.getTopics(type1).size()); + assertTrue(_typeInstanceIdx.getTopics(type1).contains(topic)); + assertEquals(1, _typeInstanceIdx.getTopics(type2).size()); + assertTrue(_typeInstanceIdx.getTopics(type2).contains(topic)); + assertEquals(1, _typeInstanceIdx.getTopics(new Topic[] {type1, type2}, false).size()); + assertTrue(_typeInstanceIdx.getTopics(new Topic[] {type1, type2}, false).contains(topic)); + assertEquals(1, _typeInstanceIdx.getTopics(new Topic[] {type1, type2}, true).size()); + assertTrue(_typeInstanceIdx.getTopics(new Topic[] {type1, type2}, true).contains(topic)); + // Topic removal + topic.remove(); + assertEquals(0, _typeInstanceIdx.getTopicTypes().size()); + assertEquals(2, _typeInstanceIdx.getTopics(null).size()); + assertTrue(_typeInstanceIdx.getTopics(null).contains(type1)); + assertTrue(_typeInstanceIdx.getTopics(null).contains(type2)); + assertTrue(_typeInstanceIdx.getTopics(type1).isEmpty()); + assertTrue(_typeInstanceIdx.getTopics(type2).isEmpty()); + assertEquals(0, _typeInstanceIdx.getTopics(new Topic[] {type1, type2}, false).size()); + assertEquals(0, _typeInstanceIdx.getTopics(new Topic[] {type1, type2}, true).size()); + } + + public void testAssociation() throws Exception { + Topic type = _tm.createTopic(); + _updateIndex(); + assertTrue(_typeInstanceIdx.getAssociations(null).isEmpty()); + assertTrue(_typeInstanceIdx.getAssociations(type).isEmpty()); + assertTrue(_typeInstanceIdx.getAssociationTypes().isEmpty()); + Association typed = _tm.createAssociation(); + assertNull(typed.getType()); + _updateIndex(); + assertEquals(1, _typeInstanceIdx.getAssociations(null).size()); + assertTrue(_typeInstanceIdx.getAssociations(null).contains(typed)); + assertFalse(_typeInstanceIdx.getAssociationTypes().contains(type)); + assertTrue(_typeInstanceIdx.getAssociationTypes().isEmpty()); + typed.setType(type); + _updateIndex(); + assertEquals(0, _typeInstanceIdx.getAssociations(null).size()); + assertFalse(_typeInstanceIdx.getAssociations(null).contains(typed)); + assertFalse(_typeInstanceIdx.getAssociationTypes().isEmpty()); + assertEquals(1, _typeInstanceIdx.getAssociations(type).size()); + assertTrue(_typeInstanceIdx.getAssociations(type).contains(typed)); + assertTrue(_typeInstanceIdx.getAssociationTypes().contains(type)); + typed.setType(null); + assertNull(typed.getType()); + assertEquals(1, _typeInstanceIdx.getAssociations(null).size()); + assertTrue(_typeInstanceIdx.getAssociations(null).contains(typed)); + assertFalse(_typeInstanceIdx.getAssociationTypes().contains(type)); + assertTrue(_typeInstanceIdx.getAssociationTypes().isEmpty()); + typed.setType(type); + typed.remove(); + _updateIndex(); + assertTrue(_typeInstanceIdx.getAssociations(null).isEmpty()); + assertTrue(_typeInstanceIdx.getAssociations(type).isEmpty()); + assertTrue(_typeInstanceIdx.getAssociationTypes().isEmpty()); + } + + public void testRole() throws Exception { + Topic type = _tm.createTopic(); + _updateIndex(); + assertTrue(_typeInstanceIdx.getRoles(null).isEmpty()); + assertTrue(_typeInstanceIdx.getRoles(type).isEmpty()); + assertTrue(_typeInstanceIdx.getRoleTypes().isEmpty()); + Association parent = _tm.createAssociation(); + AssociationRole typed = parent.createAssociationRole(null, null); + assertNull(typed.getType()); + _updateIndex(); + assertEquals(1, _typeInstanceIdx.getRoles(null).size()); + assertTrue(_typeInstanceIdx.getRoles(null).contains(typed)); + assertFalse(_typeInstanceIdx.getRoleTypes().contains(type)); + typed.setType(type); + _updateIndex(); + assertEquals(0, _typeInstanceIdx.getRoles(null).size()); + assertFalse(_typeInstanceIdx.getRoles(null).contains(typed)); + assertEquals(1, _typeInstanceIdx.getRoles(type).size()); + assertTrue(_typeInstanceIdx.getRoles(type).contains(typed)); + typed.setType(null); + assertNull(typed.getType()); + assertEquals(1, _typeInstanceIdx.getRoles(null).size()); + assertTrue(_typeInstanceIdx.getRoles(null).contains(typed)); + assertFalse(_typeInstanceIdx.getRoleTypes().contains(type)); + assertTrue(_typeInstanceIdx.getRoleTypes().isEmpty()); + typed.setType(type); + typed.remove(); + _updateIndex(); + assertTrue(_typeInstanceIdx.getRoles(null).isEmpty()); + assertTrue(_typeInstanceIdx.getRoles(type).isEmpty()); + // The same test, but the parent is removed + typed = parent.createAssociationRole(null, null); + assertNull(typed.getType()); + _updateIndex(); + assertEquals(1, _typeInstanceIdx.getRoles(null).size()); + assertTrue(_typeInstanceIdx.getRoles(null).contains(typed)); + typed.setType(type); + _updateIndex(); + assertEquals(0, _typeInstanceIdx.getRoles(null).size()); + assertFalse(_typeInstanceIdx.getRoles(null).contains(typed)); + assertFalse(_typeInstanceIdx.getRoleTypes().isEmpty()); + assertEquals(1, _typeInstanceIdx.getRoles(type).size()); + assertTrue(_typeInstanceIdx.getRoles(type).contains(typed)); + assertTrue(_typeInstanceIdx.getRoleTypes().contains(type)); + parent.remove(); + _updateIndex(); + assertTrue(_typeInstanceIdx.getRoles(null).isEmpty()); + assertTrue(_typeInstanceIdx.getRoles(type).isEmpty()); + assertTrue(_typeInstanceIdx.getRoleTypes().isEmpty()); + } + + public void testOccurrence() throws Exception { + Topic type = _tm.createTopic(); + _updateIndex(); + assertTrue(_typeInstanceIdx.getOccurrences(null).isEmpty()); + assertTrue(_typeInstanceIdx.getOccurrences(type).isEmpty()); + assertTrue(_typeInstanceIdx.getOccurrenceTypes().isEmpty()); + Topic parent = _tm.createTopic(); + Occurrence typed = parent.createOccurrence("tinyTiM", null, null); + assertNull(typed.getType()); + _updateIndex(); + assertEquals(1, _typeInstanceIdx.getOccurrences(null).size()); + assertTrue(_typeInstanceIdx.getOccurrences(null).contains(typed)); + assertFalse(_typeInstanceIdx.getOccurrenceTypes().contains(type)); + typed.setType(type); + _updateIndex(); + assertEquals(0, _typeInstanceIdx.getOccurrences(null).size()); + assertFalse(_typeInstanceIdx.getOccurrences(null).contains(typed)); + assertFalse(_typeInstanceIdx.getOccurrenceTypes().isEmpty()); + assertEquals(1, _typeInstanceIdx.getOccurrences(type).size()); + assertTrue(_typeInstanceIdx.getOccurrences(type).contains(typed)); + assertTrue(_typeInstanceIdx.getOccurrenceTypes().contains(type)); + typed.setType(null); + assertNull(typed.getType()); + assertEquals(1, _typeInstanceIdx.getOccurrences(null).size()); + assertTrue(_typeInstanceIdx.getOccurrences(null).contains(typed)); + assertFalse(_typeInstanceIdx.getOccurrenceTypes().contains(type)); + assertTrue(_typeInstanceIdx.getOccurrenceTypes().isEmpty()); + typed.setType(type); + typed.remove(); + _updateIndex(); + assertTrue(_typeInstanceIdx.getOccurrences(null).isEmpty()); + assertTrue(_typeInstanceIdx.getOccurrences(type).isEmpty()); + assertTrue(_typeInstanceIdx.getOccurrenceTypes().isEmpty()); + } + + public void testName() throws Exception { + Topic type = _tm.createTopic(); + _updateIndex(); + assertTrue(_typeInstanceIdx.getNames(null).isEmpty()); + assertTrue(_typeInstanceIdx.getNames(type).isEmpty()); + assertTrue(_typeInstanceIdx.getNameTypes().isEmpty()); + Topic parent = _tm.createTopic(); + TopicName typed = parent.createTopicName("tinyTiM", null, null); + assertNull(typed.getType()); + _updateIndex(); + assertEquals(1, _typeInstanceIdx.getNames(null).size()); + assertTrue(_typeInstanceIdx.getNames(null).contains(typed)); + assertFalse(_typeInstanceIdx.getNameTypes().contains(type)); + typed.setType(type); + _updateIndex(); + assertEquals(0, _typeInstanceIdx.getNames(null).size()); + assertFalse(_typeInstanceIdx.getNames(null).contains(typed)); + assertFalse(_typeInstanceIdx.getNameTypes().isEmpty()); + assertEquals(1, _typeInstanceIdx.getNames(type).size()); + assertTrue(_typeInstanceIdx.getNames(type).contains(typed)); + assertTrue(_typeInstanceIdx.getNameTypes().contains(type)); + typed.setType(null); + assertNull(typed.getType()); + assertEquals(1, _typeInstanceIdx.getNames(null).size()); + assertTrue(_typeInstanceIdx.getNames(null).contains(typed)); + assertFalse(_typeInstanceIdx.getNameTypes().contains(type)); + assertTrue(_typeInstanceIdx.getNameTypes().isEmpty()); + typed.setType(type); + typed.remove(); + _updateIndex(); + assertTrue(_typeInstanceIdx.getNames(null).isEmpty()); + assertTrue(_typeInstanceIdx.getNames(type).isEmpty()); + assertTrue(_typeInstanceIdx.getNameTypes().isEmpty()); + } +} Property changes on: tinytim/trunk/src/test/java/org/tinytim/index/TestTypeInstanceIndex.java ___________________________________________________________________ Name: svn:keywords + Rev Date Id Name: svn:eol-style + native This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |