/*******************************************************************************
* Copyright (c) 2008, 2011 Thomas Holland (thomas@innot.de) and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Thomas Holland - initial API and implementation
*******************************************************************************/
/**
*
*/
package de.innot.avreclipse.core.paths;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.io.File;
import org.junit.Test;
import de.innot.avreclipse.core.paths.AVRPathManager.SourceType;
/**
* @author U043192
*
*/
public class AVRPathManagerTest {
/**
* Test method for {@link de.innot.avreclipse.core.paths.AVRPath}.
*/
@Test
public void testAVRPath() {
// Get all supported enum values
AVRPath[] allpaths = AVRPath.values();
assertTrue(allpaths.length > 4);
for (AVRPath current : allpaths) {
assertTrue(current.getName().length() > 1);
assertTrue(current.getDescription().length() > 1);
assertTrue(current.getTest().length() > 1);
}
}
/**
* Test method for {@link de.innot.avreclipse.core.paths.AVRPathProvider}.
*/
@Test
public void testAVRPathProvider() {
// Get all supported enum values
AVRPath[] allpaths = AVRPath.values();
for (AVRPath current : allpaths) {
IPathProvider provider = new AVRPathProvider(current);
assertNotNull(provider.getPath());
File file = provider.getPath().toFile();
if (!current.isOptional()) {
assertTrue(current.getName(), file.canRead());
assertTrue(current.getName(), file.isDirectory());
}
}
}
/**
* Test method for {@link de.innot.avreclipse.core.paths.AVRPathProvider}.
*/
@Test
public void testAVRPathManager() {
AVRPathManager manager = new AVRPathManager(AVRPath.AVRGCC);
assertTrue(manager.getName() + " invalid", manager.isValid());
// Test Default and System Paths
assertNotNull(manager.getDefaultPath());
assertFalse("".equals(manager.getDefaultPath().toString()));
assertFalse("".equals(manager.getSystemPath(true).toString()));
assertFalse("".equals(manager.getSystemPath(false).toString()));
}
/**
* Test method for {@link de.innot.avreclipse.core.paths.AVRPathProvider.isValid}.
*/
@Test
public void testIsValid() {
// Test a required Path
AVRPathManager manager = new AVRPathManager(AVRPath.AVRGCC);
assertTrue(manager.isValid());
// empty paths not allowed
manager.setPath("", SourceType.Custom);
assertFalse(manager.isValid());
// Test an optional path
manager = new AVRPathManager(AVRPath.PDFPATH);
assertTrue(manager.isValid());
// empty paths allowed
manager.setPath("", SourceType.Custom);
assertTrue(manager.isValid());
}
/**
* Test method for {@link de.innot.avreclipse.core.paths.AVRPathProvider.setPath}.
*/
@Test
public void testSetPath() {
AVRPathManager manager = new AVRPathManager(AVRPath.MAKE);
manager.setPath("foo/bar", SourceType.Custom);
assertFalse(manager.isValid());
assertTrue("foo/bar".equals(manager.getPath().toString()));
manager.setPath(null, SourceType.System);
assertTrue(manager.isValid());
manager.setToDefault();
assertTrue(manager.isValid());
assertTrue(manager.getPath().equals(manager.getDefaultPath()));
// Test value propagation
IPathProvider provider = new AVRPathProvider(AVRPath.MAKE);
manager.setPath("bar-baz", SourceType.Custom);
assertFalse("bar-baz".equals(provider.getPath().toString()));
manager.store();
assertTrue("bar-baz".equals(provider.getPath().toString()));
// cleanup
manager.setToDefault();
manager.store();
assertTrue(provider.getPath().equals(manager.getDefaultPath()));
}
/**
* Test method for {@link de.innot.avreclipse.core.paths.AVRPathProvider.clone}.
*/
@Test
public void testClone() {
AVRPathManager manager = new AVRPathManager(AVRPath.AVRINCLUDE);
AVRPathManager clone = new AVRPathManager(manager);
assertTrue(manager.getPath().equals(clone.getPath()));
assertTrue(manager.getSourceType().equals(clone.getSourceType()));
clone.setPath("foo/bar", SourceType.Custom);
assertFalse(manager.getPath().equals(clone.getPath()));
assertFalse(manager.getSourceType().equals(clone.getSourceType()));
}
}