Sha256: 6fc9e1ecce2c8da74a5d874448b1a0c44539cc4c80d3a78e890f670d89dbff5b

Contents?: true

Size: 1.79 KB

Versions: 27

Compression:

Stored size: 1.79 KB

Contents

# frozen_string_literal: true

module ONCCertificationG10TestKit
  module Tasks
    class TestProcedure
      # procedure -> section -> steps
      attr_accessor :sections

      def initialize(data)
        @sections = data[:procedure].map { |section| Section.new(section) }
      end

      class Section
        attr_accessor :name, :steps

        def initialize(data)
          @name = data[:section]

          group = nil
          @steps = data[:steps].map do |step|
            if step[:group].nil?
              step[:group] = group
            else
              group = step[:group]
            end

            Step.new(step)
          end
        end
      end

      class Step
        attr_accessor :group, :id, :s_u_t, :t_l_v, :inferno_supported, :inferno_notes, :inferno_tests, :alternate_test

        def initialize(data)
          @group = data[:group]
          @id = data[:id]
          @s_u_t = data[:SUT]
          @t_l_v = data[:TLV]
          @inferno_supported = data[:inferno_supported]
          @inferno_notes = data[:inferno_notes]
          @alternate_test = data[:alternate_test]
          @inferno_tests = expand_tests(data[:inferno_tests]).flatten
        end

        def expand_tests(test_list)
          return [] if test_list.nil?

          test_list.map do |test|
            if test.include?(' - ')
              first, second = test.split(' - ')
              prefix, _, beginning = first.rpartition('.')
              second_prefix, _, ending = second.rpartition('.')
              raise "'#{prefix}' != '#{second_prefix}' in #{@group} #{@id}" unless prefix == second_prefix

              (beginning.to_i..ending.to_i).map { |index| "#{prefix}.#{format('%02<index>d', { index: })}" }
            else
              [test]
            end
          end
        end
      end
    end
  end
end

Version data entries

27 entries across 27 versions & 1 rubygems

Version Path
onc_certification_g10_test_kit-7.0.3 lib/onc_certification_g10_test_kit/tasks/test_procedure.rb
onc_certification_g10_test_kit-7.0.2 lib/onc_certification_g10_test_kit/tasks/test_procedure.rb
onc_certification_g10_test_kit-7.0.1 lib/onc_certification_g10_test_kit/tasks/test_procedure.rb
onc_certification_g10_test_kit-7.0.0 lib/onc_certification_g10_test_kit/tasks/test_procedure.rb
onc_certification_g10_test_kit-6.0.3 lib/onc_certification_g10_test_kit/tasks/test_procedure.rb
onc_certification_g10_test_kit-6.0.2 lib/onc_certification_g10_test_kit/tasks/test_procedure.rb
onc_certification_g10_test_kit-6.0.1 lib/onc_certification_g10_test_kit/tasks/test_procedure.rb
onc_certification_g10_test_kit-6.0.0 lib/onc_certification_g10_test_kit/tasks/test_procedure.rb
onc_certification_g10_test_kit-5.4.2 lib/onc_certification_g10_test_kit/tasks/test_procedure.rb
onc_certification_g10_test_kit-5.4.1 lib/onc_certification_g10_test_kit/tasks/test_procedure.rb
onc_certification_g10_test_kit-5.3.0 lib/onc_certification_g10_test_kit/tasks/test_procedure.rb
onc_certification_g10_test_kit-5.2.0 lib/onc_certification_g10_test_kit/tasks/test_procedure.rb
onc_certification_g10_test_kit-5.1.0 lib/onc_certification_g10_test_kit/tasks/test_procedure.rb
onc_certification_g10_test_kit-5.0.0 lib/onc_certification_g10_test_kit/tasks/test_procedure.rb
onc_certification_g10_test_kit-4.1.0 lib/onc_certification_g10_test_kit/tasks/test_procedure.rb
onc_certification_g10_test_kit-4.0.0 lib/onc_certification_g10_test_kit/tasks/test_procedure.rb
onc_certification_g10_test_kit-3.8.1 lib/onc_certification_g10_test_kit/tasks/test_procedure.rb
onc_certification_g10_test_kit-3.8.0 lib/onc_certification_g10_test_kit/tasks/test_procedure.rb
onc_certification_g10_test_kit-3.7.2 lib/onc_certification_g10_test_kit/tasks/test_procedure.rb
onc_certification_g10_test_kit-3.7.1 lib/onc_certification_g10_test_kit/tasks/test_procedure.rb