| # Licensed to the Apache Software Foundation (ASF) under one |
| # or more contributor license agreements. See the NOTICE file |
| # distributed with this work for additional information |
| # regarding copyright ownership. The ASF licenses this file |
| # to you under the Apache License, Version 2.0 (the |
| # "License"); you may not use this file except in compliance |
| # with the License. You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, |
| # software distributed under the License is distributed on an |
| # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| # KIND, either express or implied. See the License for the |
| # specific language governing permissions and limitations |
| # under the License. |
| |
| |
| require "spec_helper" |
| |
| module Qpid |
| |
| module Proton |
| |
| class ExceptionHandlingClass |
| include Qpid::Proton::Util::ErrorHandler |
| |
| def error |
| "This is a test error: #{Time.new}" |
| end |
| end |
| |
| describe "The exception handling mixin" do |
| |
| before (:each) do |
| @handler = Qpid::Proton::ExceptionHandlingClass.new |
| end |
| |
| it "does not raise an error on a zero code" do |
| @handler.check_for_error(0) |
| end |
| |
| it "raises EOS on PN_EOS" do |
| proc { |
| @handler.check_for_error(Qpid::Proton::Error::EOS) |
| }.must_raise(Qpid::Proton::EOSError) |
| end |
| |
| it "raises Error on PN_ERR" do |
| proc { |
| @handler.check_for_error(Qpid::Proton::Error::ERROR) |
| }.must_raise(Qpid::Proton::ProtonError) |
| end |
| |
| it "raises Overflow on PN_OVERFLOW" do |
| proc { |
| @handler.check_for_error(Qpid::Proton::Error::OVERFLOW) |
| }.must_raise(Qpid::Proton::OverflowError) |
| end |
| |
| it "raises Underflow on PN_UNDERFLOW" do |
| proc { |
| @handler.check_for_error(Qpid::Proton::Error::UNDERFLOW) |
| }.must_raise(Qpid::Proton::UnderflowError) |
| end |
| |
| it "raises Argument on PN_ARG_ERR" do |
| proc { |
| @handler.check_for_error(Qpid::Proton::Error::ARGUMENT) |
| }.must_raise(Qpid::Proton::ArgumentError) |
| end |
| |
| it "raises TimeoutError on PN_TIMEOUT" do |
| proc { |
| @handler.check_for_error(Qpid::Proton::Error::TIMEOUT) |
| }.must_raise(Qpid::Proton::TimeoutError) |
| end |
| |
| it "raises an Ruby ArgumentError on a nil code" do |
| proc { |
| @handler.check_for_error(nil) |
| }.must_raise(::ArgumentError) |
| end |
| |
| it "raises a Ruby ArgumentError on an unknown value" do |
| proc { |
| @handler.check_for_error("farkle") |
| }.must_raise(::ArgumentError) |
| end |
| |
| end |
| |
| end |
| |
| end |