### Question:
VTypeValueEquals { public static boolean typeEquals(Object obj1, Object obj2) { if (obj1 == null && obj2 == null) { return true; } if (obj1 == null || obj2 == null) { return false; } return Objects.equals(ValueUtil.typeOf(obj1), ValueUtil.typeOf(obj2)); } private  VTypeValueEquals(); static boolean alarmEquals(Alarm alarm1, Alarm alarm2); static boolean timeEquals(Time time1, Time time2); static boolean typeEquals(Object obj1, Object obj2); static boolean valueEquals(VTable arg1, VTable arg2); static boolean valueEquals(VNumberArray array1, VNumberArray array2); static boolean valueEquals(VNumber number1, VNumber number2); static boolean valueEquals(VBoolean bool1, VBoolean bool2); static boolean valueEquals(VBooleanArray bool1, VBooleanArray bool2); static boolean valueEquals(VString str1, VString str2); static boolean valueEquals(VEnum enum1, VEnum enum2); static boolean valueEquals(VEnumArray enum1, VEnumArray enum2); static boolean valueEquals(VStringArray array1, VStringArray array2); static boolean valueEquals(Object obj1, Object obj2);  }### Answer:
@Test public void typeEquals1() { assertThat(VTypeValueEquals.typeEquals(newVInt(0, alarmNone(), timeNow(), displayNone()), newVDouble(0.0)), equalTo(false)); assertThat(VTypeValueEquals.typeEquals(newVInt(0, alarmNone(), timeNow(), displayNone()), newVInt(1, alarmNone(), timeNow(), displayNone())), equalTo(true)); assertThat(VTypeValueEquals.typeEquals(newVString("Test", alarmNone(), timeNow()), newVDouble(0.0)), equalTo(false)); assertThat(VTypeValueEquals.typeEquals(newVString("Test", alarmNone(), timeNow()), newVString("A", alarmNone(), timeNow())), equalTo(true)); }