package org.whispersystems.jobqueue; import android.test.AndroidTestCase; import org.whispersystems.jobqueue.jobs.PersistentTestJob; import org.whispersystems.jobqueue.jobs.RequirementTestJob; import org.whispersystems.jobqueue.jobs.TestJob; import org.whispersystems.jobqueue.persistence.JavaJobSerializer; import org.whispersystems.jobqueue.util.MockRequirement; import org.whispersystems.jobqueue.util.MockRequirementProvider; import org.whispersystems.jobqueue.util.PersistentMockRequirement; import org.whispersystems.jobqueue.util.PersistentRequirement; import org.whispersystems.jobqueue.util.PersistentResult; public class JobManagerTest extends AndroidTestCase { public void testTransientJobExecution() throws InterruptedException { TestJob testJob = new TestJob(); JobManager jobManager = new JobManager(getContext(), "transient-test", null, null, 1); jobManager.add(testJob); assertTrue(testJob.isAdded()); assertTrue(testJob.isRan()); } public void testTransientRequirementJobExecution() throws InterruptedException { MockRequirementProvider provider = new MockRequirementProvider(); MockRequirement requirement = new MockRequirement(false); TestJob testJob = new RequirementTestJob(requirement); JobManager jobManager = new JobManager(getContext(), "transient-requirement-test", provider, null, 1); jobManager.add(testJob); assertTrue(testJob.isAdded()); assertTrue(!testJob.isRan()); requirement.setPresent(true); provider.fireChange(); assertTrue(testJob.isRan()); } public void testPersistentJobExecuton() throws InterruptedException { PersistentMockRequirement requirement = new PersistentMockRequirement(); PersistentTestJob testJob = new PersistentTestJob(requirement); JobManager jobManager = new JobManager(getContext(), "persistent-requirement-test3", null, new JavaJobSerializer(getContext()), 1); PersistentResult.getInstance().reset(); PersistentRequirement.getInstance().setPresent(false); jobManager.add(testJob); assertTrue(PersistentResult.getInstance().isAdded()); assertTrue(!PersistentResult.getInstance().isRan()); PersistentRequirement.getInstance().setPresent(true); jobManager = new JobManager(getContext(), "persistent-requirement-test3", null, new JavaJobSerializer(getContext()), 1); assertTrue(PersistentResult.getInstance().isRan()); } public void testEncryptedJobExecuton() throws InterruptedException { EncryptionKeys keys = new EncryptionKeys("foobar"); PersistentMockRequirement requirement = new PersistentMockRequirement(); PersistentTestJob testJob = new PersistentTestJob(requirement, keys); JobManager jobManager = new JobManager(getContext(), "persistent-requirement-test4", null, new JavaJobSerializer(getContext()), 1); jobManager.setEncryptionKeys(keys); PersistentResult.getInstance().reset(); PersistentRequirement.getInstance().setPresent(false); jobManager.add(testJob); assertTrue(PersistentResult.getInstance().isAdded()); assertTrue(!PersistentResult.getInstance().isRan()); PersistentRequirement.getInstance().setPresent(true); jobManager = new JobManager(getContext(), "persistent-requirement-test4", null, new JavaJobSerializer(getContext()), 1); assertTrue(!PersistentResult.getInstance().isRan()); jobManager.setEncryptionKeys(keys); assertTrue(PersistentResult.getInstance().isRan()); } }