Я прохожу задачу трассировки лучей и пытаюсь утверждать, что возникает исключение при добавлении одной точки к другой (точки имеют w = 1).
В основном это то, что я получил :
tuple.ml
type tuple = {x: float; y: float; z: float; w: float}
let point a b c =
{x = a; y = b; z = c; w = 1.0}
exception AddingPoints of string
let (+..) a b =
if ((a.w =. 1.0 && b.w =. 1.0) = false)
then raise (AddingPoints "Cannot add points")
else
{
x = a.x +. b.x ;
y = a.y +. b.y ;
z = a.z +. b.z ;
w = a.w +. b.w ;
}
tuple_test.ml
open OUnit2
let p = point 4.3 (-4.2) 3.1
let test_add_point_point_should_fail = "testing adding point to point, it should fail" >::: [
let p2 = fun () -> p +.. p in
assert_raises (AddingPoints "Cannot add points") p2;
]
После запуска: ocamlbuild -use-ocamlfind -tag debug tuple_test.byte
Я получаю:
File "tuple_test.ml", line 41, characters 2-53:
41 | assert_raises (AddingPoints "Cannot add points") p2;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Error: This expression has type unit but an expression was expected of type
OUnit2.test = OUnitTest.test
Command exited with code 2.
Я новичок ie в ocaml, может ли кто-нибудь сказать мне, что мне не хватает?