File: test_faker_code.rb

package info (click to toggle)
ruby-faker 3.6.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 11,596 kB
  • sloc: ruby: 20,656; sh: 6; makefile: 6
file content (79 lines) | stat: -rw-r--r-- 1,517 bytes parent folder | download
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_match(/[0-9]{10}/, @tester.npi)
  end

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

    assert_equal v, @tester.npi
  end

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

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

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

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

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

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

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

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

  def test_imei_luhn_value
    assert luhn_checksum_valid?(@tester.imei)
  end

  def test_sin
    assert_match(/\d{9}/, @tester.sin)
    assert_equal(9, @tester.sin.length)
    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