Test: create structures.
parent
78080c43a0
commit
eac5b58017
|
@ -7,6 +7,10 @@ const HashMap = std.HashMap;
|
||||||
const AutoHashMap = std.AutoHashMap;
|
const AutoHashMap = std.AutoHashMap;
|
||||||
const ArrayList = std.ArrayList;
|
const ArrayList = std.ArrayList;
|
||||||
|
|
||||||
|
fn say(tosay: []const u8) void {
|
||||||
|
std.debug.print("{}", .{tosay});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
const PropertyHashMap = AutoHashMap([] const u8, PropertyValue);
|
const PropertyHashMap = AutoHashMap([] const u8, PropertyValue);
|
||||||
const NodeList = ArrayList(Node);
|
const NodeList = ArrayList(Node);
|
||||||
|
@ -19,6 +23,8 @@ pub const Node = struct {
|
||||||
properties: PropertyHashMap,
|
properties: PropertyHashMap,
|
||||||
children: NodeList,
|
children: NodeList,
|
||||||
|
|
||||||
|
gpa: *Allocator,
|
||||||
|
|
||||||
pub fn deinit(self: *Node) void {
|
pub fn deinit(self: *Node) void {
|
||||||
self.properties.deinit();
|
self.properties.deinit();
|
||||||
for (self.children.items) |k, v| {
|
for (self.children.items) |k, v| {
|
||||||
|
@ -27,6 +33,17 @@ pub const Node = struct {
|
||||||
self.children.deinit();
|
self.children.deinit();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn create(allocator: *Allocator, type_name: []const u8, id: ?[]const u8) !Node {
|
||||||
|
return Node{
|
||||||
|
.id = id,
|
||||||
|
.type_name = type_name,
|
||||||
|
.properties = PropertyHashMap.init(allocator),
|
||||||
|
.children = NodeList.init(allocator),
|
||||||
|
.gpa = allocator,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const PropertyValueTags = enum {
|
const PropertyValueTags = enum {
|
||||||
|
@ -86,18 +103,27 @@ test "simple test about structures" {
|
||||||
|
|
||||||
test "init a Root structure" {
|
test "init a Root structure" {
|
||||||
const allocator = std.heap.page_allocator;
|
const allocator = std.heap.page_allocator;
|
||||||
|
|
||||||
|
say("\n");
|
||||||
|
|
||||||
|
say("creating a root\n");
|
||||||
var root = try Root.create(allocator);
|
var root = try Root.create(allocator);
|
||||||
defer root.deinit();
|
defer root.deinit();
|
||||||
|
|
||||||
std.debug.print("\n", .{});
|
say("creating a definition and a few children\n");
|
||||||
|
try root.definitions.put("MyObject", try Node.create(allocator, "my-type-name", "my-id"));
|
||||||
|
try root.children.append(try Node.create(allocator, "object", "my-id"));
|
||||||
|
try root.children.append(try Node.create(allocator, "otherObject", null));
|
||||||
|
try root.children.append(try Node.create(allocator, "Text", "my-id-for-text-object"));
|
||||||
|
|
||||||
std.debug.print("root.definitions:\n", .{});
|
|
||||||
|
say("root.definitions:\n");
|
||||||
var it = root.definitions.iterator();
|
var it = root.definitions.iterator();
|
||||||
while(it.next()) |kv| {
|
while(it.next()) |kv| {
|
||||||
std.debug.print("{} => {}:\n", .{kv.key, root.definitions.get(kv.key)});
|
std.debug.print("{} => {}:\n", .{kv.key, root.definitions.get(kv.key)});
|
||||||
}
|
}
|
||||||
|
|
||||||
std.debug.print("root.children:\n", .{});
|
say("root.children:\n");
|
||||||
for(root.children.items) |k, v| {
|
for(root.children.items) |k, v| {
|
||||||
std.debug.print("{} => {}:\n", .{k, v});
|
std.debug.print("{} => {}:\n", .{k, v});
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue