package com.mastfrog.giulius;
import com.mastfrog.giulius.Dependencies;
import com.mastfrog.giulius.DependenciesBuilder;
import com.mastfrog.guicy.annotations.Defaults;
import com.mastfrog.guicy.annotations.Namespace;
import com.mastfrog.settings.Settings;
import com.mastfrog.settings.SettingsBuilder;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;
import org.junit.Test;
import static org.junit.Assert.*;
import org.junit.Before;
/**
*
* @author tim
*/
@Defaults(namespace=@Namespace("hoo"), value="foo=whuz\nchortle=buzz")
public class DependencyLocationsTest {
File dir = new File(new File(System.getProperty("java.io.tmpdir")), getClass().getName() + "_" + System.currentTimeMillis());
File hooProps = new File(dir, "hoo" + SettingsBuilder.DEFAULT_EXTENSION);
File defProps = new File(dir, SettingsBuilder.DEFAULT_NAMESPACE + SettingsBuilder.DEFAULT_EXTENSION);
File genDefProps = new File(dir, SettingsBuilder.GENERATED_PREFIX + "hoo" + SettingsBuilder.DEFAULT_EXTENSION);
@Before
public void setUp() throws IOException {
System.setProperty(SettingsBuilder.class.getName() + ".log", "true");
System.setProperty(Dependencies.class.getName() + ".log", "true");
System.setProperty(Settings.class.getName() + ".log", "true");
dir.mkdirs();
hooProps = new File(dir, "hoo" + SettingsBuilder.DEFAULT_EXTENSION);
defProps = new File(dir, SettingsBuilder.DEFAULT_NAMESPACE + SettingsBuilder.DEFAULT_EXTENSION);
genDefProps = new File(dir, SettingsBuilder.GENERATED_PREFIX + "hoo" + SettingsBuilder.DEFAULT_EXTENSION);
assertTrue(hooProps.createNewFile());
assertTrue(defProps.createNewFile());
assertTrue(genDefProps.createNewFile());
System.out.println("Create " + hooProps);
System.out.println("Create " + defProps);
System.out.println("Create " + genDefProps);
Properties fpp = new Properties();
Properties dpp = new Properties();
Properties gpp = new Properties();
fpp.setProperty("hoo", "bar");
dpp.setProperty("hoo", "ugg");
gpp.setProperty("hoo", "goo");
fpp.setProperty("stuff", "moo");
dpp.setProperty("werg", "gweez");
gpp.setProperty("mab", "pladge");
store(fpp, hooProps);
store(dpp, defProps);
store(gpp, genDefProps);
}
@Test
public void test() throws IOException {
DependenciesBuilder b = new DependenciesBuilder();
b.addDefaultLocation(dir);
b.addNamespace("hoo");
b.addDefaultSettings();
System.out.println("BUILDER:\n" + b);
Dependencies deps = b.build();
Settings hooNs = deps.getSettings("hoo");
assertNotNull(hooNs);
Settings def = deps.getSettings(Namespace.DEFAULT);
assertNotNull(def);
assertEquals ("bar", hooNs.getString("hoo"));
assertEquals ("moo", hooNs.getString("stuff"));
assertEquals ("ugg", def.getString("hoo"));
assertEquals ("buzz", hooNs.getString("chortle"));
}
private void store(Properties properties, File file) throws IOException {
try (FileOutputStream out = new FileOutputStream(file)) {
properties.store(out, "x");
}
}
}