package ru.hflabs.rcd.task.performer; import org.testng.annotations.Test; import java.util.Date; import static org.testng.Assert.assertEquals; @Test public class TaskProgressHolderTest { private static void assertProgress(TaskProgressHolder actual, float expectedChild, float expectedRoot) { assertEquals(actual.currentProgress(), expectedChild); assertEquals(actual.totalProgress(), expectedRoot); } public void testRoot() { TaskProgressHolder holder = new TaskProgressHolder(new Date(), getClass().getSimpleName(), 2); assertProgress(holder, 0f, 0f); assertProgress(holder.nextStep(), 0.5f, 0.5f); assertProgress(holder.nextStep(), 1f, 1f); } public void testChild1() { TaskProgressHolder parent = new TaskProgressHolder(new Date(), getClass().getSimpleName(), 2); // sub task TaskProgressHolder child1 = new TaskProgressHolder(4, parent); { assertProgress(child1.nextStep(), 0.25f, 0.125f); assertProgress(child1.nextStep(), 0.5f, 0.25f); assertProgress(child1.nextStep(), 0.75f, 0.375f); assertProgress(child1.nextStep(), 1.0f, 0.5f); } // next step assertProgress(parent, 0.5f, 0.5f); } public void testChild2() { TaskProgressHolder parent = new TaskProgressHolder(new Date(), getClass().getSimpleName(), 2); assertProgress(parent.nextStep(), 0.5f, 0.5f); // first sub task TaskProgressHolder child1 = new TaskProgressHolder(4, parent); { assertProgress(child1.nextStep(), 0.25f, 0.625f); } // second sub task { TaskProgressHolder child2 = new TaskProgressHolder(4, child1); { assertProgress(child2.nextStep(), 0.25f, 0.65625f); assertProgress(child2.nextStep(), 0.5f, 0.6875f); assertProgress(child2.nextStep(), 0.75f, 0.71875f); assertProgress(child2.nextStep(), 1.0f, 0.75f); } } // first sub task { assertProgress(child1.nextStep(), 0.5f, 0.75f); } assertProgress(parent, 0.75f, 0.75f); } }