OCaml の Test::Simple を目コピしてみた その 4
OCaml のソースコードに沿って TAPDocument.ml を test-document.fs にして、TAPBuilder.ml を test-builder.fs に書いてみた。
なんかクラスっぽいやつでやってみたんだけど、これでいいのかな…………(汗
module Test.Builder type Plan(?count : int) = let current_plan : option<int> = count type TestCaseBuilder () = let mutable running_tests : (int -> Test.Document.node) list = []; member this.BuildTestCase(todo : option<string>, diag : option<Test.Document.diagnostic>, test : bool, description : string) = let running_test = fun number -> match todo with | None -> Test.Document.TestCaseNode((if test then Test.Document.Ok else Test.Document.NotOk), number, description, diag) | Some x -> Test.Document.TodoTestCaseNode((if test then Test.Document.Ok else Test.Document.NotOk), number, description, Test.Document.Todo(x), diag) running_tests <- running_test :: running_tests running_test member this.BuildDiagnostic(line : string) = let running_test = fun (_ : int) -> Test.Document.DiagnosticNode (Test.Document.Diag( [ line ] )) running_tests <- running_test :: running_tests running_test
今ブログ記事を書いてる時に気がついたけど、これじゃダメだよねwwwwww
だって、Plan とか let plan = Plan(12)
とかってしないとわかんないじゃんwwwwww
ほげーーーーーーー!!!
あと、F# では、関数に省略した引数を使えないので、type
のコンストラクタ?の引数に使わなければならない………
(。・_・。) ………
TestCaseBuilder
を TestCaseResult
とかにして、そのリストをどこかに持ったほうが良いのかも?
こんな感じ:
type TestCase(?todo, ?diag, test, description) = let running_test = fun number -> match todo with | None -> Test.Document.TestCaseNode((if test then Test.Document.Ok else Test.Document.NotOk), number, description, diag) | Some x -> Test.Document.TodoTestCaseNode((if test then Test.Document.Ok else Test.Document.NotOk), number, description, Test.Document.Todo(x), diag)