ruby/test/rinda/test_tuplebag.rb

174 строки
2.8 KiB
Ruby

# frozen_string_literal: false
require 'test/unit'
require 'rinda/tuplespace'
class TestTupleBag < Test::Unit::TestCase
def setup
@tb = Rinda::TupleBag.new
end
def test_delete
assert_nothing_raised do
val = @tb.delete tup(:val, 1)
assert_equal nil, val
end
t = tup(:val, 1)
@tb.push t
val = @tb.delete t
assert_equal t, val
assert_equal [], @tb.find_all(tem(:val, 1))
t1 = tup(:val, 1)
t2 = tup(:val, 1)
@tb.push t1
@tb.push t2
val = @tb.delete t1
assert_equal t1, val
assert_equal [t2], @tb.find_all(tem(:val, 1))
end
def test_delete_unless_alive
assert_equal [], @tb.delete_unless_alive
t1 = tup(:val, nil)
t2 = tup(:val, nil)
@tb.push t1
@tb.push t2
assert_equal [], @tb.delete_unless_alive
t1.cancel
assert_equal [t1], @tb.delete_unless_alive, 'canceled'
t2.renew Object.new
assert_equal [t2], @tb.delete_unless_alive, 'expired'
end
def test_find
template = tem(:val, nil)
assert_equal nil, @tb.find(template)
t1 = tup(:other, 1)
@tb.push t1
assert_equal nil, @tb.find(template)
t2 = tup(:val, 1)
@tb.push t2
assert_equal t2, @tb.find(template)
t2.cancel
assert_equal nil, @tb.find(template), 'canceled'
t3 = tup(:val, 3)
@tb.push t3
assert_equal t3, @tb.find(template)
t3.renew Object.new
assert_equal nil, @tb.find(template), 'expired'
end
def test_find_all
template = tem(:val, nil)
t1 = tup(:other, 1)
@tb.push t1
assert_equal [], @tb.find_all(template)
t2 = tup(:val, 2)
t3 = tup(:val, 3)
@tb.push t2
@tb.push t3
assert_equal [t2, t3], @tb.find_all(template)
t2.cancel
assert_equal [t3], @tb.find_all(template), 'canceled'
t3.renew Object.new
assert_equal [], @tb.find_all(template), 'expired'
end
def test_find_all_template
tuple = tup(:val, 1)
t1 = tem(:other, nil)
@tb.push t1
assert_equal [], @tb.find_all_template(tuple)
t2 = tem(:val, nil)
t3 = tem(:val, nil)
@tb.push t2
@tb.push t3
assert_equal [t2, t3], @tb.find_all_template(tuple)
t2.cancel
assert_equal [t3], @tb.find_all_template(tuple), 'canceled'
t3.renew Object.new
assert_equal [], @tb.find_all_template(tuple), 'expired'
end
def test_has_expires_eh
assert !@tb.has_expires?
t = tup(:val, 1)
@tb.push t
assert @tb.has_expires?
t.renew Object.new
assert !@tb.has_expires?
end
def test_push
t = tup(:val, 1)
@tb.push t
assert_equal t, @tb.find(tem(:val, 1))
end
##
# Create a tuple with +ary+ for its contents
def tup(*ary)
Rinda::TupleEntry.new ary
end
##
# Create a template with +ary+ for its contents
def tem(*ary)
Rinda::TemplateEntry.new ary
end
end