class CompileToGoTest

Attributes

gettable[RW]
settable[RW]
sheet_names[RW]

Public Class Methods

rewrite(*args) click to toggle source
# File src/compile/go/compile_to_go_test.rb, line 12
def self.rewrite(*args)
  self.new.rewrite(*args)
end

Public Instance Methods

getter_method_name(ref) click to toggle source
# File src/compile/go/compile_to_go_test.rb, line 56
def getter_method_name(ref)
  v = variable_name(ref)
  if gettable.call(ref)
    v[0] = v[0].upcase!
  else
    v[0] = v[0].downcase!
  end
  v
end
rewrite(formulae, sheet_names, output) click to toggle source
# File src/compile/go/compile_to_go_test.rb, line 16
  def rewrite(formulae, sheet_names, output)
    self.settable ||= lambda { |ref| false }
    self.gettable ||= lambda { |ref| true }
    self.sheet_names = sheet_names

    m = MapValuesToGo.new

    formulae.each do |ref, ast|
      next unless gettable.call(ref)
      n = getter_method_name(ref)

      if ast.first == :error
        output.puts <<~END
        func Test#{n}(t *testing.T) {
          s := New()
          e := #{m.map(ast)}
          a, err := s.#{n}()
          if err != e {
              t.Errorf("#{n} = (%v, %v), want (nil, %v)", a, err, e)
          }
        }

        END

      else 
        output.puts <<~END
        func Test#{n}(t *testing.T) {
          s := New()
          e := #{m.map(ast)}
          a, err := s.#{n}()
          if a != e || err != nil {
              t.Errorf("#{n} = (%v, %v), want (%v, nil)", a, err, e)
          }
        }

        END
      end
    end
  end
struct_type() click to toggle source
# File src/compile/go/compile_to_go_test.rb, line 8
def struct_type
  "spreadsheet"
end
variable_name(ref) click to toggle source
# File src/compile/go/compile_to_go_test.rb, line 66
def variable_name(ref)
  worksheet = ref.first
  cell = ref.last
  worksheet_name = sheet_names[worksheet.to_s] || worksheet.to_s
  return worksheet_name.length > 0 ? "#{worksheet_name.downcase}#{cell.upcase}" : cell.downcase
end