Sha256: c44263c089f03a722c24fc49869998d8e25f342f429bccb6a7db9d203ac8af93

Contents?: true

Size: 1.05 KB

Versions: 41

Compression:

Stored size: 1.05 KB

Contents

module OrigenTesters::ATP
  # Program is the top-level container for a collection of test flows
  class Program
    # Load a program from a previously saved file
    def self.load(file)
      p = nil
      File.open(file) do |f|
        p = Marshal.load(f)
      end
      p
    end

    def flow(name, options = {})
      flows[name] ||= Flow.new(self, name, options)
    end

    def flows
      @flows ||= {}.with_indifferent_access
      # To rescue previously created programs which have been loaded
      unless @flows.is_a?(ActiveSupport::HashWithIndifferentAccess)
        @flows = @flows.with_indifferent_access
      end
      @flows
    end

    # Save the program to a file
    def save(file)
      File.open(file, 'w') do |f|
        Marshal.dump(self, f)
      end
    end

    def respond_to?(*args)
      flows.key?(args.first) || super
    end

    def method_missing(method, *args, &block) # :nodoc:
      if f = flows[method]
        define_singleton_method method do
          f
        end
        f
      else
        super
      end
    end
  end
end

Version data entries

41 entries across 41 versions & 1 rubygems

Version Path
origen_testers-0.52.9 lib/origen_testers/atp/program.rb
origen_testers-0.52.8 lib/origen_testers/atp/program.rb
origen_testers-0.52.7 lib/origen_testers/atp/program.rb
origen_testers-0.52.6 lib/origen_testers/atp/program.rb
origen_testers-0.52.5 lib/origen_testers/atp/program.rb
origen_testers-0.52.4 lib/origen_testers/atp/program.rb
origen_testers-0.52.3 lib/origen_testers/atp/program.rb
origen_testers-0.52.1 lib/origen_testers/atp/program.rb
origen_testers-0.52.0 lib/origen_testers/atp/program.rb
origen_testers-0.51.5 lib/origen_testers/atp/program.rb
origen_testers-0.51.4 lib/origen_testers/atp/program.rb
origen_testers-0.51.3 lib/origen_testers/atp/program.rb
origen_testers-0.51.2 lib/origen_testers/atp/program.rb
origen_testers-0.51.1 lib/origen_testers/atp/program.rb
origen_testers-0.51.0 lib/origen_testers/atp/program.rb
origen_testers-0.50.0 lib/origen_testers/atp/program.rb
origen_testers-0.49.4 lib/origen_testers/atp/program.rb
origen_testers-0.49.3 lib/origen_testers/atp/program.rb
origen_testers-0.49.2 lib/origen_testers/atp/program.rb
origen_testers-0.49.1 lib/origen_testers/atp/program.rb