defmodule CnpjTest do @moduledoc false use ExUnit.Case test "should be invalid with invalid number" do cnpjs = ~w{69103604020160 00000000000000 69.103.604/0001-61 01618211000264 11111111111111} Enum.each(cnpjs, fn cnpj -> assert Brcpfcnpj.cnpj_valid?(cnpj) == false end) end test "should be invalid with a number longer than 14 chars, even if the first 14 represent a valid number" do cnpjs = ~w{691036040001-601 69103604000160a 69103604000160ABC 6910360400016000} Enum.each(cnpjs, fn cnpj -> assert Brcpfcnpj.cnpj_valid?(cnpj) == false end) end test "should be valid with correct number" do cnpjs = ~w{69103604000160 69.103.604/0001-60 01518211/000264 01.5182110002-64 00.000.000/1447-89} Enum.each(cnpjs, fn cnpj -> assert Brcpfcnpj.cnpj_valid?(cnpj) == true end) end test "should be invalid with nil input" do assert Brcpfcnpj.cnpj_valid?(nil) == false end test "should be invalid when starting with zeroes and order > 0300" do assert Brcpfcnpj.cnpj_valid?("00010000030160") == false assert Brcpfcnpj.cnpj_valid?("00000898246954") == false assert Brcpfcnpj.cnpj_valid?("00000136747140") == false end test "should allow alphanumeric characters in the cnpj" do assert Brcpfcnpj.cnpj_valid?("12.ABC.345/01DE-35") == true assert Brcpfcnpj.cnpj_valid?("12ABC34501DE35") == true assert Brcpfcnpj.cnpj_valid?("12abc34501de35") == true end test "should validate alphanumeric characters" do assert Brcpfcnpj.cnpj_valid?("12.ABC.345/01DE-34") == false end end