@Test
  public void anySatisfy() {
    ImmutableSortedMap<String, String> map = new ImmutableEmptySortedMap<String, String>();

    Assert.assertFalse(map.anySatisfy(Predicates.instanceOf(String.class)));
    Assert.assertFalse(map.anySatisfy(Predicates.equal("Monkey")));
  }
  @Test
  public void noneSatisfy() {
    ImmutableSortedMap<String, String> map = new ImmutableEmptySortedMap<String, String>();

    Assert.assertTrue(map.noneSatisfy(Predicates.instanceOf(Integer.class)));
    Assert.assertTrue(map.noneSatisfy(Predicates.equal("Monkey")));
  }
 @Test
 public void containsKey() {
   ImmutableSortedMap<Integer, String> map = this.classUnderTest();
   ImmutableSortedMap<Integer, String> revMap =
       this.classUnderTest(Comparators.<Integer>reverseNaturalOrder());
   Assert.assertFalse(map.containsKey(0));
   Assert.assertFalse(revMap.containsKey(1));
 }
  @Override
  @Test
  public void ifPresentApply() {
    Integer absentKey = this.size() + 1;

    ImmutableSortedMap<Integer, String> classUnderTest = this.classUnderTest();
    Assert.assertNull(classUnderTest.ifPresentApply(absentKey, Functions.<String>getPassThru()));
  }
  @Override
  @Test
  public void get() {
    Integer absentKey = this.size() + 1;
    String absentValue = String.valueOf(absentKey);

    // Absent key behavior
    ImmutableSortedMap<Integer, String> classUnderTest = this.classUnderTest();
    Assert.assertNull(classUnderTest.get(absentKey));
    Assert.assertFalse(classUnderTest.containsValue(absentValue));

    // Still unchanged
    Assert.assertEquals(this.equalUnifiedMap(), classUnderTest);
  }
  @Override
  @Test
  public void collectMap() {
    ImmutableSortedMap<Integer, String> map = this.classUnderTest();
    ImmutableSortedMap<Integer, String> revMap =
        this.classUnderTest(Comparators.<Integer>reverseNaturalOrder());

    Function2<Integer, String, Pair<Integer, String>> alwaysTrueFunction = Tuples::pair;
    ImmutableMap<Integer, String> collect = map.collect(alwaysTrueFunction);
    ImmutableMap<Integer, String> revCollect = revMap.collect(alwaysTrueFunction);

    Verify.assertEmpty(collect);
    Assert.assertSame(collect, revCollect);
  }
  @Test
  public void serialization() {
    ImmutableSortedMap<Integer, String> map = this.classUnderTest();
    ImmutableSortedMap<Integer, String> deserialized =
        SerializeTestHelper.serializeDeserialize(map);
    Assert.assertSame(ImmutableEmptySortedMap.INSTANCE, map);
    Assert.assertSame(map, deserialized);

    ImmutableSortedMap<Integer, String> revMap =
        this.classUnderTest(Comparators.<Integer>reverseNaturalOrder());
    ImmutableSortedMap<Integer, String> revDeserialized =
        SerializeTestHelper.serializeDeserialize(revMap);
    Verify.assertInstanceOf(ImmutableSortedMap.class, revDeserialized);
    Assert.assertNotNull(revDeserialized.comparator());
  }
  @Override
  @Test
  public void getIfAbsent() {
    super.getIfAbsent();

    Integer absentKey = this.size() + 1;
    String absentValue = String.valueOf(absentKey);

    // Absent key behavior
    ImmutableSortedMap<Integer, String> classUnderTest = this.classUnderTest();
    Assert.assertEquals(
        absentValue,
        classUnderTest.getIfAbsent(absentKey, new PassThruFunction0<String>(absentValue)));

    // Still unchanged
    Assert.assertEquals(this.equalUnifiedMap(), classUnderTest);
  }
  @Override
  @Test
  public void rejectMap() {
    ImmutableSortedMap<Integer, String> map = this.classUnderTest();
    ImmutableSortedMap<Integer, String> actual = map.reject(Predicates2.alwaysFalse());
    Verify.assertInstanceOf(ImmutableEmptySortedMap.class, actual);
    Assert.assertSame(ImmutableEmptySortedMap.INSTANCE, actual);

    ImmutableSortedMap<Integer, String> revMap =
        this.classUnderTest(Comparators.<Integer>reverseNaturalOrder());
    ImmutableSortedMap<Integer, String> revActual = revMap.reject(Predicates2.alwaysTrue());
    Verify.assertInstanceOf(ImmutableEmptySortedMap.class, revActual);
    Assert.assertSame(revMap.comparator(), revActual.comparator());
  }
 @Override
 @Test
 public void testToString() {
   ImmutableSortedMap<Integer, String> map = this.classUnderTest();
   Assert.assertEquals("{}", map.toString());
 }
 @Test
 public void detect() {
   ImmutableSortedMap<Integer, String> map = this.classUnderTest();
   Assert.assertNull(map.detect(Predicates2.alwaysTrue()));
 }