#!/usr/bin/perl use strict; use warnings; use Test::More tests => 22; BEGIN { use_ok('li_std_except') } require_ok('li_std_except'); # adapted from ../java/li_std_except_runme.java # these are not prescriptive tests, they just match the error classes I # found are currently being issued, we may want to provide a more # granular error api later, so don't let these tests stop code # improvements. my $test = new li_std_except::Test(); eval { $test->throw_bad_exception() }; like($@, qr/\bSystemError\b/, "throw_bad_exception"); eval { $test->throw_domain_error() }; like($@, qr/\bValueError\b/, "throw_domain_error"); like($@, qr/\boops\b/, "throw_domain_error message"); eval { $test->throw_exception() }; like($@, qr/\bSystemError\b/, "throw_exception"); eval { $test->throw_invalid_argument() }; like($@, qr/\bValueError\b/, "throw_invalid_argument"); like($@, qr/\boops\b/, "throw_invalid_argument message"); eval { $test->throw_length_error() }; like($@, qr/\bIndexError\b/, "throw_length_error"); like($@, qr/\boops\b/, "throw_length_error message"); eval { $test->throw_logic_error() }; like($@, qr/\bRuntimeError\b/, "throw_logic_error"); like($@, qr/\boops\b/, "throw_logic_error message"); eval { $test->throw_out_of_range() }; like($@, qr/\bIndexError\b/, "throw_out_of_range"); like($@, qr/\boops\b/, "throw_out_of_range message"); eval { $test->throw_overflow_error() }; like($@, qr/\bOverflowError\b/, "throw_overflow_error"); like($@, qr/\boops\b/, "throw_overflow_error message"); eval { $test->throw_range_error() }; like($@, qr/\bOverflowError\b/, "throw_range_error"); like($@, qr/\boops\b/, "throw_range_error message"); eval { $test->throw_runtime_error() }; like($@, qr/\bRuntimeError\b/, "throw_runtime_error"); like($@, qr/\boops\b/, "throw_runtime_error message"); eval { $test->throw_underflow_error() }; like($@, qr/\bOverflowError\b/, "throw_underflow_error"); like($@, qr/\boops\b/, "throw_underflow_error message");