package be.nikiroo.utils.test;
import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
import be.nikiroo.utils.IOUtils;
import be.nikiroo.utils.resources.Bundle;
import be.nikiroo.utils.resources.Bundles;
import be.nikiroo.utils.resources.Meta;
-public class BundleTest extends TestLauncher {
+class BundleTest extends TestLauncher {
private File tmp;
private B b = new B();
- protected boolean isMain() {
- return true;
- }
-
public BundleTest(String[] args) {
this("Bundle test", args);
}
protected BundleTest(String name, String[] args) {
super(name, args);
- addTests();
-
- if (isMain()) {
- addSeries(new BundleTest("After saving/reloading the resources",
- args) {
- @Override
- protected void start() throws Exception {
- tmp = File.createTempFile("nikiroo-utils", ".test");
- tmp.delete();
- tmp.mkdir();
- b.updateFile(tmp.getAbsolutePath());
- Bundles.setDirectory(tmp.getAbsolutePath());
- b.reload();
- }
+ for (TestCase test : getSimpleTests()) {
+ addTest(test);
+ }
- @Override
- protected void stop() {
- IOUtils.deltree(tmp);
+ addSeries(new TestLauncher("After saving/reloading the resources", args) {
+ {
+ for (TestCase test : getSimpleTests()) {
+ addTest(test);
}
+ }
- @Override
- protected boolean isMain() {
- return false;
- }
- });
- }
+ @Override
+ protected void start() throws Exception {
+ tmp = File.createTempFile("nikiroo-utils", ".test");
+ tmp.delete();
+ tmp.mkdir();
+ b.updateFile(tmp.getAbsolutePath());
+ Bundles.setDirectory(tmp.getAbsolutePath());
+ b.reload(false);
+ }
+
+ @Override
+ protected void stop() {
+ IOUtils.deltree(tmp);
+ }
+ });
+
+ addSeries(new TestLauncher("Read/Write support", args) {
+ {
+ addTest(new TestCase("Reload") {
+ @Override
+ public void test() throws Exception {
+ String def = b.getString(E.ONE);
+ String val = "Something";
+
+ b.setString(E.ONE, val);
+ b.updateFile();
+ b.reload(true);
+
+ assertEquals("We should have reset the bundle", def,
+ b.getString(E.ONE));
+
+ b.reload(false);
+
+ assertEquals("We should have reloaded the same files",
+ val, b.getString(E.ONE));
+
+ // reset values for next tests
+ b.reload(true);
+ b.updateFile();
+ }
+ });
+
+ addTest(new TestCase("Set/Get") {
+ @Override
+ public void test() throws Exception {
+ String val = "Newp";
+ b.setString(E.ONE, val);
+ String setGet = b.getString(E.ONE);
+
+ assertEquals(val, setGet);
+
+ // reset values for next tests
+ b.restoreSnapshot(null);
+ }
+ });
+
+ addTest(new TestCase("Snapshots") {
+ @Override
+ public void test() throws Exception {
+ String val = "Newp";
+ String def = b.getString(E.ONE);
+
+ b.setString(E.ONE, val);
+ Object snap = b.takeSnapshot();
+
+ b.restoreSnapshot(null);
+ assertEquals(
+ "restoreChanges(null) should clear the changes",
+ def, b.getString(E.ONE));
+ b.restoreSnapshot(snap);
+ assertEquals(
+ "restoreChanges(snapshot) should restore the changes",
+ val, b.getString(E.ONE));
+
+ // reset values for next tests
+ b.restoreSnapshot(null);
+ }
+ });
+
+ addTest(new TestCase("updateFile with changes") {
+ @Override
+ public void test() throws Exception {
+ String val = "Go to disk! (UTF-8 test: 日本語)";
+
+ String def = b.getString(E.ONE);
+ b.setString(E.ONE, val);
+ b.updateFile(tmp.getAbsolutePath());
+ b.reload(false);
+
+ assertEquals(val, b.getString(E.ONE));
+
+ // reset values for next tests
+ b.setString(E.ONE, def);
+ b.updateFile(tmp.getAbsolutePath());
+ b.reload(false);
+ }
+ });
+ }
+
+ @Override
+ protected void start() throws Exception {
+ tmp = File.createTempFile("nikiroo-utils", ".test");
+ tmp.delete();
+ tmp.mkdir();
+ b.updateFile(tmp.getAbsolutePath());
+ Bundles.setDirectory(tmp.getAbsolutePath());
+ b.reload(false);
+ }
+
+ @Override
+ protected void stop() {
+ IOUtils.deltree(tmp);
+ }
+ });
}
- private void addTests() {
+ private List<TestCase> getSimpleTests() {
String pre = "";
- addTest(new TestCase(pre + "getString simple") {
+ List<TestCase> list = new ArrayList<TestCase>();
+
+ list.add(new TestCase(pre + "getString simple") {
@Override
public void test() throws Exception {
assertEquals("un", b.getString(E.ONE));
}
});
- addTest(new TestCase(pre + "getStringX with null suffix") {
+ list.add(new TestCase(pre + "getStringX with null suffix") {
@Override
public void test() throws Exception {
assertEquals("un", b.getStringX(E.ONE, null));
}
});
- addTest(new TestCase(pre + "getStringX with empty suffix") {
+ list.add(new TestCase(pre + "getStringX with empty suffix") {
@Override
public void test() throws Exception {
assertEquals(null, b.getStringX(E.ONE, ""));
}
});
- addTest(new TestCase(pre + "getStringX with existing suffix") {
+ list.add(new TestCase(pre + "getStringX with existing suffix") {
@Override
public void test() throws Exception {
assertEquals("un + suffix", b.getStringX(E.ONE, "suffix"));
}
});
- addTest(new TestCase(pre + "getStringX with not existing suffix") {
+ list.add(new TestCase(pre + "getStringX with not existing suffix") {
@Override
public void test() throws Exception {
assertEquals(null, b.getStringX(E.ONE, "fake"));
}
});
- addTest(new TestCase(pre + "getString with UTF-8 content") {
+ list.add(new TestCase(pre + "getString with UTF-8 content") {
@Override
public void test() throws Exception {
assertEquals("日本語 Nihongo", b.getString(E.JAPANESE));
}
});
+
+ return list;
}
/**
*/
private class B extends Bundle<E> {
protected B() {
- super(E.class, N.bundle_test);
+ super(E.class, N.bundle_test, null);
}
+ @Override
+ // ...and make it public
+ public Object takeSnapshot() {
+ return super.takeSnapshot();
+ }
+
+ @Override
+ // ...and make it public
+ public void restoreSnapshot(Object snap) {
+ super.restoreSnapshot(snap);
+ }
}
/**
* @author niki
*/
private enum E {
- @Meta(what = "", where = "", format = "", info = "")
+ @Meta
ONE, //
- @Meta(what = "", where = "", format = "", info = "")
+ @Meta
ONE_SUFFIX, //
- @Meta(what = "", where = "", format = "", info = "")
+ @Meta
TWO, //
- @Meta(what = "", where = "", format = "", info = "")
+ @Meta
JAPANESE
}