Sha256: 3e89425a6e87c22a46515a3208c4b5e5ff6f1ab1a6114466b7b600621a8cb049

Contents?: true

Size: 983 Bytes

Versions: 129

Compression:

Stored size: 983 Bytes

Contents

require 'generator/exercise_case'

class ComplexNumbersCase < Generator::ExerciseCase

  def workload
    indent_text(4, testcase)
  end

  def number
    (respond_to? :input) ? input : z1
  end

  def operation
    case property
    when "add" then " + #{construct_complex(z2)}"
    when "sub" then " - #{construct_complex(z2)}" 
    when "mul" then " * #{construct_complex(z2)}" 
    when "div" then " / #{construct_complex(z2)}" 
    else ".#{property}"
    end
  end

  def testcase
    "expected = #{expected_value}\n" +
    "assert_equal expected, #{construct_complex(number)}#{operation}"
  end

  def construct_complex(value)
    "ComplexNumber.new(#{parse_number(value)})"
  end

  def expected_value
    (expected.is_a? Numeric) ? expected : construct_complex(expected)
  end

  def parse_number(number)
    return number if number.is_a? Numeric
    Array(number).map do |elem|
      (elem.is_a? Numeric) ? elem.to_s : "Math::#{elem.upcase}"
    end.join(", ")
  end

end

Version data entries

129 entries across 129 versions & 1 rubygems

Version Path
trackler-2.2.1.98 tracks/ruby/exercises/complex-numbers/.meta/generator/complex_numbers_case.rb
trackler-2.2.1.97 tracks/ruby/exercises/complex-numbers/.meta/generator/complex_numbers_case.rb
trackler-2.2.1.96 tracks/ruby/exercises/complex-numbers/.meta/generator/complex_numbers_case.rb
trackler-2.2.1.95 tracks/ruby/exercises/complex-numbers/.meta/generator/complex_numbers_case.rb
trackler-2.2.1.94 tracks/ruby/exercises/complex-numbers/.meta/generator/complex_numbers_case.rb
trackler-2.2.1.93 tracks/ruby/exercises/complex-numbers/.meta/generator/complex_numbers_case.rb
trackler-2.2.1.92 tracks/ruby/exercises/complex-numbers/.meta/generator/complex_numbers_case.rb
trackler-2.2.1.91 tracks/ruby/exercises/complex-numbers/.meta/generator/complex_numbers_case.rb
trackler-2.2.1.90 tracks/ruby/exercises/complex-numbers/.meta/generator/complex_numbers_case.rb
trackler-2.2.1.89 tracks/ruby/exercises/complex-numbers/.meta/generator/complex_numbers_case.rb
trackler-2.2.1.88 tracks/ruby/exercises/complex-numbers/.meta/generator/complex_numbers_case.rb
trackler-2.2.1.87 tracks/ruby/exercises/complex-numbers/.meta/generator/complex_numbers_case.rb
trackler-2.2.1.86 tracks/ruby/exercises/complex-numbers/.meta/generator/complex_numbers_case.rb
trackler-2.2.1.85 tracks/ruby/exercises/complex-numbers/.meta/generator/complex_numbers_case.rb
trackler-2.2.1.84 tracks/ruby/exercises/complex-numbers/.meta/generator/complex_numbers_case.rb
trackler-2.2.1.83 tracks/ruby/exercises/complex-numbers/.meta/generator/complex_numbers_case.rb
trackler-2.2.1.82 tracks/ruby/exercises/complex-numbers/.meta/generator/complex_numbers_case.rb
trackler-2.2.1.81 tracks/ruby/exercises/complex-numbers/.meta/generator/complex_numbers_case.rb
trackler-2.2.1.80 tracks/ruby/exercises/complex-numbers/.meta/generator/complex_numbers_case.rb
trackler-2.2.1.79 tracks/ruby/exercises/complex-numbers/.meta/generator/complex_numbers_case.rb