File: test_faker_code.rb

package info (click to toggle)
ruby-faker 2.21.0-1.1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 10,076 kB
  • sloc: ruby: 19,088; makefile: 6
file content (79 lines) | stat: -rw-r--r-- 1,495 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# frozen_string_literal: true

require_relative '../../test_helper'

class TestFakerCode < Test::Unit::TestCase
  def setup
    @tester = Faker::Code
  end

  def test_npi_regexp
    assert @tester.npi.match(/[0-9]{10}/)
  end

  def test_deterministic_npi
    Faker::Config.random = Random.new(42)
    v = @tester.npi
    Faker::Config.random = Random.new(42)

    assert v == @tester.npi
  end

  def test_default_isbn_regexp
    assert @tester.isbn.match(/^\d{9}-[\d|X]$/)
  end

  def test_default_isbn13_regexp
    assert @tester.isbn(base: 13).match(/^\d{12}-\d$/)
  end

  def test_default_ean_regexp
    assert @tester.ean.match(/^\d{13}$/)
  end

  def test_default_ean8_regexp
    assert @tester.ean(base: 8).match(/^\d{8}$/)
  end

  def test_rut
    assert @tester.rut.match(/^\d{1,8}-(\d|k)$/)
  end

  def test_asin
    assert @tester.asin.match(/^B000([A-Z]|\d){6}$/)
  end

  def test_nric
    assert @tester.nric.match(/^(S|T)\d{7}[A-JZ]$/)
  end

  def test_imei_regexp
    assert @tester.imei.match(/\A[\d.:\-\s]+\z/i)
  end

  def test_imei_luhn_value
    assert luhn_checksum_valid(@tester.imei)
  end

  def test_sin
    assert @tester.sin.match(/\d{9}/)
    assert @tester.sin.length == 9
    assert luhn_checksum_valid(@tester.sin)
  end

  def luhn_checksum_valid(numbers)
    sum = 0
    i = 0

    numbers.each_char do |ch|
      n = ch.to_i
      n *= 2 if i.odd?
      n = 1 + (n - 10) if n >= 10

      sum += n
      i += 1
    end

    (sum % 10).zero?
  end
end