Common update:
-added multiple new function to allocate template and add entity -updated README.md (complete initial version) -empty components now don't take memory -fixedd small bug with TestRunner -added many new tests (HashMap, Vector, EntityMeta, ...) -added default hashing function to HashMap -fixed critical bug with adding entities -fixed small bug with adding entity with remplacement components -added asserts into code to better bug detection -small performance improvement for events -added ComponentRef structure which contain data pointer and componentID -remove EntityID from Event structure -now events are handled before removing entiteis -fixed GDC compilation -fixed rendering of rotated sprites -added weapons as separate entities to space ship and others -added Tower enemy to SpaceInvaders demo -added Boss to SpaceInvaders demo (boss has four tower attached to it) -Boss towers shoot multiple bullets upon death -fixed critical bug with demos switching -fixed critical bug related to adding/removing entities form inside onAdd/onRemove entity callback -added animation support -added particles sypport and particles for firing and explostions, and more -multithreaded rendering now has same rendering order as singlethreaded -application automaticallu detect host CPU threads count -added upgrades to SPaceInvaders demo -fixed texture memory freeing -improved documentation -improved multithreaded performance -improve shader code -fixed registration issue -some additional performance improvements -added depth and colors to rendering parameters -jobs now has names corresponding to their systems -change execute() -> willExecute() -added EntityMeta structure to speedup getting fetching components form entity -improved multithreading rendering -added possibility tio change number of threads runtime -added bullets collision detection in SpaceInvaders demo -some CI changes -added VBO batch rendering (current default, no render mode switch yet) -fixed camera positioning calculation -fixed buffer issue with WebGL -added viewport scalling (at least 300 pixels height). Pixels are scalled if screen is bigger. -center demos gameplay area -added fullpage html template for Emscripten build -added many new sprites to atlas -fixed critical bug with CPU usage in multithreaded mode -snake render tile coresponding to body part -snake is destroyed after collision and emit some particles -added some functionality to vectors -fixed documentation issue in Manager.d -more minor code changes and cleanup
This commit is contained in:
parent
2ddb97e9ce
commit
024356df9b
62 changed files with 5918 additions and 1673 deletions
403
tests/basic.d
403
tests/basic.d
|
|
@ -1,11 +1,18 @@
|
|||
module tests.basic;
|
||||
|
||||
import ecs.core;
|
||||
import ecs.manager;
|
||||
import ecs.system;
|
||||
import ecs.attributes;
|
||||
import bubel.ecs.core;
|
||||
import bubel.ecs.manager;
|
||||
import bubel.ecs.system;
|
||||
import bubel.ecs.attributes;
|
||||
|
||||
import std.array : staticArray;
|
||||
version(GNU)
|
||||
{
|
||||
pragma(inline, true) T[n] staticArray(T, size_t n)(auto ref T[n] a)
|
||||
{
|
||||
return a;
|
||||
}
|
||||
}
|
||||
else import std.array : staticArray;
|
||||
|
||||
struct CInt
|
||||
{
|
||||
|
|
@ -61,6 +68,11 @@ struct CUnregistered
|
|||
short value = 12;
|
||||
}
|
||||
|
||||
struct CFlag
|
||||
{
|
||||
mixin ECS.Component;
|
||||
}
|
||||
|
||||
struct LongAddSystem
|
||||
{
|
||||
mixin ECS.System;
|
||||
|
|
@ -103,6 +115,7 @@ struct EmptySystem
|
|||
|
||||
void beforeEveryTest()
|
||||
{
|
||||
CUnregistered.component_id = ushort.max;
|
||||
gEM.initialize(0);
|
||||
|
||||
gEM.beginRegister();
|
||||
|
|
@ -112,6 +125,7 @@ void beforeEveryTest()
|
|||
gEM.registerComponent!CDouble;
|
||||
gEM.registerComponent!CLong;
|
||||
gEM.registerComponent!CShort;
|
||||
gEM.registerComponent!CFlag;
|
||||
|
||||
gEM.endRegister();
|
||||
}
|
||||
|
|
@ -121,14 +135,33 @@ void afterEveryTest()
|
|||
gEM.destroy();
|
||||
}
|
||||
|
||||
@("EntityMeta")
|
||||
unittest
|
||||
{
|
||||
EntityTemplate* tmpl_ = gEM.allocateTemplate([CInt.component_id, CFloat.component_id, CFlag.component_id].staticArray);
|
||||
Entity* entity = gEM.addEntity(tmpl_);
|
||||
EntityMeta meta = entity.getMeta();
|
||||
assert(meta.hasComponent(CInt.component_id));
|
||||
assert(meta.getComponent!CInt);
|
||||
assert(meta.hasComponent(CFloat.component_id));
|
||||
assert(meta.getComponent!CFloat);
|
||||
assert(!meta.getComponent!CLong);
|
||||
assert(!meta.hasComponent(CLong.component_id));
|
||||
assert(!meta.getComponent!CUnregistered);
|
||||
assert(!meta.hasComponent(CUnregistered.component_id));
|
||||
assert(*meta.getComponent!CInt == 1);
|
||||
assert(*meta.getComponent!CFloat == 2.0);
|
||||
}
|
||||
|
||||
@("AddEntity")
|
||||
unittest
|
||||
{
|
||||
ushort[2] ids = [CInt.component_id, CFloat.component_id];
|
||||
EntityTemplate* tmpl_ = gEM.allocateTemplate(ids);
|
||||
assert(tmpl_.info.components.length == 2);
|
||||
EntityTemplate* tmpl_ = gEM.allocateTemplate([CInt.component_id, CFloat.component_id, CFlag.component_id].staticArray);
|
||||
assert(tmpl_.info.components.length == 3);
|
||||
assert(tmpl_.info.size == (CInt.sizeof + CFloat.sizeof + EntityID.sizeof));
|
||||
assert(tmpl_.getComponent!CInt);
|
||||
assert(tmpl_.getComponent!CFloat);
|
||||
assert(tmpl_.getComponent!CFlag);
|
||||
assert(!tmpl_.getComponent!CLong);
|
||||
assert(!tmpl_.getComponent!CUnregistered);
|
||||
assert(*tmpl_.getComponent!CInt == 1);
|
||||
|
|
@ -146,6 +179,67 @@ unittest
|
|||
assert(entity2.getComponent!CFloat);
|
||||
assert(*entity2.getComponent!CInt == 2);
|
||||
assert(*entity2.getComponent!CFloat == 2.0);
|
||||
|
||||
//CInt cint = CInt(10);
|
||||
//CLong clong;
|
||||
//Entity* entity3 = gEM.addEntity(tmpl_, [cint.ref_, clong.ref_].staticArray);
|
||||
Entity* entity3 = gEM.addEntity(tmpl_, [CInt(10).ref_, CLong().ref_, CFlag().ref_].staticArray);
|
||||
EntityID id = entity3.id;
|
||||
assert(entity3.hasComponent(CInt.component_id));
|
||||
assert(entity3.hasComponent(CFloat.component_id));
|
||||
assert(*entity3.getComponent!CInt == 10);
|
||||
assert(*entity3.getComponent!CFloat == 2.0);
|
||||
|
||||
gEM.addComponents(entity3.id, [CFlag().ref_,CShort(2).ref_].staticArray);
|
||||
gEM.commit();
|
||||
entity3 = gEM.getEntity(id);
|
||||
assert(entity3.getComponent!CInt);
|
||||
assert(entity3.getComponent!CFloat);
|
||||
assert(entity3.getComponent!CFlag);
|
||||
assert(entity3.getComponent!CShort);
|
||||
assert(*entity3.getComponent!CInt == 10);
|
||||
assert(*entity3.getComponent!CFloat == 2.0);
|
||||
assert(*entity3.getComponent!CShort == 2);
|
||||
|
||||
gEM.removeComponents(entity3.id, [CFlag().component_id,CShort(2).component_id].staticArray);
|
||||
gEM.commit();
|
||||
entity3 = gEM.getEntity(id);
|
||||
assert(entity3.getComponent!CInt);
|
||||
assert(entity3.getComponent!CFloat);
|
||||
assert(!entity3.getComponent!CFlag);
|
||||
assert(!entity3.getComponent!CShort);
|
||||
assert(*entity3.getComponent!CInt == 10);
|
||||
assert(*entity3.getComponent!CFloat == 2.0);
|
||||
|
||||
gEM.addComponents(entity3.id, [CFlag().ref_,CShort(2).ref_].staticArray);
|
||||
gEM.removeComponents(entity3.id, [CUnregistered.component_id].staticArray);
|
||||
gEM.commit();
|
||||
entity3 = gEM.getEntity(id);
|
||||
assert(entity3.getComponent!CInt);
|
||||
assert(entity3.getComponent!CFloat);
|
||||
assert(entity3.getComponent!CFlag);
|
||||
assert(entity3.getComponent!CShort);
|
||||
assert(*entity3.getComponent!CInt == 10);
|
||||
assert(*entity3.getComponent!CFloat == 2.0);
|
||||
assert(*entity3.getComponent!CShort == 2);
|
||||
|
||||
gEM.beginRegister();
|
||||
|
||||
gEM.registerComponent!CUnregistered;
|
||||
|
||||
gEM.endRegister();
|
||||
|
||||
gEM.addComponents(entity3.id, [CUnregistered(4).ref_].staticArray);
|
||||
gEM.commit();
|
||||
entity3 = gEM.getEntity(id);
|
||||
assert(entity3.getComponent!CUnregistered);
|
||||
assert(*entity3.getComponent!CUnregistered == 4);
|
||||
|
||||
gEM.removeComponents(entity3.id, [CUnregistered.component_id].staticArray);
|
||||
gEM.commit();
|
||||
entity3 = gEM.getEntity(id);
|
||||
assert(!entity3.getComponent!CUnregistered);
|
||||
|
||||
}
|
||||
|
||||
//allocate templates
|
||||
|
|
@ -156,32 +250,48 @@ unittest
|
|||
ushort[2] ids = [CInt.component_id, CFloat.component_id];
|
||||
EntityTemplate* tmpl_ = gEM.allocateTemplate(ids);
|
||||
EntityTemplate* tmpl_d = gEM.allocateTemplate([CFloat.component_id, CInt.component_id, CFloat.component_id].staticArray);
|
||||
EntityTemplate* tmpl_cp = gEM.allocateTemplate(tmpl_);
|
||||
assert(tmpl_d.info == tmpl_.info);
|
||||
assert(tmpl_cp.info == tmpl_cp.info);
|
||||
assert(tmpl_.info.components.length == 2);
|
||||
assert(tmpl_.getComponent!CInt);
|
||||
assert(tmpl_.getComponent!CFloat);
|
||||
assert(*tmpl_.getComponent!CInt == 1);
|
||||
assert(*tmpl_.getComponent!CFloat == 2.0);
|
||||
assert(tmpl_cp.getComponent!CFloat);
|
||||
assert(tmpl_cp.getComponent!CInt);
|
||||
assert(tmpl_.getComponent!CInt != tmpl_cp.getComponent!CInt);
|
||||
assert(tmpl_.getComponent!CFloat != tmpl_cp.getComponent!CFloat);
|
||||
assert(*tmpl_.getComponent!CInt == *tmpl_cp.getComponent!CInt);
|
||||
assert(*tmpl_.getComponent!CFloat == *tmpl_cp.getComponent!CFloat);
|
||||
*tmpl_.getComponent!CInt = 4;
|
||||
*tmpl_.getComponent!CFloat = 5.0;
|
||||
|
||||
//allocate template from template with additional component
|
||||
ushort[1] ids2 = [CDouble.component_id];
|
||||
//allocate template from template with additional components
|
||||
ushort[2] ids2 = [CDouble.component_id,CFlag.component_id];
|
||||
EntityTemplate* tmpl_2 = gEM.allocateTemplate(tmpl_, ids2);
|
||||
assert(tmpl_2.info.components.length == 3);
|
||||
assert(tmpl_2.info.components.length == 4);
|
||||
assert(tmpl_2.getComponent!CInt);
|
||||
assert(tmpl_2.getComponent!CFloat);
|
||||
assert(tmpl_2.getComponent!CDouble);
|
||||
assert(tmpl_2.getComponent!CFlag);
|
||||
assert(*tmpl_2.getComponent!CInt == 4);
|
||||
assert(*tmpl_2.getComponent!CFloat == 5.0);
|
||||
assert(*tmpl_2.getComponent!CDouble == 3.0);
|
||||
|
||||
assert(tmpl_.info.blocksCount() == 0);
|
||||
|
||||
Entity* entity = gEM.addEntity(tmpl_);
|
||||
gEM.addComponents(entity.id, CDouble(8.0));
|
||||
gEM.addComponents(entity.id, CFloat(100));
|
||||
gEM.addComponents(entity.id, CDouble(8.0), CFloat(100));
|
||||
|
||||
assert(tmpl_.info.blocksCount() == 1);
|
||||
|
||||
//apply entity changes
|
||||
gEM.commit();
|
||||
|
||||
assert(tmpl_.info.blocksCount() == 0);
|
||||
|
||||
//allocate template as entity copy
|
||||
EntityTemplate* tmpl_3 = gEM.allocateTemplate(entity.id);
|
||||
assert(tmpl_3.info.components.length == 3);
|
||||
|
|
@ -202,18 +312,20 @@ unittest
|
|||
assert(*tmpl_4.getComponent!CFloat == 2.0);
|
||||
assert(*tmpl_4.getComponent!CDouble == 3.0);
|
||||
|
||||
//allocate template from template with two additional component
|
||||
ushort[2] ids3 = [CDouble.component_id, CLong.component_id];
|
||||
EntityTemplate* tmpl_5 = gEM.allocateTemplate(tmpl_, ids3);
|
||||
assert(tmpl_5.info.components.length == 4);
|
||||
//allocate template from template with three additional component
|
||||
ushort[3] ids3 = [CDouble.component_id, CLong.component_id, CShort.component_id];
|
||||
EntityTemplate* tmpl_5 = gEM.allocateTemplate(tmpl_2, ids3);
|
||||
assert(tmpl_5.info.components.length == 6);
|
||||
assert(tmpl_5.getComponent!CInt);
|
||||
assert(tmpl_5.getComponent!CFloat);
|
||||
assert(tmpl_5.getComponent!CDouble);
|
||||
assert(tmpl_5.getComponent!CLong);
|
||||
assert(tmpl_5.getComponent!CShort);
|
||||
assert(*tmpl_5.getComponent!CInt == 4);
|
||||
assert(*tmpl_5.getComponent!CFloat == 5.0);
|
||||
assert(*tmpl_5.getComponent!CDouble == 3.0);
|
||||
assert(*tmpl_5.getComponent!CLong == 10);
|
||||
assert(*tmpl_5.getComponent!CShort == 12);
|
||||
|
||||
//allocate template from template without one component
|
||||
ushort[1] rem_ids = [CFloat.component_id];
|
||||
|
|
@ -224,7 +336,7 @@ unittest
|
|||
|
||||
//allocate template from template without one component and two additional
|
||||
EntityTemplate* tmpl_7 = gEM.allocateTemplate(tmpl_, ids3, rem_ids);
|
||||
assert(tmpl_7.info.components.length == 3);
|
||||
assert(tmpl_7.info.components.length == 4);
|
||||
assert(tmpl_7.getComponent!CInt);
|
||||
assert(tmpl_7.getComponent!CDouble);
|
||||
assert(tmpl_7.getComponent!CLong);
|
||||
|
|
@ -481,6 +593,10 @@ unittest
|
|||
|
||||
gEM.endRegister();
|
||||
|
||||
assert(gEM.getPass("custom"));
|
||||
assert(!gEM.getPass("custommm"));
|
||||
|
||||
|
||||
LongAddSystem* system = gEM.getSystem!LongAddSystem;
|
||||
assert(system !is null);
|
||||
assert(system.updates_count == 0);
|
||||
|
|
@ -1116,9 +1232,9 @@ unittest
|
|||
assert(*entity2.getComponent!CShort == 12);
|
||||
|
||||
gEM.sendEvent(id,ETest());
|
||||
gEM.sendEvent(id,ETest2(id,10));
|
||||
gEM.sendEvent(id,ETest2(10));
|
||||
gEM.sendEvent(id2,ETest());
|
||||
gEM.sendEvent(id2,ETest2(id2,12));
|
||||
gEM.sendEvent(id2,ETest2(12));
|
||||
gEM.commit();
|
||||
assert(ETest2.destory == 2);
|
||||
|
||||
|
|
@ -1129,20 +1245,20 @@ unittest
|
|||
|
||||
gEM.addComponents(id, CInt(2), CShort(1));
|
||||
gEM.sendEvent(id,ETest());
|
||||
gEM.sendEvent(id,ETest2(id,2));
|
||||
gEM.sendEvent(id,ETest2(2));
|
||||
gEM.commit();
|
||||
assert(ETest2.destory == 3);
|
||||
|
||||
entity = gEM.getEntity(id);
|
||||
assert(*entity.getComponent!CLong == 66);
|
||||
assert(*entity.getComponent!CInt == 36);
|
||||
assert(*entity.getComponent!CInt == 2);//36);
|
||||
|
||||
//test for multiple event blocks
|
||||
long result = *entity.getComponent!CLong;
|
||||
foreach(i;0..10000)
|
||||
{
|
||||
gEM.sendEvent(id,ETest());
|
||||
gEM.sendEvent(id,ETest2(id,4));
|
||||
gEM.sendEvent(id,ETest2(4));
|
||||
result += 16;
|
||||
result += 8;
|
||||
}
|
||||
|
|
@ -1220,4 +1336,247 @@ unittest
|
|||
assert(*entity2.getComponent!CInt == 13);
|
||||
|
||||
gEM.end();
|
||||
}
|
||||
|
||||
@("SystemDependencies")
|
||||
unittest
|
||||
{
|
||||
struct TestSystem
|
||||
{
|
||||
mixin ECS.System;
|
||||
|
||||
struct EntitiesData
|
||||
{
|
||||
uint length;
|
||||
@readonly CInt[] int_;
|
||||
}
|
||||
|
||||
void onUpdate(EntitiesData entities)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
struct TestSystem2
|
||||
{
|
||||
mixin ECS.System;
|
||||
|
||||
struct EntitiesData
|
||||
{
|
||||
uint length;
|
||||
CInt[] int_;
|
||||
}
|
||||
|
||||
void onUpdate(EntitiesData entities)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
struct TestSystem3
|
||||
{
|
||||
mixin ECS.System;
|
||||
|
||||
struct EntitiesData
|
||||
{
|
||||
uint length;
|
||||
@readonly CInt[] int_;
|
||||
}
|
||||
|
||||
void onUpdate(EntitiesData entities)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
struct TestSystem4
|
||||
{
|
||||
mixin ECS.System;
|
||||
|
||||
struct EntitiesData
|
||||
{
|
||||
uint length;
|
||||
CInt[] int_;
|
||||
CLong[] long_;
|
||||
}
|
||||
|
||||
void onUpdate(EntitiesData entities)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
struct TestSystem5
|
||||
{
|
||||
mixin ECS.System;
|
||||
|
||||
struct EntitiesData
|
||||
{
|
||||
uint length;
|
||||
@readonly CLong[] int_;
|
||||
}
|
||||
|
||||
void onUpdate(EntitiesData entities)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
gEM.beginRegister();
|
||||
|
||||
gEM.registerSystem!TestSystem(0);
|
||||
gEM.registerSystem!TestSystem2(1);
|
||||
gEM.registerSystem!TestSystem3(2);
|
||||
gEM.registerSystem!TestSystem4(3);
|
||||
gEM.registerSystem!TestSystem5(4);
|
||||
|
||||
gEM.endRegister();
|
||||
|
||||
const (EntityManager.UpdatePass)* pass = gEM.getPass("update");
|
||||
assert(pass != null);
|
||||
assert(pass.system_callers.length == 5);
|
||||
assert(pass.system_callers[0].system_id == TestSystem.system_id);
|
||||
assert(pass.system_callers[1].system_id == TestSystem2.system_id);
|
||||
assert(pass.system_callers[2].system_id == TestSystem3.system_id);
|
||||
assert(pass.system_callers[3].system_id == TestSystem4.system_id);
|
||||
assert(pass.system_callers[4].system_id == TestSystem5.system_id);
|
||||
assert(pass.system_callers[0].dependencies.length == 0);
|
||||
assert(pass.system_callers[1].dependencies.length == 1);
|
||||
assert(pass.system_callers[2].dependencies.length == 1);
|
||||
assert(pass.system_callers[3].dependencies.length == 3);
|
||||
assert(pass.system_callers[4].dependencies.length == 1);
|
||||
assert(pass.system_callers[1].dependencies[0].system_id == TestSystem.system_id);
|
||||
assert(pass.system_callers[2].dependencies[0].system_id == TestSystem2.system_id);
|
||||
assert(pass.system_callers[3].dependencies[0].system_id == TestSystem.system_id);
|
||||
assert(pass.system_callers[3].dependencies[1].system_id == TestSystem2.system_id);
|
||||
assert(pass.system_callers[3].dependencies[2].system_id == TestSystem3.system_id);
|
||||
assert(pass.system_callers[4].dependencies[0].system_id == TestSystem4.system_id);
|
||||
}
|
||||
|
||||
@("ExternalSystemDependencies")
|
||||
unittest
|
||||
{
|
||||
enum TestDependency = "TestDepencency";
|
||||
|
||||
struct TestSystem
|
||||
{
|
||||
mixin ECS.System;
|
||||
|
||||
mixin ECS.ReadOnlyDependencies!(TestDependency);
|
||||
|
||||
struct EntitiesData
|
||||
{
|
||||
uint length;
|
||||
@readonly CInt[] int_;
|
||||
}
|
||||
|
||||
void onUpdate(EntitiesData entities)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
struct TestSystem2
|
||||
{
|
||||
mixin ECS.System;
|
||||
|
||||
mixin ECS.WritableDependencies!(TestDependency);
|
||||
|
||||
struct EntitiesData
|
||||
{
|
||||
uint length;
|
||||
@readonly CInt[] int_;
|
||||
}
|
||||
|
||||
void onUpdate(EntitiesData entities)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
struct TestSystem3
|
||||
{
|
||||
mixin ECS.System;
|
||||
|
||||
mixin ECS.ReadOnlyDependencies!(TestDependency);
|
||||
|
||||
struct EntitiesData
|
||||
{
|
||||
uint thread_id;
|
||||
}
|
||||
|
||||
void onUpdate(EntitiesData entities)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
struct TestSystem4
|
||||
{
|
||||
mixin ECS.System;
|
||||
|
||||
mixin ECS.WritableDependencies!(TestDependency);
|
||||
|
||||
struct EntitiesData
|
||||
{
|
||||
uint length;
|
||||
@readonly CInt[] int_;
|
||||
}
|
||||
|
||||
void onUpdate(EntitiesData entities)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
struct TestSystem5
|
||||
{
|
||||
mixin ECS.System;
|
||||
|
||||
mixin ECS.ReadOnlyDependencies!(TestDependency);
|
||||
|
||||
struct EntitiesData
|
||||
{
|
||||
uint length;
|
||||
@readonly CLong[] int_;
|
||||
}
|
||||
|
||||
void onUpdate(EntitiesData entities)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
gEM.beginRegister();
|
||||
|
||||
gEM.registerDependency(TestDependency);
|
||||
|
||||
gEM.registerSystem!TestSystem(0);
|
||||
gEM.registerSystem!TestSystem2(1);
|
||||
gEM.registerSystem!TestSystem3(2);
|
||||
gEM.registerSystem!TestSystem4(3);
|
||||
gEM.registerSystem!TestSystem5(4);
|
||||
|
||||
gEM.endRegister();
|
||||
|
||||
const (EntityManager.UpdatePass)* pass = gEM.getPass("update");
|
||||
assert(pass != null);
|
||||
assert(pass.system_callers.length == 5);
|
||||
assert(pass.system_callers[0].system_id == TestSystem.system_id);
|
||||
assert(pass.system_callers[1].system_id == TestSystem2.system_id);
|
||||
assert(pass.system_callers[2].system_id == TestSystem3.system_id);
|
||||
assert(pass.system_callers[3].system_id == TestSystem4.system_id);
|
||||
assert(pass.system_callers[4].system_id == TestSystem5.system_id);
|
||||
assert(pass.system_callers[0].dependencies.length == 0);
|
||||
assert(pass.system_callers[1].dependencies.length == 1);
|
||||
assert(pass.system_callers[2].dependencies.length == 1);
|
||||
assert(pass.system_callers[3].dependencies.length == 3);
|
||||
assert(pass.system_callers[4].dependencies.length == 2);
|
||||
assert(pass.system_callers[1].dependencies[0].system_id == TestSystem.system_id);
|
||||
assert(pass.system_callers[2].dependencies[0].system_id == TestSystem2.system_id);
|
||||
assert(pass.system_callers[3].dependencies[0].system_id == TestSystem.system_id);
|
||||
assert(pass.system_callers[3].dependencies[1].system_id == TestSystem2.system_id);
|
||||
assert(pass.system_callers[3].dependencies[2].system_id == TestSystem3.system_id);
|
||||
assert(pass.system_callers[4].dependencies[0].system_id == TestSystem2.system_id);
|
||||
assert(pass.system_callers[4].dependencies[1].system_id == TestSystem4.system_id);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue