/* * Copyright (c) 2006 Rogério Liesenfeld * This file is subject to the terms of the MIT license (see LICENSE.txt). */ package mockit; import java.util.*; import javax.annotation.*; import org.junit.*; import static org.junit.Assert.*; public final class NaturalOrderingTest { @Test public void verifyStandardComparableBehaviorInMockedClass(@Mocked Date a, @Mocked Date b) { assertEquals(0, a.compareTo(a)); assertEquals(0, b.compareTo(b)); int aXb = a.compareTo(b); assertTrue(aXb != 0); int bXa = b.compareTo(a); assertTrue(bXa != 0); assertEquals(aXb, -bXa); } @SuppressWarnings("ComparableImplementedButEqualsNotOverridden") static final class ComparableClass implements Comparable<String> { final String value; ComparableClass(String value) { this.value = value; } @Override public int compareTo(@Nonnull String s) { return value.compareTo(s); } } @Test public void mockOverrideOfCompareToMethod(@Mocked final ComparableClass a, @Mocked final ComparableClass b) { new Expectations() {{ a.compareTo(null); result = 5; a.compareTo(anyString); result = 123; }}; new Expectations() {{ b.compareTo("test"); result = -50; }}; assertEquals(5, a.compareTo(null)); assertEquals(123, a.compareTo("test")); assertEquals(-50, b.compareTo("test")); } @Test public void mockOverrideOfCompareToMethodInJREClass(@Mocked final Date a, @Mocked final Date b) { new Expectations() {{ a.compareTo(b); result = 5; }}; assertEquals(5, a.compareTo(b)); assertTrue(b.compareTo(a) != 0); new Verifications() {{ a.compareTo((Date) any); b.compareTo(a); }}; } }