package com.laytonsmith.core;
import com.laytonsmith.PureUtilities.Common.FileUtil;
import java.io.File;
import java.util.concurrent.atomic.AtomicInteger;
import org.junit.After;
import org.junit.AfterClass;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
/**
*
*/
public class UpgradeLogTest {
public UpgradeLogTest() {
}
@BeforeClass
public static void setUpClass() {
}
@AfterClass
public static void tearDownClass() {
}
@Before
public void setUp() {
}
@After
public void tearDown() {
}
@Test
public void testOldTasksArentRun() throws Exception {
File log = new File("upgradeLogTestOldTasksArentRun");
FileUtil.write("[{\"upgradeTime\":\"1234\",\"breadcrumb\":\"task\"}]", log);
try{
UpgradeLog l = new UpgradeLog(log);
final AtomicInteger i = new AtomicInteger(0);
l.addUpgradeTask(new UpgradeLog.UpgradeTask() {
@Override
public boolean doRun() {
return false;
}
@Override
public void run() {
fail("This task should not run");
}
});
l.addUpgradeTask(new UpgradeLog.UpgradeTask() {
@Override
public boolean doRun() {
return !hasBreadcrumb("task");
}
@Override
public void run() {
fail("This task should not run");
}
});
l.addUpgradeTask(new UpgradeLog.UpgradeTask() {
@Override
public boolean doRun() {
return hasBreadcrumb("task");
}
@Override
public void run() {
i.incrementAndGet();
}
});
l.addUpgradeTask(new UpgradeLog.UpgradeTask() {
@Override
public boolean doRun() {
return true;
}
@Override
public void run() {
if(i.get() != 1){
fail("This task isn't sequential");
}
i.incrementAndGet();
}
});
l.addUpgradeTask(new UpgradeLog.UpgradeTask() {
@Override
public boolean doRun() {
return true;
}
@Override
public void run() {
leaveBreadcrumb("task2");
}
});
l.runTasks();
assertTrue(FileUtil.read(log).contains("task2"));
assertEquals(2, i.get());
} finally {
log.delete();
}
}
}