Sha256: d691386f1d0eef97dfc95b6ac82b2ec53487b20b4dd7fa52b10ab5559e93f9fb

Contents?: true

Size: 1.61 KB

Versions: 2

Compression:

Stored size: 1.61 KB

Contents

require "sandbox"
require 'test/unit'
require File.dirname(__FILE__) + "/../lib/acts_as_runnable_code"

class SampleClass
  acts_as_runnable_code 
  
  def code
    "'hello world'"
  end
end

class OtherClass
  acts_as_runnable_code :code_field => :data2, :unsafe_sandbox => true, :singleton_sandbox => true
  
  attr :code, true
  
  def data2
    @code || "value"
  end
end

class WrappedClass
  acts_as_wrapped_class
  
  attr_reader :value  
  
  def initialize(value)
    @value = value
  end
  
  def other
    WrappedClass.new(rand)
  end
end

class ActsAsRunnableCodeTest < Test::Unit::TestCase
  def test_source_code_field
    assert_equal :code, SampleClass.source_code_field
    assert_equal :data2, OtherClass.source_code_field
  end
  
  def test_has_run_code
    assert SampleClass.new.respond_to?(:run_code)
    assert OtherClass.new.respond_to?(:run_code)
  end
  
  def test_has_sandbox
    assert SampleClass.new.respond_to?(:sandbox)
    assert OtherClass.new.respond_to?(:sandbox)
  end
  
  def test_sandbox
    s = SampleClass.new.sandbox
    assert s.is_a?(Sandbox::Safe)
    
    s = OtherClass.new.sandbox
    assert s.is_a?(Sandbox::Full)
  end
  
  def test_singleton_sandbox
    s1 = OtherClass.new.sandbox
    s2 = OtherClass.new.sandbox
    assert s1 == s2
    s1 = SampleClass.new.sandbox
    s2 = SampleClass.new.sandbox
    assert s1 != s2
  end
  
  def test_run_code
    w = WrappedClass.new(5.5)
    assert_equal "hello world", SampleClass.new.run_code
    assert_equal 5.5, OtherClass.new.run_code(w)
    
    oc = OtherClass.new
    oc.code = "other"
    assert_equal WrappedClass, oc.run_code(w).class
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
acts_as_runnable_code-1.0.0 test/test_acts_as_runnable_code.rb
acts_as_runnable_code-1.0.1 test/test_acts_as_runnable_code.rb