File: test_module_utils.rb

package info (click to toggle)
ruby-ffaker 2.23.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 3,776 kB
  • sloc: ruby: 12,788; makefile: 8; sh: 1
file content (47 lines) | stat: -rw-r--r-- 1,161 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
# frozen_string_literal: true

require_relative 'helper'

class TestModuleUtils < Test::Unit::TestCase
  def test_provides_a_k_method_for_generating_constant_arrays
    obj = Object.new
    obj.extend FFaker::ModuleUtils
    result = obj.k %w[1 2 3]

    assert result.frozen?
    result.each { |e| assert e.frozen? }
  end

  def test_unique
    generator = Object.new
    generator.extend FFaker::ModuleUtils
    # returns [1 1 2 2 1 1 2 2 ..][call_index]
    def generator.test
      index = Thread.current[:test_unique] ||= 0
      Thread.current[:test_unique] = (index > 2 ? 0 : index + 1)
      (index / 2) + 1
    end

    assert_equal(1, generator.unique.test)
    assert_equal(2, generator.unique.test)

    Thread.new do
      assert_equal(1, generator.unique.test)
      assert_equal(2, generator.unique.test)

      assert_raises FFaker::UniqueUtils::RetryLimitExceeded do
        generator.unique.test
      end

      generator.unique.clear
      generator.unique.test
    end.join

    assert_raises FFaker::UniqueUtils::RetryLimitExceeded do
      generator.unique.test
    end

    FFaker::UniqueUtils.clear
    generator.unique.test
  end
end