Package com.pugh.sockso.music.indexing

Source Code of com.pugh.sockso.music.indexing.BaseIndexerTest

package com.pugh.sockso.music.indexing;

import com.pugh.sockso.tests.SocksoTestCase;
import com.pugh.sockso.tests.TestDatabase;

import java.io.File;
import java.io.FileFilter;

import java.sql.SQLException;
import java.sql.Date;

public class BaseIndexerTest extends SocksoTestCase implements IndexListener {

    private BaseIndexer indexer;
    private IndexEvent indexEvent;
    private TestDatabase db;

    @Override
    public void setUp() throws Exception {
        db = new TestDatabase();
        indexer = new TrackIndexer( db );
        indexer.addIndexListener( this );
        indexEvent = null;
    }

    @Override
    public void tearDown() {
        indexer = null;
    }

    public void indexChanged( final IndexEvent evt ) {
        indexEvent = evt;
    }

    public void testCheckExists() throws Exception {

        final File exists = new File( "./build.xml" );
        final File doesntExist = new File( "/this/does/not/exist/i/hope" );

        indexEvent = null;
        assertTrue( indexer.checkExists(exists,1) );
        assertNull( indexEvent );

        indexEvent = null;
        assertFalse( indexer.checkExists(doesntExist,1) );
        assertNotNull( indexEvent );
        assertEquals( indexEvent.getType(), IndexEvent.Type.MISSING );

    }
   
    public void testCheckModified() throws SQLException {

        final File exists = new File( "./build.xml" );
        final Date noChange = new Date( exists.lastModified() );
        final Date hasChange = new Date( exists.lastModified() - 1000 );

        indexEvent = null;
        assertFalse( indexer.checkModified( exists, 1, noChange, Indexer.ScanFilter.MODIFICATION_DATE ) );
        assertNull( indexEvent );

        indexEvent = null;
        assertTrue( indexer.checkModified( exists, 134, hasChange, Indexer.ScanFilter.MODIFICATION_DATE ) );
        assertNotNull( indexEvent );
        assertEquals( indexEvent.getType(), IndexEvent.Type.CHANGED );
        assertEquals( indexEvent.getFileId(), 134 );

        indexEvent = null;
        assertTrue( indexer.checkModified( exists, 143, hasChange, Indexer.ScanFilter.MODIFICATION_DATE ) );
        assertNotNull( indexEvent );
        assertEquals( indexEvent.getType(), IndexEvent.Type.CHANGED );
        assertEquals( indexEvent.getFileId(), 143 );

    }

    public void testMarkFileModified() throws Exception {

        db.update( " delete from indexer where id = -1" );

        assertTrue( indexer.markFileModified(-1,0) ); // new file
        assertTrue( indexer.markFileModified(-1,1) ); // update existing

    }

    public void testScanDirectory() throws Exception {

        final BaseIndexer i = new TrackIndexer( null );
        final File newFile = new File( "/not/in/collecsstion.mp3" );

        i.addIndexListener( this );

        final File dir = new File( "" ) {
            @Override
            public boolean canRead() {
                return true;
            }
            @Override
            public boolean exists() {
                return true;
            }
            @Override
            public File[] listFiles( final FileFilter filter ) {
                return new File[] { newFile };
            }
        };

        indexEvent = null;
        i.scan( 123, dir );
        assertNotNull( indexEvent );
        assertTrue( indexEvent.getFile().getAbsolutePath().equals( newFile.getAbsolutePath() ) );
        assertEquals( indexEvent.getFileId(), 123 );
        assertEquals( indexEvent.getType(), IndexEvent.Type.UNKNOWN );

    }

    public void testUpdateCache() throws Exception {
       
        indexer.updateCache();
       
    }

    public void testCompleteEventFiredAfterScan() {
        final Indexer i = new TrackIndexer( new TestDatabase() );
        i.addIndexListener( this );
        i.scan();
        assertEquals( IndexEvent.Type.COMPLETE, this.indexEvent.getType() );
    }

}
TOP

Related Classes of com.pugh.sockso.music.indexing.BaseIndexerTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.