mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	When you change this to true, you may need to add more tests. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53141 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
		
			
				
	
	
		
			173 lines
		
	
	
	
		
			2.8 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			173 lines
		
	
	
	
		
			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
 | 
						|
 |