Sha256: 4236a431308b0fd5efb40e8868310ac8f0357c44880989eb142b8d67fa91e4da

Contents?: true

Size: 1.86 KB

Versions: 1

Compression:

Stored size: 1.86 KB

Contents

require "spec_helper"
require "banktools-se"

describe BankTools::SE::OCR do
  # http://www.bgc.se/upload/Gemensamt/Trycksaker/Manualer/BG6070.pdf section 5.2
  describe ".from_number" do
    it "adds a mod-10 check digit" do
      BankTools::SE::OCR.from_number("123").should eq "1230"
    end

    it "handles integer input" do
      BankTools::SE::OCR.from_number(123).should eq "1230"
    end

    it "can add an optional length digit" do
      BankTools::SE::OCR.from_number("1234567890", length_digit: true).should eq "123456789023"
    end

    it "can pad the number" do
      BankTools::SE::OCR.from_number("1234567890", length_digit: true, pad: "0").should eq "1234567890037"
    end

    it "raises if resulting number is > 25 digits" do
      expect { BankTools::SE::OCR.from_number("1234567890123456789012345") }.to raise_error(BankTools::SE::OCR::OverlongOCR)
    end

    it "raises if input is non-numeric" do
      expect { BankTools::SE::OCR.from_number("garbage") }.to raise_error(BankTools::SE::OCR::MustBeNumeric)
    end
  end

  describe ".to_number" do
    it "strips the mod-10 check digit" do
      BankTools::SE::OCR.to_number("1230").should eq "123"
    end

    it "handles integer input" do
      BankTools::SE::OCR.to_number(1230).should eq "123"
    end

    it "can strip an optional length digit" do
      BankTools::SE::OCR.to_number("123456789023", length_digit: true).should eq "1234567890"
    end

    it "can pad the number" do
      BankTools::SE::OCR.to_number("1234567890037", length_digit: true, pad: "0").should eq "1234567890"
    end

    it "raises if checksum is wrong" do
      expect { BankTools::SE::OCR.to_number("1231") }.to raise_error(BankTools::SE::OCR::BadChecksum)
    end

    it "raises if input is non-numeric" do
      expect { BankTools::SE::OCR.to_number("garbage") }.to raise_error(BankTools::SE::OCR::MustBeNumeric)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
banktools-se-1.0.0 spec/ocr_spec.rb