module Prototok::Utils::TestHelper

Public Instance Methods

option_combinations() click to toggle source
# File lib/prototok/utils/test_helper.rb, line 4
def option_combinations
  combinations = (versions + [nil]).map do |v|
    product_versions(v)
  end.flatten.each_slice(5).entries
  combinations.inject({}) do |aggr, options|
    aggr.merge!(itemize_options(prepare_options(options)))
  end
end

Private Instance Methods

cipher_names(version = nil) click to toggle source
# File lib/prototok/utils/test_helper.rb, line 48
def cipher_names(version = nil)
  version ||= 1
  item_names("lib/prototok/ciphers/V#{version}") + [nil]
end
encoder_names() click to toggle source
# File lib/prototok/utils/test_helper.rb, line 44
def encoder_names
  item_names('lib/prototok/encoders') + [nil]
end
encoder_options() click to toggle source
# File lib/prototok/utils/test_helper.rb, line 57
def encoder_options
  [:token, :payload].map do |mode|
    {encoding_mode: mode}
  end + [nil]
end
formatter_names() click to toggle source
# File lib/prototok/utils/test_helper.rb, line 53
def formatter_names
  item_names('lib/prototok/formatters') + [nil]
end
item_names(subpath) click to toggle source
# File lib/prototok/utils/test_helper.rb, line 63
def item_names(subpath)
  items_root = File.join(Paths.gem_root, subpath)
  item_files = Dir.entries(items_root).select { |i| i =~ /.+\.rb/ } || []
  item_files.map { |i| File.basename(i, '.rb') }
end
itemize_options(keyword_args = {}) click to toggle source
# File lib/prototok/utils/test_helper.rb, line 36
def itemize_options(keyword_args = {})
  defaulted = keyword_args.each_with_object({}) do |(key, val), obj|
    obj[key] = (val.nil? ? 'default' : val)
  end
  name = defaulted.to_a.map { |i| i.join(' is ') }.join(', ')
  { name => keyword_args.reject { |_k, v| v.nil? } }
end
prepare_options(o = {}) click to toggle source
# File lib/prototok/utils/test_helper.rb, line 15
def prepare_options(o = {})
  options = { version: o[0], op: o[1], encoder: o[2], formatter: o[3], encoder_options: o[4] }
  if options[:encoder].to_s == 'protobuf'
    options[:encoder_options] ||= {}
    payload_proto_path = File.join(
      Prototok::Utils::Paths.gem_root,
      'spec/prototok/encoders/protobuf/test_payload.prot'
    )
    options[:encoder_options][:payload_file] = payload_proto_path
  end
  options
end
product_versions(v) click to toggle source
# File lib/prototok/utils/test_helper.rb, line 28
def product_versions(v)
  [v]
    .product(cipher_names(v))
    .product(encoder_names)
    .product(formatter_names)
    .product(encoder_options)
end
versions() click to toggle source
# File lib/prototok/utils/test_helper.rb, line 69
def versions
  item_names('lib/prototok/ciphers').map { |i| i.sub(/^v/, '') }
end