@Test public void testWriteToBundle_requiredNetwork() { Map<Integer, Integer> mapping = new HashMap<>(); mapping.put(Constraint.ON_ANY_NETWORK, GooglePlayJobWriter.LEGACY_NETWORK_CONNECTED); mapping.put(Constraint.ON_UNMETERED_NETWORK, GooglePlayJobWriter.LEGACY_NETWORK_UNMETERED); mapping.put(0, GooglePlayJobWriter.LEGACY_NETWORK_ANY); for (Entry<Integer, Integer> testCase : mapping.entrySet()) { @SuppressWarnings("WrongConstant") Bundle b = writer.writeToBundle( initializeDefaultBuilder().setConstraints(testCase.getKey()).build(), new Bundle()); assertEquals("requiredNetwork", (int) testCase.getValue(), b.getInt("requiredNetwork")); } }
@Test public void testWriteToBundle_requiresCharging() { assertTrue( "requiresCharging", writer .writeToBundle( initializeDefaultBuilder().setConstraints(Constraint.DEVICE_CHARGING).build(), new Bundle()) .getBoolean("requiresCharging")); for (Integer constraint : Arrays.asList(Constraint.ON_ANY_NETWORK, Constraint.ON_UNMETERED_NETWORK)) { assertFalse( "requiresCharging", writer .writeToBundle( initializeDefaultBuilder().setConstraints(constraint).build(), new Bundle()) .getBoolean("requiresCharging")); } }
@Test public void testWriteToBundle_requiresIdle() { assertTrue( "requiresIdle", writer .writeToBundle( initializeDefaultBuilder().setConstraints(Constraint.DEVICE_IDLE).build(), new Bundle()) .getBoolean("requiresIdle")); for (Integer constraint : Arrays.asList(Constraint.ON_ANY_NETWORK, Constraint.ON_UNMETERED_NETWORK)) { assertFalse( "requiresIdle", writer .writeToBundle( initializeDefaultBuilder().setConstraints(constraint).build(), new Bundle()) .getBoolean("requiresIdle")); } }
.setConstraints(Constraint.ON_ANY_NETWORK)
.setConstraints(Constraint.ON_ANY_NETWORK)
.setConstraints(Constraint.ON_ANY_NETWORK)
.setConstraints(Constraint.ON_ANY_NETWORK)
.setConstraints(Constraint.ON_ANY_NETWORK)
.setConstraints(Constraint.ON_ANY_NETWORK)
.setConstraints(Constraint.ON_ANY_NETWORK)
.setConstraints(Constraint.DEVICE_CHARGING)
.setConstraints(Constraint.ON_ANY_NETWORK)
.setConstraints(Constraint.ON_ANY_NETWORK)
.setConstraints(Constraint.ON_ANY_NETWORK)
dispatcher .newJobBuilder() .setConstraints(Constraint.DEVICE_CHARGING) .setService(TestJobService.class) .setTrigger(Trigger.executionWindow(0, 60))
.setReplaceCurrent(replaceCurrent) .setRecurring(recurring) .setConstraints(toIntArray(constraintList)) .setLifetime(lifetime) .setTrigger(trigger)
@Test public void testSchedule_failsWhenPlayServicesIsUnavailable() throws Exception { markBackendUnavailable(); mockPackageManagerInfo(); Job job = null; try { job = dispatcher .newJobBuilder() .setService(TestJobService.class) .setTag("foobar") .setConstraints(Constraint.DEVICE_CHARGING) .setTrigger(Trigger.executionWindow(0, 60)) .build(); } catch (ValidationEnforcer.ValidationException ve) { fail(TextUtils.join("\n", ve.getErrors())); } assertEquals( "Expected schedule() request to fail when backend is unavailable", FirebaseJobDispatcher.SCHEDULE_RESULT_NO_DRIVER_AVAILABLE, dispatcher.schedule(job)); }
@Test public void testWriteToBundle_unmeteredConstraintShouldTakePrecendence() { Bundle b = writer.writeToBundle( initializeDefaultBuilder() .setConstraints(Constraint.ON_ANY_NETWORK, Constraint.ON_UNMETERED_NETWORK) .build(), new Bundle()); assertEquals( "expected ON_UNMETERED_NETWORK to take precendence over ON_ANY_NETWORK", GooglePlayJobWriter.LEGACY_NETWORK_UNMETERED, b.getInt("requiredNetwork")); }
@Test public void testAddConstraints() { builder .setConstraints() .addConstraint(Constraint.DEVICE_CHARGING) .addConstraint(Constraint.ON_UNMETERED_NETWORK); int[] expected = {Constraint.DEVICE_CHARGING, Constraint.ON_UNMETERED_NETWORK}; assertEquals(Constraint.compact(expected), Constraint.compact(builder.getConstraints())); }
private static Builder initializeDefaultBuilder() { return TestUtil.getBuilderWithNoopValidator() .setConstraints(Constraint.DEVICE_CHARGING) .setExtras(null) .setLifetime(Lifetime.FOREVER) .setRecurring(false) .setReplaceCurrent(false) .setRetryStrategy(RetryStrategy.DEFAULT_EXPONENTIAL) .setService(TestJobService.class) .setTag("tag") .setTrigger(Trigger.NOW); }