Add first Entity tests

main
copygirl 1 year ago
parent 15640c1b56
commit 5ad3647da0
  1. 3
      src/c.zig
  2. 40
      test/entity.zig
  3. 1
      test/main.zig

@ -4,5 +4,8 @@ pub usingnamespace @cImport({
if (@import("builtin").mode == .Debug) if (@import("builtin").mode == .Debug)
@cDefine("FLECS_SANITIZE", {}); @cDefine("FLECS_SANITIZE", {});
// Flecs' default NULL macro causes issues.
@cDefine("NULL", "0");
@cInclude("flecs.h"); @cInclude("flecs.h");
}); });

@ -0,0 +1,40 @@
// 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 expectEql = std.testing.expectEqual;
const expectStrEql = std.testing.expectEqualStrings;
const util = @import("./util.zig");
const flecs = @import("../src/main.zig");
const c = flecs.c;
const context = flecs.Context(void);
const World = context.World;
const Entity = context.Entity;
test "Entity_init_id" {
var world = try World.initMinimal(std.testing.allocator);
defer world.deinit();
const e = try world.entity(.{}, .{});
// try expect(e.raw != 0); -- Not necessary, world.entity() returns error if result would be 0.
try expect(c.ecs_get_type(world.raw, e.raw) == null);
}
test "Entity_init_id_name" {
var world = try World.initMinimal(std.testing.allocator);
defer world.deinit();
const e = try world.entity(.{ .name = "foo" }, .{});
// try expect(e.raw != 0); -- Not necessary, world.entity() returns error if result would be 0.
try expectStrEql("foo", e.getName().?);
// TODO: Implement EntityPath.
const path = c.ecs_get_fullpath(world.raw, e.raw);
defer c.ecs_os_api.free_.?(path);
try expect(path != null);
try expectStrEql("foo", std.mem.sliceTo(path.?, 0));
}

@ -1,4 +1,5 @@
test { test {
_ = @import("../src/main.zig"); _ = @import("../src/main.zig");
_ = @import("./entity.zig");
_ = @import("./world.zig"); _ = @import("./world.zig");
} }

Loading…
Cancel
Save