/*
* RapidMiner
*
* Copyright (C) 2001-2008 by Rapid-I and the contributors
*
* Complete list of developers available at our web site:
*
* http://rapid-i.com
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program 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 Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see http://www.gnu.org/licenses/.
*/
package com.rapidminer.operator.similarity.test;
import com.rapidminer.operator.learner.clustering.DefaultClusterNode;
import com.rapidminer.operator.learner.clustering.SimpleHierarchicalClusterModel;
import com.rapidminer.operator.similarity.clustermodel.TreeDistance;
import junit.framework.TestCase;
/**
* A test for the cluster model similarities.
*
* @author Michael Wurst
* @version $Id: ClusterModelSimilarityTest.java,v 1.5 2008/09/12 10:31:59 tobiasmalbrecht Exp $
*/
public class ClusterModelSimilarityTest extends TestCase {
protected void setUp() throws Exception {
// No setup necessary
}
public void testSimilarity() throws Exception {
SimpleHierarchicalClusterModel model = new SimpleHierarchicalClusterModel();
// Add some nodes
DefaultClusterNode root = new DefaultClusterNode("root");
DefaultClusterNode n1 = new DefaultClusterNode("1");
DefaultClusterNode n2 = new DefaultClusterNode("2");
DefaultClusterNode n11 = new DefaultClusterNode("11");
root.addSubNode(n1);
root.addSubNode(n2);
n1.addSubNode(n11);
model.setRootNode(root);
// Add objects
root.addObject("x");
n1.addObject("a");
n1.addObject("b");
n2.addObject("d");
n11.addObject("e");
n11.addObject("a");
n11.addObject("g");
TreeDistance sim = new TreeDistance();
sim.init(model);
assertEquals(0.0, sim.similarity("e", "g"));
assertEquals(2.0, sim.similarity("b", "d"));
assertEquals(0.0, sim.similarity("a", "a"));
assertEquals(1.0, sim.similarity("b", "g"));
assertEquals(2.0, sim.similarity("x", "g"));
}
}