1/*
2 * Copyright 2007 the original author or authors.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16package org.mockftpserver.core.command;
17
18import org.slf4j.Logger;
19import org.slf4j.LoggerFactory;
20import org.mockftpserver.core.util.AssertFailedException;
21import org.mockftpserver.test.AbstractTestCase;
22
23import java.util.ListResourceBundle;
24import java.util.ResourceBundle;
25
26/**
27 * Tests for the ReplyTextBundleUtil class.
28 *
29 * @version $Revision$ - $Date$
30 *
31 * @author Chris Mair
32 */
33public final class ReplyTextBundleUtilTest extends AbstractTestCase {
34
35    private static final Logger LOG = LoggerFactory.getLogger(ReplyTextBundleUtilTest.class);
36
37    private ResourceBundle resourceBundle1;
38    private ResourceBundle resourceBundle2;
39
40    /**
41     * Test the setReplyTextBundleIfAppropriate() method, when the CommandHandler implements
42     * the ResourceBundleAware interface, and the replyTextBundle has not yet been set.
43     */
44    public void testSetReplyTextBundleIfAppropriate_ReplyTextBundleAware_NotSetYet() {
45        AbstractTrackingCommandHandler commandHandler = new StaticReplyCommandHandler();
46        ReplyTextBundleUtil.setReplyTextBundleIfAppropriate(commandHandler, resourceBundle1);
47        assertSame(resourceBundle1, commandHandler.getReplyTextBundle());
48    }
49
50    /**
51     * Test the setReplyTextBundleIfAppropriate() method, when the CommandHandler implements
52     * the ResourceBundleAware interface, and the replyTextBundle has already been set.
53     */
54    public void testSetReplyTextBundleIfAppropriate_ReplyTextBundleAware_AlreadySet() {
55        AbstractTrackingCommandHandler commandHandler = new StaticReplyCommandHandler();
56        commandHandler.setReplyTextBundle(resourceBundle2);
57        ReplyTextBundleUtil.setReplyTextBundleIfAppropriate(commandHandler, resourceBundle1);
58        assertSame(resourceBundle2, commandHandler.getReplyTextBundle());
59    }
60
61    /**
62     * Test the setReplyTextBundleIfAppropriate() method, when the CommandHandler does not
63     * implement the ResourceBundleAware interface.
64     */
65    public void testSetReplyTextBundleIfAppropriate_NotReplyTextBundleAware() {
66        CommandHandler commandHandler = (CommandHandler) createMock(CommandHandler.class);
67        replay(commandHandler);
68        ReplyTextBundleUtil.setReplyTextBundleIfAppropriate(commandHandler, resourceBundle1);
69        verify(commandHandler);         // expect no method calls
70    }
71
72    /**
73     * Test the setReplyTextBundleIfAppropriate() method, when the CommandHandler is null.
74     */
75    public void testSetReplyTextBundleIfAppropriate_NullCommandHandler() {
76        try {
77            ReplyTextBundleUtil.setReplyTextBundleIfAppropriate(null, resourceBundle1);
78            fail("Expected AssertFailedException");
79        }
80        catch (AssertFailedException expected) {
81            LOG.info("Expected: " + expected);
82        }
83    }
84
85    /**
86     * @see org.mockftpserver.test.AbstractTestCase#setUp()
87     */
88    protected void setUp() throws Exception {
89        super.setUp();
90
91        resourceBundle1 = new ListResourceBundle() {
92            protected Object[][] getContents() {
93                return null;
94            }
95        };
96
97        resourceBundle2 = new ListResourceBundle() {
98            protected Object[][] getContents() {
99                return new Object[][] { { "a", "b" } };
100            }
101        };
102    }
103
104}
105