/datum/unit_test/ray_equals/start() var/vector/origin = new /vector(0,3) var/vector/direction = new /vector(4,7) var/ray/R1 = new /ray(origin, direction) var/ray/R2 = new /ray(origin, direction) if(!R1.equals(R2)) fail("Rays not equal") /datum/unit_test/ray_overlaps/start() var/vector/origin = new /vector(0,3) var/vector/direction = new /vector(4,7) var/ray/R1 = new /ray(origin, direction) var/ray/R2 = new /ray(origin, direction) if(!R1.overlaps(R2)) fail("Rays #1 not overlapping") direction = new /vector(-4,-7) R1 = new /ray(origin, direction) R2 = new /ray(origin, direction) if(!R1.equals(R2)) fail("Rays #2 not overlapping") /datum/unit_test/ray_hitsPoint/start() var/vector/origin = new /vector(0,3) var/vector/direction = new /vector(2,10) var/vector/P = new /vector(1,8) var/ray/R = new /ray(origin, direction) if(!R.hitsPoint(P)) fail("Ray not hitting point") /datum/unit_test/ray_getPoint/start() var/vector/origin = new /vector(0,3) var/vector/direction = new /vector(4,10) var/distance = 0.5 var/vector/P = new /vector(0.2,3.5) var/ray/R = new /ray(origin, direction) if(!R.getPoint(distance).equals(P)) fail("Ray returned invalid point "+R.getPoint(distance).toString())