001 /* 002 * Copyright 2002-2004 the original author or authors. 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); you may not 005 * use this file except in compliance with the License. You may obtain a copy of 006 * the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 012 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 013 * License for the specific language governing permissions and limitations under 014 * the License. 015 */ 016 package org.springframework.richclient.command.support; 017 018 import java.util.ArrayList; 019 import java.util.List; 020 021 import org.springframework.richclient.command.AbstractCommand; 022 import org.springframework.richclient.command.AbstractCommandRegistryTests; 023 import org.springframework.richclient.command.ActionCommand; 024 import org.springframework.richclient.command.ActionCommandExecutor; 025 import org.springframework.richclient.command.CommandGroup; 026 import org.springframework.richclient.command.CommandNotOfRequiredTypeException; 027 import org.springframework.richclient.command.CommandRegistry; 028 import org.springframework.richclient.command.CommandRegistryListener; 029 030 /** 031 * Provides unit tests for the {@link DefaultCommandRegistry} class. 032 * 033 * @author Peter De Bruycker 034 * @author Kevin Stembridge 035 */ 036 public class DefaultCommandRegistryTests extends AbstractCommandRegistryTests { 037 038 /** 039 * {@inheritDoc} 040 */ 041 protected CommandRegistry getCommandRegistry() { 042 return new DefaultCommandRegistry(); 043 } 044 045 public void testConstructor() { 046 DefaultCommandRegistry registry = new DefaultCommandRegistry(); 047 assertNull("parent must be null", registry.getParent()); 048 049 TestCommandRegistry parent = new TestCommandRegistry(); 050 registry = new DefaultCommandRegistry(parent); 051 assertEquals("parent not set", parent, registry.getParent()); 052 assertEquals("registry not added to parent", 1, parent.addedListeners.size()); 053 assertTrue("registry not added to parent", parent.addedListeners.contains(registry)); 054 } 055 056 public void testSetParent() { 057 TestCommandRegistry parent = new TestCommandRegistry(); 058 TestCommandRegistry parent2 = new TestCommandRegistry(); 059 060 DefaultCommandRegistry registry = new DefaultCommandRegistry(parent); 061 062 registry.setParent(parent2); 063 064 assertEquals("parent not set", parent2, registry.getParent()); 065 assertEquals("registry not removed from parent", 1, parent.removedListeners.size()); 066 assertTrue("registry not removed from parent", parent.removedListeners.contains(registry)); 067 assertEquals("registry not added to parent", 1, parent2.addedListeners.size()); 068 assertTrue("registry not added to parent", parent2.addedListeners.contains(registry)); 069 070 // set same parent, nothing should happen 071 registry.setParent(parent2); 072 assertEquals("registry added twice to same parent", 1, parent2.addedListeners.size()); 073 assertTrue("registry removed from same parent", parent2.removedListeners.isEmpty()); 074 075 parent2.reset(); 076 077 // set parent to null 078 registry.setParent(null); 079 assertNull("parent not set to null", registry.getParent()); 080 assertEquals("registry not removed from parent", 1, parent2.removedListeners.size()); 081 } 082 083 private static class TestCommandRegistry implements CommandRegistry { 084 private List addedListeners = new ArrayList(); 085 086 private List removedListeners = new ArrayList(); 087 088 public ActionCommand getActionCommand(String commandId) { 089 return null; 090 } 091 092 public CommandGroup getCommandGroup(String groupId) { 093 return null; 094 } 095 096 public boolean containsActionCommand(String commandId) { 097 return false; 098 } 099 100 public boolean containsCommandGroup(String groupId) { 101 return false; 102 } 103 104 public void registerCommand(AbstractCommand command) { 105 } 106 107 public void setTargetableActionCommandExecutor(String targetableCommandId, ActionCommandExecutor commandExecutor) { 108 } 109 110 public void addCommandRegistryListener(CommandRegistryListener l) { 111 addedListeners.add(l); 112 } 113 114 public void removeCommandRegistryListener(CommandRegistryListener l) { 115 removedListeners.add(l); 116 } 117 118 public void reset() { 119 addedListeners.clear(); 120 removedListeners.clear(); 121 } 122 123 /** 124 * {@inheritDoc} 125 */ 126 public boolean containsCommand(String commandId) { 127 return false; 128 } 129 130 /** 131 * {@inheritDoc} 132 */ 133 public Object getCommand(String commandId) { 134 return null; 135 } 136 137 /** 138 * {@inheritDoc} 139 */ 140 public Object getCommand(String commandId, Class requiredType) throws CommandNotOfRequiredTypeException { 141 return null; 142 } 143 144 /** 145 * {@inheritDoc} 146 */ 147 public Class getType(String commandId) { 148 return null; 149 } 150 151 /** 152 * {@inheritDoc} 153 */ 154 public boolean isTypeMatch(String commandId, Class targetType) { 155 return false; 156 } 157 158 } 159 160 }