@Test
public void testValueOf() {

    // int version
    assertEquals(CENT, valueOf(0, 1));
    assertEquals(SATOSHI, valueOf(1));
    assertEquals(NEGATIVE_SATOSHI, valueOf(-1));
    assertEquals(MAX_MONEY, valueOf(MAX_MONEY.value));
    assertEquals(MAX_MONEY.negate(), valueOf(MAX_MONEY.value * -1));
    valueOf(MAX_MONEY.value + 1);
    valueOf((MAX_MONEY.value * -1) - 1);
    valueOf(Long.MAX_VALUE);
    valueOf(Long.MIN_VALUE);
    try {
        valueOf(1, -1);
        fail();
    } catch (IllegalArgumentException e) {}
    try {
        valueOf(-1, 0);
        fail();
    } catch (IllegalArgumentException e) {}
}