Example #1
0
		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);
		}