High-level wrapper around Flecs, a powerful ECS (Entity Component System) library, written in Zig language
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

84 lines
2.2 KiB

// Reimplementations of the following tests from Flecs:
// https://github.com/SanderMertens/flecs/blob/master/test/api/src/Entity.c
const std = @import("std");
const expect = std.testing.expect;
const expectFmt = std.testing.expectFmt;
const expectEqual = std.testing.expectEqual;
const expectEqualStrings = std.testing.expectEqualStrings;
const util = @import("./util.zig");
const flecs = @import("../src/main.zig");
const c = flecs.c;
const context = flecs.Context(void);
const Entity = context.Entity;
const Path = context.Path;
const World = context.World;
test "Entity_init_id" {
flecs.init(std.testing.allocator);
var world = try World.initMinimal();
defer world.deinit();
const e = try world.entity(.{}, .{});
try expect(c.ecs_get_type(world.raw, e.raw) == null);
}
test "Entity_init_id_name" {
flecs.init(std.testing.allocator);
var world = try World.initMinimal();
defer world.deinit();
const e = try world.entity(.{ .name = "foo" }, .{});
try expectEqualStrings("foo", e.getName().?);
const path2 = try e.getPath(flecs.allocator);
defer path2.deinit();
try expectFmt("foo", "{}", .{path2});
}
test "Entity_init_id_path" {
flecs.init(std.testing.allocator);
var world = try World.initMinimal();
defer world.deinit();
const p = try Path.fromString("parent.child", null, flecs.allocator);
defer p.deinit();
const e = try world.entity(.{ .path = p }, .{});
try expectEqualStrings("child", e.getName().?);
const path = try e.getPath(flecs.allocator);
defer path.deinit();
try expectFmt("parent.child", "{}", .{path});
}
test "Entity_init_id_add_1_comp" {
const TagA = struct {};
flecs.init(std.testing.allocator);
var world = try World.initMinimal();
defer world.deinit();
_ = try world.tag(TagA);
const e = try world.entity(.{}, .{TagA});
try expect(e.has(TagA));
}
test "Entity_init_id_add_2_comp" {
const TagA = struct {};
const TagB = struct {};
flecs.init(std.testing.allocator);
var world = try World.initMinimal();
defer world.deinit();
_ = try world.tag(TagA);
_ = try world.tag(TagB);
const e = try world.entity(.{}, .{ TagA, TagB });
try expect(e.has(TagA));
try expect(e.has(TagB));
}