PL/SQLでassertEquals()
PROCEDURE assertEquals(expected NUMBER, val NUMBER) IS
BEGIN
if expected <> val then
raise_application_error(-20001, TO_CHAR(expected) || 'の期待値に対し、実際は' || TO_CHAR(val) || 'でした。');
end if;
END assertEquals;
みたいなのを無邪気に書いていたのだけど、これってnullが暗黙変換で0に変換されてしまうので、assertEquals(0, null)みたいなのが通ってしまう。ちゃんとnullかどうか判定しないとだめだ。assertEquals(null, null)はどうすべきなのかな。
if (expected is null) <> (val is null) or
(expected <> val) then
3値論理的にはfailさせた方が安全なのだろうか?








