-module(startest@test_case). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]). -define(FILEPATH, "src/startest/test_case.gleam"). -export([test_decoder/0]). -export_type([test/0, test_outcome/0, executed_test/0]). -type test() :: {test, binary(), fun(() -> nil), boolean()}. -type test_outcome() :: passed | {failed, startest@test_failure:test_failure()} | skipped. -type executed_test() :: {executed_test, test(), test_outcome()}. -file("src/startest/test_case.gleam", 41). -spec test_body_decoder() -> gleam@dynamic@decode:decoder(fun(() -> nil)). test_body_decoder() -> gleam@dynamic@decode:new_primitive_decoder( <<"TestBody"/utf8>>, fun(Value) -> Function = startest@internal@unsafe:coerce(Value), {ok, Function} end ). -file("src/startest/test_case.gleam", 26). -spec test_decoder() -> gleam@dynamic@decode:decoder(test()). test_decoder() -> gleam@dynamic@decode:then( gleam@dynamic@decode:at( [1], {decoder, fun gleam@dynamic@decode:decode_string/1} ), fun(Name) -> gleam@dynamic@decode:then( gleam@dynamic@decode:at([2], test_body_decoder()), fun(Body) -> gleam@dynamic@decode:then( gleam@dynamic@decode:at( [3], {decoder, fun gleam@dynamic@decode:decode_bool/1} ), fun(Skipped) -> gleam@dynamic@decode:success( {test, Name, Body, Skipped} ) end ) end ) end ).