TEST(ObjectTests, ObjectEquality) { ObjectPtr nil = createObject(); ObjectPtr boolean = createObject(true); ObjectPtr number = createObject(1.f); ObjectPtr string = createObject("true"); void* memory = malloc(32); ObjectPtr userdata = createObject(memory); ASSERT_TRUE(nil->equals(nil)); ASSERT_FALSE(nil->equals(boolean)); ASSERT_FALSE(nil->equals(number)); ASSERT_FALSE(nil->equals(string)); ASSERT_FALSE(nil->equals(userdata)); ASSERT_FALSE(boolean->equals(nil)); ASSERT_TRUE(boolean->equals(boolean)); ASSERT_TRUE(boolean->equals(number)); ASSERT_TRUE(boolean->equals(string)); ASSERT_FALSE(boolean->equals(userdata)); ASSERT_FALSE(number->equals(nil)); ASSERT_TRUE(number->equals(boolean)); ASSERT_TRUE(number->equals(number)); ASSERT_FALSE(number->equals(string)); ASSERT_FALSE(number->equals(userdata)); ASSERT_FALSE(string->equals(nil)); ASSERT_TRUE(string->equals(boolean)); ASSERT_FALSE(string->equals(number)); ASSERT_TRUE(string->equals(string)); ASSERT_FALSE(string->equals(userdata)); ASSERT_FALSE(userdata->equals(nil)); ASSERT_FALSE(userdata->equals(boolean)); ASSERT_FALSE(userdata->equals(number)); ASSERT_FALSE(userdata->equals(string)); ASSERT_TRUE(userdata->equals(userdata)); free(memory); }