Skip to content

Instantly share code, notes, and snippets.

@btaitelb
Created April 18, 2012 03:14
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save btaitelb/2410847 to your computer and use it in GitHub Desktop.
Save btaitelb/2410847 to your computer and use it in GitHub Desktop.
#
# strategy_test.rb
# reframeit-testing
#
# Created by Ben Taitelbaum on 2/25/08.
# Copyright (c) 2008 __MyCompanyName__. All rights reserved.
#
require 'rubygems'
require 'test/unit'
require 'activethrift/strategies'
include ActiveThrift
class StrategyTest < Test::Unit::TestCase
def setup
# Write setup code here.
end
def teardown
# Write teardown code here.
end
def test_compound_strategy_trivial
cs = CompoundStrategy.new
assert !cs.execute
end
def test_compound_strategy_true
cs = CompoundStrategy.new {true}
assert cs.execute
end
def test_compound_strategy_chained
a = 1
s1 = CompoundStrategy.new{a = 3}
s2 = CompoundStrategy.new{a = a + 2}
s3 = s1+s2
assert_equal 5, s3.execute
assert_equal 5, a
end
def test_compound_strategy_anded_true
a = 1
s1 = CompoundStrategy.new{a += 2; true}
s2 = CompoundStrategy.new{a += 3; true}
s3 = s1 & s2
assert s3.execute
assert_equal 6, a
end
def test_compound_strategy_anded_false
a = 1
s1 = CompoundStrategy.new{a += 2; false}
s2 = CompoundStrategy.new{a += 3; true}
s3 = s1 & s2
assert !s3.execute
assert_equal 3, a
end
def test_compound_strategy_piped
s1 = CompoundStrategy.new{|a| a += 1 }
s2 = CompoundStrategy.new{|a| a += 2 }
s3 = s1 | s2
assert_equal 3, s3.execute(0)
assert_equal 7, s3.execute(4)
end
def test_true_strategy
ts = TrueStrategy.instance
ts2 = TrueStrategy.instance
assert_equal ts, ts2
assert ts.execute
s3 = ts & ts2
assert s3.execute
end
def test_false_strategy
fs = FalseStrategy.instance
fs2 = FalseStrategy.instance
assert_equal fs, fs2
assert !fs.execute
s3 = fs & fs2
assert !s3.execute
end
def test_identity_strategy
s1 = IdentityStrategy.instance
s2 = IdentityStrategy.instance
assert_equal s1, s2
assert s1.execute(true)
assert !s1.execute(false)
assert_equal 4, s1.execute(4)
end
def test_combine_void_strategy
a = 0
s1 = VoidStrategy.instance
s2 = CompoundStrategy.new{a = 4}
s3 = s1 + s2
assert_equal 4, s3.execute
assert_equal 4, a
end
def test_combine_void_with_param
s1 = VoidStrategy.instance
s2 = CompoundStrategy.new{|a| a + 3}
s3 = s1 + s2
assert_equal 7, s3.execute(4)
end
def test_pipe_multiple_params
s1 = IdentityStrategy.instance
s2 = CompoundStrategy.new{|a, b, c| b - c}
s12 = s1|s2
assert_equal 3, s12.execute(0,7,4)
s3 = CompoundStrategy.new{|a, b, c| a+b+c}
s4 = s1|s2|s3
assert_equal 14, s4.execute(0, 7, 4)
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment