001package org.apache.maven.wagon.events;
002
003/*
004 * Licensed to the Apache Software Foundation (ASF) under one
005 * or more contributor license agreements.  See the NOTICE file
006 * distributed with this work for additional information
007 * regarding copyright ownership.  The ASF licenses this file
008 * to you under the Apache License, Version 2.0 (the
009 * "License"); you may not use this file except in compliance
010 * with the License.  You may obtain a copy of the License at
011 *
012 *   http://www.apache.org/licenses/LICENSE-2.0
013 *
014 * Unless required by applicable law or agreed to in writing,
015 * software distributed under the License is distributed on an
016 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
017 * KIND, either express or implied.  See the License for the
018 * specific language governing permissions and limitations
019 * under the License.
020 */
021
022import junit.framework.TestCase;
023import org.apache.maven.wagon.Wagon;
024import org.easymock.MockControl;
025
026/**
027 * @author <a href="michal.maczka@dimatics.com">Michal Maczka</a>
028 * @version $Id: TransferEventSupportTest.java,v 1.2 2003/11/16 12:41:02 michal
029 *          Exp $
030 */
031public class TransferEventSupportTest
032    extends TestCase
033{
034    private TransferEventSupport eventSupport;
035
036    private MockControl wagonMockControl;
037    
038    private Wagon wagon;
039
040    /**
041     * @see junit.framework.TestCase#setUp()
042     */
043    protected void setUp()
044        throws Exception
045    {
046        super.setUp();
047        
048        eventSupport = new TransferEventSupport();
049        
050        // TODO: actually test it gets called?
051        wagonMockControl = MockControl.createControl( Wagon.class );
052        
053        wagon = (Wagon) wagonMockControl.getMock();
054    }
055
056    public void testTransferListenerRegistration()
057    {
058        final TransferListenerMock mock1 = new TransferListenerMock();
059        eventSupport.addTransferListener( mock1 );
060
061        assertTrue( eventSupport.hasTransferListener( mock1 ) );
062        final TransferListenerMock mock2 = new TransferListenerMock();
063
064        assertFalse( eventSupport.hasTransferListener( mock2 ) );
065
066        eventSupport.addTransferListener( mock2 );
067
068        assertTrue( eventSupport.hasTransferListener( mock1 ) );
069        assertTrue( eventSupport.hasTransferListener( mock2 ) );
070
071        eventSupport.removeTransferListener( mock2 );
072
073        assertTrue( eventSupport.hasTransferListener( mock1 ) );
074        assertFalse( eventSupport.hasTransferListener( mock2 ) );
075
076        eventSupport.removeTransferListener( mock1 );
077        assertFalse( eventSupport.hasTransferListener( mock1 ) );
078    }
079
080    public void testFireTransferStarted()
081    {
082        final TransferListenerMock mock1 = new TransferListenerMock();
083        eventSupport.addTransferListener( mock1 );
084
085        final TransferListenerMock mock2 = new TransferListenerMock();
086        eventSupport.addTransferListener( mock2 );
087
088        final TransferEvent event = getEvent( wagon );
089
090        eventSupport.fireTransferStarted( event );
091
092        assertTrue( mock1.isTransferStartedCalled() );
093        assertTrue( mock2.isTransferStartedCalled() );
094        assertEquals( event, mock1.getTransferEvent() );
095        assertEquals( event, mock2.getTransferEvent() );
096
097    }
098
099    public void testFireTransferProgress()
100    {
101        final TransferListenerMock mock1 = new TransferListenerMock();
102
103        eventSupport.addTransferListener( mock1 );
104
105        final TransferListenerMock mock2 = new TransferListenerMock();
106
107        eventSupport.addTransferListener( mock2 );
108
109        final TransferEvent event = getEvent( wagon );
110
111        // TODO: should be testing the buffer
112        eventSupport.fireTransferProgress( event, null, 0 );
113
114        assertTrue( mock1.isTransferProgressCalled() );
115
116        assertTrue( mock2.isTransferProgressCalled() );
117
118        assertEquals( event, mock1.getTransferEvent() );
119
120        assertEquals( event, mock2.getTransferEvent() );
121    }
122
123    public void testFireTransferCompleted()
124    {
125        final TransferListenerMock mock1 = new TransferListenerMock();
126
127        eventSupport.addTransferListener( mock1 );
128
129        final TransferListenerMock mock2 = new TransferListenerMock();
130
131        eventSupport.addTransferListener( mock2 );
132
133        final TransferEvent event = getEvent( wagon );
134
135        eventSupport.fireTransferCompleted( event );
136
137        assertTrue( mock1.isTransferCompletedCalled() );
138
139        assertTrue( mock2.isTransferCompletedCalled() );
140
141        assertEquals( event, mock1.getTransferEvent() );
142
143        assertEquals( event, mock2.getTransferEvent() );
144
145    }
146
147    public void testFireTransferError()
148    {
149        final TransferListenerMock mock1 = new TransferListenerMock();
150
151        eventSupport.addTransferListener( mock1 );
152
153        final TransferListenerMock mock2 = new TransferListenerMock();
154
155        eventSupport.addTransferListener( mock2 );
156
157        final TransferEvent event = getEvent( wagon );
158
159        eventSupport.fireTransferError( event );
160
161        assertTrue( mock1.isTransferErrorCalled() );
162
163        assertTrue( mock2.isTransferErrorCalled() );
164
165        assertEquals( event, mock1.getTransferEvent() );
166
167        assertEquals( event, mock2.getTransferEvent() );
168
169    }
170
171    public void testFireDebug()
172    {
173        final TransferListenerMock mock1 = new TransferListenerMock();
174
175        eventSupport.addTransferListener( mock1 );
176
177        final TransferListenerMock mock2 = new TransferListenerMock();
178
179        eventSupport.addTransferListener( mock2 );
180
181        eventSupport.fireDebug( "mm" );
182
183        assertTrue( mock1.isDebugCalled() );
184
185        assertTrue( mock2.isDebugCalled() );
186
187        assertEquals( "mm", mock1.getDebugMessage() );
188
189        assertEquals( "mm", mock2.getDebugMessage() );
190
191    }
192
193    private TransferEvent getEvent( final Wagon wagon )
194    {
195        final TransferEvent event = new TransferEvent( wagon, null, TransferEvent.TRANSFER_COMPLETED,
196                                                       TransferEvent.REQUEST_GET );
197        return event;
198    }
199
200}