// Path: src/test/java/org/killbill/billing/test/helpers/TestUtil.java
// public static String shortIdentityToString(Object obj) {
//     if (obj == null) {
//         return null;
//     }
//     return obj.getClass().getSimpleName() + '@' + toHexString(identityHashCode(obj));
// }


import static org.killbill.billing.test.helpers.TestUtil.shortIdentityToString;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertFalse;
import static org.testng.Assert.assertNotNull;
import static org.testng.Assert.assertTrue;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

    @Test(groups = "fast")
    public void shouldEnforceEquality() {
        // Expect
        assertFalse(FR_TEST0.equals(null));
        assertFalse(FR_TEST1.equals(null));
        assertTrue(FR_TEST0.equals(FR_TEST0));
        assertTrue(FR_TEST1.equals(FR_TEST1));
        assertFalse(FR_TEST0.equals(new Object()));
        assertFalse(FR_TEST1.equals(FR_TEST1_NUM));

        assertTrue(FR_TEST0.equals(new VATIN(FR_TEST0_NUM)));
        assertTrue(FR_TEST1.equals(new VATIN(FR_TEST1_NUM)));
        assertFalse(FR_TEST0.equals(new VATIN(FR_TEST8_NUM)));
        assertFalse(FR_TEST1.equals(new VATIN(FR_TEST9_NUM)));
    }

    @Test(groups = "fast")
    public void shouldComputeHashCode() {
        // Expect
        assertEquals(FR_TEST0.hashCode(), 1807022424);
        assertEquals(FR_TEST1.hashCode(), 666000569);
        assertEquals(FR_TEST2.hashCode(), -475021286);
        assertEquals(FR_TEST8.hashCode(), 1637069758L);
        assertEquals(FR_TEST9.hashCode(), (17 * 37) + FR_TEST9_NUM.hashCode());
    }

    @Test(groups = "fast")
    public void shouldOutputVATIN() {
        // Expect
// Path: src/test/java/org/killbill/billing/test/helpers/TestUtil.java
// public static String shortIdentityToString(Object obj) {
//     if (obj == null) {
//         return null;
//     }
//     return obj.getClass().getSimpleName() + '@' + toHexString(identityHashCode(obj));
// }


// Path: src/test/java/org/killbill/billing/plugin/simpletax/internal/TestVATIN.java
import static org.killbill.billing.test.helpers.TestUtil.shortIdentityToString;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertFalse;
import static org.testng.Assert.assertNotNull;
import static org.testng.Assert.assertTrue;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;


    @Test(groups = "fast")
    public void shouldEnforceEquality() {
        // Expect
        assertFalse(FR_TEST0.equals(null));
        assertFalse(FR_TEST1.equals(null));
        assertTrue(FR_TEST0.equals(FR_TEST0));
        assertTrue(FR_TEST1.equals(FR_TEST1));
        assertFalse(FR_TEST0.equals(new Object()));
        assertFalse(FR_TEST1.equals(FR_TEST1_NUM));

        assertTrue(FR_TEST0.equals(new VATIN(FR_TEST0_NUM)));
        assertTrue(FR_TEST1.equals(new VATIN(FR_TEST1_NUM)));
        assertFalse(FR_TEST0.equals(new VATIN(FR_TEST8_NUM)));
        assertFalse(FR_TEST1.equals(new VATIN(FR_TEST9_NUM)));
    }

    @Test(groups = "fast")
    public void shouldComputeHashCode() {
        // Expect
        assertEquals(FR_TEST0.hashCode(), 1807022424);
        assertEquals(FR_TEST1.hashCode(), 666000569);
        assertEquals(FR_TEST2.hashCode(), -475021286);
        assertEquals(FR_TEST8.hashCode(), 1637069758L);
        assertEquals(FR_TEST9.hashCode(), (17 * 37) + FR_TEST9_NUM.hashCode());
    }

    @Test(groups = "fast")
    public void shouldOutputVATIN() {
        // Expect
        assertEquals(FR_TEST0.toString(), shortIdentityToString(FR_TEST0) + "[number=" + FR_TEST0_NUM + "]");