tests: start building tests in separate directory

This approach seems nice, and as a bonus it makes it easier to run the
tests through the module interface rather than by importing the
sources directly, which I think is a good dog food approach.
This commit is contained in:
2023-08-21 23:31:46 -07:00
parent ef185bc975
commit 40d898a55e
4 changed files with 64 additions and 64 deletions

5
tests/main.zig Normal file
View File

@@ -0,0 +1,5 @@
const std = @import("std");
test {
_ = @import("./message.zig");
}

59
tests/message.zig Normal file
View File

@@ -0,0 +1,59 @@
const std = @import("std");
const nats = @import("nats");
// const nats = @import("../src/nats.zig");
// const message = @import("../src/message.zig");
test "message: create message" {
const subject = "hello";
const reply = "reply";
const data = "world";
// have to initialize the library so the reference counter can correctly destroy
// objects, otherwise we segfault on trying to free the memory.
try nats.init(-1);
defer nats.deinit();
const message = try nats.Message.create(subject, reply, data);
defer message.destroy();
const message2 = try nats.Message.create(subject, null, data);
defer message2.destroy();
const message3 = try nats.Message.create(subject, data, null);
defer message3.destroy();
const message4 = try nats.Message.create(subject, null, null);
defer message4.destroy();
}
test "message: get subject" {
try nats.init(-1);
defer nats.deinit();
const subject = "hello";
const message = try nats.Message.create(subject, null, null);
defer message.destroy();
const received = message.getSubject();
try std.testing.expectEqualStrings(subject, received);
}
test "message: get reply" {
try nats.init(-1);
defer nats.deinit();
const subject = "hello";
const reply = "reply";
const message = try nats.Message.create(subject, reply, null);
defer message.destroy();
const received = message.getReply() orelse return error.TestUnexpectedResult;
try std.testing.expectEqualStrings(reply, received);
const message2 = try nats.Message.create(subject, null, null);
defer message2.destroy();
const received2 = message2.getReply();
try std.testing.expect(received2 == null);
}