Skip to content
Snippets Groups Projects
ProjectPropertyTest.java 4.6 KiB
Newer Older
  • Learn to ignore specific revisions
  • tcarver's avatar
    tcarver committed
    /* 
     * This file is part of Artemis
     *
     * Copyright (C) 2013  Genome Research Limited
     *
     * This program is free software; you can redistribute it and/or
     * modify it under the terms of the GNU General Public License
     * as published by the Free Software Foundation; either version 2
     * of the License, or (at your option) any later version.
     *
     * This program is distributed in the hope that it will be useful,
     * but WITHOUT ANY WARRANTY; without even the implied warranty of
     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     * GNU General Public License for more details.
     *
     * You should have received a copy of the GNU General Public License
     * along with this program; if not, write to the Free Software
     * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
     *
     */
    package uk.ac.sanger.artemis.components;
    
    import static org.junit.Assert.assertTrue;
    
    import org.junit.Before;
    import org.junit.Test;
    
    import java.awt.GraphicsEnvironment;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.HashMap;
    import java.util.Properties;
    
    
    /**
     * Tests for loading and writing project properties for
     * Artemis.
     */
    
    tcarver's avatar
    tcarver committed
    public class ProjectPropertyTest
    {
      private HashMap<String, HashMap<String, String>> projects;
    
    tcarver's avatar
    tcarver committed
      
      /**
       * Load the test properties
       */
    
    tcarver's avatar
    tcarver committed
      @Before
      public void loadProperties()
      {
        InputStream ins = 
            this.getClass().getClassLoader().getResourceAsStream("data/project.properties");
        
        try
        {
          final Properties projectProps = new Properties();
          projectProps.load(ins);
          ins.close();
          projects = ProjectProperty.getProjectMap(projectProps);
        }
        catch (IOException e)
        {
          org.junit.Assert.fail(e.getMessage());
        }
      }
      
    
    tcarver's avatar
    tcarver committed
      /**
       * Test contents of hash for Styphi
       */
    
    tcarver's avatar
    tcarver committed
      @Test
      public void projectContent1()
      {
        // ignore if in headless mode with no x11
        if(GraphicsEnvironment.getLocalGraphicsEnvironment().isHeadless())
          return;
    
        assertTrue("Styphi project",  projects.containsKey("Styphi"));
        if(projects.containsKey("Styphi"))
        {
          HashMap<String, String> thisProject = projects.get("Styphi");
          assertTrue("Styphi project sequence",  thisProject.containsKey("sequence"));
          assertTrue("Styphi project annotation",  thisProject.containsKey("annotation"));
        }
      }
      
    
    tcarver's avatar
    tcarver committed
      /**
       * Test contents of hash for PF3D7
       */
    
    tcarver's avatar
    tcarver committed
      @Test
      public void projectContent2()
      {
        // ignore if in headless mode with no x11
        if(GraphicsEnvironment.getLocalGraphicsEnvironment().isHeadless())
          return;
    
        assertTrue("PF3D7 project",  projects.containsKey("PF3D7"));
        if(projects.containsKey("PF3D7"))
        {
          HashMap<String, String> thisProject = projects.get("PF3D7");
          assertTrue("Styphi project sequence",  thisProject.containsKey("sequence"));
          assertTrue("Styphi project bam",  thisProject.containsKey("bam"));
        }
      }
    
    tcarver's avatar
    tcarver committed
    
    
    tcarver's avatar
    tcarver committed
      @Test
      public void launch()
      {
        // ignore if in headless mode with no x11
        if(GraphicsEnvironment.getLocalGraphicsEnvironment().isHeadless())
          return;
    
        try
        {
          ProjectProperty pp = new ProjectProperty();
        }
        catch(Exception e)
        {
          org.junit.Assert.fail(e.getMessage());
        }
      }
      
    
    tcarver's avatar
    tcarver committed
      /**
       * Test writing and reading of the fields in the
       * properties file
       */
    
    tcarver's avatar
    tcarver committed
      @Test
      public void writeAndReadProperties()
      {
        // ignore if in headless mode with no x11
        if(GraphicsEnvironment.getLocalGraphicsEnvironment().isHeadless())
          return;
    
        try
        {
          final File tmpFile = File.createTempFile("artemis.props", ".tmp");
          ProjectProperty.writeProperties(tmpFile, projects);
          
          final InputStream ins = new FileInputStream(tmpFile);
          final Properties projectProps = new Properties();
          projectProps.load(ins);
          ins.close();
          final HashMap<String, HashMap<String, String>>
             tmpProjects = ProjectProperty.getProjectMap(projectProps);
          
          for (String p: projects.keySet())
          {
            assertTrue("Contains "+p,  tmpProjects.containsKey(p));
            
            HashMap<String, String> props = projects.get(p);
            HashMap<String, String> tmpProps = tmpProjects.get(p);
            for(final String key: props.keySet())
            {
              // test property key (e.g. title, sequence, bam)
              assertTrue("Contains property "+key,  tmpProps.containsKey(key));
              
              // test values
              assertTrue("Contains property "+key+" = "+props.get(key), 
                  props.get(key).equals(tmpProps.get(key)));
            }
          }
        }
        catch(IOException e)
        {
          org.junit.Assert.fail(e.getMessage());
        }
    
      }
      
    }