@Test
public void testSizeBasedWeight() {

  FairOrderingPolicy<MockSchedulableEntity> policy =
    new FairOrderingPolicy<MockSchedulableEntity>();
  policy.setSizeBasedWeight(true);
  MockSchedulableEntity r1 = new MockSchedulableEntity();
  MockSchedulableEntity r2 = new MockSchedulableEntity();
  //No changes, equal
  assertEquals("Comparator Output", 0,
      policy.getComparator().compare(r1, r2));
  r1.setUsed(Resources.createResource(4 * GB));
  r2.setUsed(Resources.createResource(4 * GB));
  r1.setPending(Resources.createResource(4 * GB));
  r2.setPending(Resources.createResource(4 * GB));
  AbstractComparatorOrderingPolicy.updateSchedulingResourceUsage(
    r1.getSchedulingResourceUsage());
  AbstractComparatorOrderingPolicy.updateSchedulingResourceUsage(
    r2.getSchedulingResourceUsage());
  //Same, equal
  assertEquals("Comparator Output", 0,
      policy.getComparator().compare(r1, r2));
  r2.setUsed(Resources.createResource(5 * GB));
  r2.setPending(Resources.createResource(5 * GB));
  AbstractComparatorOrderingPolicy.updateSchedulingResourceUsage(
    r2.getSchedulingResourceUsage());
  //More demand and consumption, but not enough more demand to overcome
  //additional consumption
  Assert.assertTrue(policy.getComparator().compare(r1, r2) < 0);
  //High demand, enough to reverse sbw
  r2.setPending(Resources.createResource(100 * GB));
  AbstractComparatorOrderingPolicy.updateSchedulingResourceUsage(
    r2.getSchedulingResourceUsage());
  Assert.assertTrue(policy.getComparator().compare(r1, r2) > 0);
}