std.test

テストの書き方。test_ で始まる public 関数がテストになり、 shark test で集めて走る。失敗しても panic せず、そのテストだけを失敗として記録する。

import std.test;
public func test_add() {
  test.eq(1 + 2, 3);
}
test.ok test.eq test.ne test.near test.is_error test.is_none test.fail test.describe test.before_each test.after_each
test.ok(cond: bool) → void

真であることを確かめる。

test.ok("さめ".len() == 2);
print("失敗しても次に進む");
test.eq<T>(actual: T, expected: T) → void

2つが等しいことを確かめる。

actualT実際の値
expectedT期待する値
test.eq("さめ".upper(), "さめ");
test.eq(1 + 2, 3);
test.ne<T>(a: T, b: T) → void

2つが等しくないことを確かめる。

test.ne(1, 2);
test.near(a: float, b: float, tolerance: float) → void

小数がほぼ等しいことを確かめる。

afloat
bfloat
tolerancefloat許す差
import std.math;
test.near(math.sqrt(2.0), 1.4142, 0.001);
test.is_error<T>(r: Result<T>) → void

失敗した Result であることを確かめる。

import std.file;
test.is_error(file.read("ない.txt"));
test.is_none<T>(v: T?) → void

値が無い(none)ことを確かめる。

test.is_none(int("さめ"));
test.fail(msg: string) → void

その場で失敗させる。通らないはずの道に置く。

var n = 1;
if n > 100 { test.fail("ここには来ないはず"); }
print("来ない道は通らなかった");
test.describe(s: string) → void

このテストの説明。識別子に使えない日本語は、ここに書く。

test.describe("負の大きさを渡したら 0 に直す");
print("説明を付けた");
test.before_each(f: func()) → void

各テストの前に呼ぶ関数を決める。

func setup() { print("前準備"); }
test.before_each(setup);
test.after_each(f: func()) → void

各テストの後に呼ぶ関数を決める。

func teardown() { print("後片付け"); }
test.after_each(teardown);