Add test case for #973

stable-5.4
Nicolas Hake 2013-09-01 00:35:15 +02:00
parent 68e023651a
commit 7829631f66
3 changed files with 60 additions and 0 deletions

View File

@ -0,0 +1,5 @@
[Head]
Title=Test case for #973
[Definitions]
LocalOnly=1

View File

@ -0,0 +1,54 @@
/*
* OpenClonk, http://www.openclonk.org
*
* Copyright (c) 2013 Nicolas Hake
*
* Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
* See isc_license.txt for full license and disclaimer.
*
* "Clonk" is a registered trademark of Matthes Bender.
* See clonk_trademark_license.txt for full license.
*/
/* Issue #973: {Find,Sort}_* with no origin should use the FindObject call's
* context object instead of 0,0 */
func Initialize()
{
// Setup testing environment: one object for context, a second object at the context object, one object at 0,0
var ctx = CreateObject(Dummy, 100, 100, NO_OWNER);
ctx->SetName("ctx");
var at_origin = CreateObject(Dummy, 0, 0, NO_OWNER);
at_origin->SetName("at_origin");
var at_object = CreateObject(Dummy, ctx->GetX(), ctx->GetY(), NO_OWNER);
at_object->SetName("at_object");
TEST("object context Find_Distance");
EXPECT_EQ(at_object, ctx->FindObject(Find_Exclude(ctx), Find_Distance(1)));
TEST("global context Find_Distance");
EXPECT_EQ(at_origin, FindObject(Find_Exclude(ctx), Find_Distance(1, at_origin->GetX(), at_origin->GetY())));
EXPECT_EQ(at_object, FindObject(Find_Exclude(ctx), Find_Distance(1, at_object->GetX(), at_object->GetY())));
TEST("object context Find_InRect");
EXPECT_EQ(at_object, ctx->FindObject(Find_Exclude(ctx), Find_InRect(0, 0, 1, 1)));
EXPECT_EQ(at_origin, ctx->FindObject(Find_Exclude(ctx), Find_InRect(-ctx->GetX(), -ctx->GetY(), 1, 1)));
TEST("global context Find_InRect");
EXPECT_EQ(at_origin, FindObject(Find_Exclude(ctx), Find_InRect(at_origin->GetX(), at_origin->GetY(), 1, 1)));
EXPECT_EQ(at_object, FindObject(Find_Exclude(ctx), Find_InRect(at_object->GetX(), at_object->GetY(), 1, 1)));
TEST("object context Sort_Distance");
EXPECT_EQ(at_object, ctx->FindObject(Find_Exclude(ctx), Sort_Distance() ));
EXPECT_EQ(at_origin, ctx->FindObject(Find_Exclude(ctx), Sort_Reverse(Sort_Distance())));
TEST("global context Sort_Distance");
EXPECT_EQ(at_object, FindObject(Find_Exclude(ctx), Sort_Distance(at_object->GetX(), at_object->GetY()) ));
EXPECT_EQ(at_origin, FindObject(Find_Exclude(ctx), Sort_Distance(at_origin->GetX(), at_origin->GetY()) ));
EXPECT_EQ(at_object, FindObject(Find_Exclude(ctx), Sort_Reverse(Sort_Distance(at_origin->GetX(), at_origin->GetY()))));
END_TEST();
GameOver();
}

View File

@ -0,0 +1 @@
US:#973: Find_Distance should respect FindObject context