001    package org.hackystat.sensor.xmldata.option;
002    
003    import java.io.File;
004    import java.util.ArrayList;
005    import java.util.List;
006    
007    import org.hackystat.sensor.xmldata.XmlDataController;
008    import org.junit.Assert;
009    import org.junit.Test;
010    
011    /**
012     * Tests if the FileOption operates as intended.
013     * @author aito
014     * 
015     */
016    public class TestFileOption {
017      /** Tests if isValid returns false when no arguments are specified. */
018      @Test
019      public void testNoFileArguments() {
020        XmlDataController controller = new XmlDataController();
021        Option fileOption = OptionFactory.getInstance(controller, FileOption.OPTION_NAME,
022            new ArrayList<String>());
023        Assert.assertFalse("A file option should have at least 1 file argument.", fileOption
024            .isValid());
025      }
026    
027      /** Tests if isValid returns true if one file is specified. */
028      @Test
029      public void testOneFileArgument() {
030        XmlDataController controller = new XmlDataController();
031        List<String> parameters = new ArrayList<String>();
032        String testPackage = "src/org/hackystat/sensor/xmldata/testdataset/";
033        File testFile = new File(System.getProperty("user.dir"), testPackage + "testdata.xml");
034        parameters.add(testFile.toString());
035        Option fileOption = OptionFactory.getInstance(controller, FileOption.OPTION_NAME,
036            parameters);
037        Assert.assertTrue("A file option with one file should be valid.", fileOption.isValid());
038      }
039    
040      /** Tests if isValid returns true if more than one file is specified. */
041      @Test
042      public void testMultipleFileArguments() {
043        XmlDataController controller = new XmlDataController();
044        List<String> parameters = new ArrayList<String>();
045        String testPackage = "src/org/hackystat/sensor/xmldata/testdataset/";
046        File testFile1 = new File(System.getProperty("user.dir"), testPackage + "testdata.xml");
047        File testFile2 = new File(System.getProperty("user.dir"), testPackage + "testdata2.xml");
048        parameters.add(testFile1.toString());
049        parameters.add(testFile2.toString());
050        Option fileOption = OptionFactory.getInstance(controller, FileOption.OPTION_NAME,
051            parameters);
052        Assert.assertTrue("A file option with more than one file should be valid.", fileOption
053            .isValid());
054      }
055    
056      /** Tests if isValid returns false if a non-existant file is specified. */
057      @Test
058      public void testNonExistantFile() {
059        XmlDataController controller = new XmlDataController();
060        List<String> parameters = new ArrayList<String>();
061        parameters.add("Test.xml");
062        Option fileOption = OptionFactory.getInstance(controller, FileOption.OPTION_NAME,
063            parameters);
064        Assert.assertFalse("A non-existant file should invalidate this option.", fileOption
065            .isValid());
066      }
067    }