require 'pathname' require Pathname.new( File.dirname(__FILE__)).join( 'test_helper' ).cleanpath require 'build-tool/singleton' class TestSingleton < Test::Unit::TestCase class Child1 < BuildTool::Singleton end class GrandChild1 < Child1 end class Child2 < BuildTool::Singleton end class GrandChild2 < Child2 end def test_singletion c1 = Child1.new c1.instance assert_equal c1.instance, Child1.instance assert_raise StandardError do Child1.new end assert_raise StandardError do gc = GrandChild1.new end gc2 = GrandChild2.new assert_equal gc2.instance, Child2.instance assert_equal gc2.instance, GrandChild2.instance assert_not_equal Child1.instance, GrandChild2.instance gc2.destroy assert_nil gc2.instance assert_nil Child2.instance assert_nil GrandChild2.instance gc2_new = GrandChild2.new assert_equal gc2_new.instance, Child2.instance assert_equal gc2_new.instance, GrandChild2.instance end end