001package org.eclipse.aether.transfer;
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 static org.junit.Assert.*;
023
024import java.nio.ByteBuffer;
025
026import org.eclipse.aether.DefaultRepositorySystemSession;
027import org.eclipse.aether.RepositorySystemSession;
028import org.eclipse.aether.transfer.TransferEvent;
029import org.eclipse.aether.transfer.TransferResource;
030import org.junit.Test;
031
032/**
033 */
034public class TransferEventTest
035{
036
037    private static TransferResource res = new TransferResource( "none", "file://nil", "void", null, null );
038
039    private static RepositorySystemSession session = new DefaultRepositorySystemSession();
040
041    @Test
042    public void testByteArrayConversion()
043    {
044        byte[] buffer = new byte[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
045        int length = buffer.length - 2;
046        int offset = 1;
047
048        TransferEvent event = new TransferEvent.Builder( session, res ).setDataBuffer( buffer, offset, length ).build();
049
050        ByteBuffer bb = event.getDataBuffer();
051        byte[] dst = new byte[bb.remaining()];
052        bb.get( dst );
053
054        byte[] expected = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8 };
055        assertArrayEquals( expected, dst );
056    }
057
058    @Test
059    public void testRepeatableReadingOfDataBuffer()
060    {
061        byte[] data = { 0, 1, 2, 3, 4, 5, 6, 7 };
062        ByteBuffer buffer = ByteBuffer.wrap( data );
063
064        TransferEvent event = new TransferEvent.Builder( session, res ).setDataBuffer( buffer ).build();
065
066        assertEquals( 8, event.getDataLength() );
067
068        ByteBuffer eventBuffer = event.getDataBuffer();
069        assertNotNull( eventBuffer );
070        assertEquals( 8, eventBuffer.remaining() );
071
072        byte[] eventData = new byte[8];
073        eventBuffer.get( eventData );
074        assertArrayEquals( data, eventData );
075        assertEquals( 0, eventBuffer.remaining() );
076        assertEquals( 8, event.getDataLength() );
077
078        eventBuffer = event.getDataBuffer();
079        assertNotNull( eventBuffer );
080        assertEquals( 8, eventBuffer.remaining() );
081        eventBuffer.get( eventData );
082        assertArrayEquals( data, eventData );
083    }
084
085}