PageRenderTime 32ms CodeModel.GetById 1ms RepoModel.GetById 0ms app.codeStats 0ms

/vendor/gems/facets-2.4.5/test/more/test_paramix.rb

https://bitbucket.org/mediashelf/fedora-migrator
Ruby | 170 lines | 131 code | 38 blank | 1 comment | 0 complexity | 8055c449f23a25e90ce5bfa8114155cc MD5 | raw file
Possible License(s): GPL-3.0, GPL-2.0, IPL-1.0, AGPL-1.0, LGPL-3.0
  1. require 'facets/paramix.rb'
  2. require 'test/unit'
  3. class TC_Paramix_01 < Test::Unit::TestCase
  4. module M
  5. include Paramix
  6. def f
  7. mixin_params[M][:p]
  8. end
  9. def self.included(base)
  10. params = base.mixin_params[self]
  11. base.class_eval do
  12. define_method :check do
  13. params
  14. end
  15. end
  16. end
  17. end
  18. class C
  19. include M[:p => "check"]
  20. end
  21. class D
  22. include M[:p => "steak"]
  23. end
  24. def test_01_001
  25. c = C.new
  26. assert_equal( "check", c.mixin_params[M][:p] )
  27. assert_equal( "check", c.f )
  28. end
  29. def test_01_002
  30. d = D.new
  31. assert_equal( "steak", d.mixin_params[M][:p] )
  32. assert_equal( "steak", d.f )
  33. end
  34. def test_01_003
  35. assert_equal( {M=>{:p => "check"}}, C.mixin_parameters )
  36. assert_equal( {M=>{:p => "steak"}}, D.mixin_parameters )
  37. end
  38. def test_01_004
  39. c = C.new
  40. assert_equal( {:p => "check"}, c.check )
  41. d = D.new
  42. assert_equal( {:p => "steak"}, d.check )
  43. end
  44. end
  45. class TC_Paramix_02 < Test::Unit::TestCase
  46. module M
  47. # Manually define Paramix method.
  48. def self.[](parameters)
  49. Paramix.new(self, parameters) do
  50. define_method :check do
  51. mixin_params[M] # or parameters
  52. end
  53. end
  54. end
  55. def f
  56. mixin_params[M][:p]
  57. end
  58. end
  59. class C
  60. include M[:p => "check"]
  61. end
  62. class D
  63. include M[:p => "steak"]
  64. end
  65. def test_02_001
  66. c = C.new
  67. assert_equal( "check", c.mixin_params[M][:p] )
  68. assert_equal( "check", c.f )
  69. end
  70. def test_02_002
  71. d = D.new
  72. assert_equal( "steak", d.mixin_params[M][:p] )
  73. assert_equal( "steak", d.f )
  74. end
  75. def test_02_003
  76. assert_equal( {M=>{:p => "check"}}, C.mixin_parameters )
  77. assert_equal( {M=>{:p => "steak"}}, D.mixin_parameters )
  78. end
  79. def test_02_004
  80. c = C.new
  81. assert_equal( {:p => "check"}, c.check )
  82. d = D.new
  83. assert_equal( {:p => "steak"}, d.check )
  84. end
  85. end
  86. class TC_Paramix_03 < Test::Unit::TestCase
  87. module M
  88. include Paramix
  89. def f
  90. mixin_params[M][:p]
  91. end
  92. end
  93. class C
  94. extend M[:p => "mosh"]
  95. end
  96. class D
  97. extend M[:p => "many"]
  98. end
  99. def test_03_001
  100. assert_equal( "mosh", C.f )
  101. end
  102. def test_03_002
  103. assert_equal( "many", D.f )
  104. end
  105. def test_03_003
  106. assert_equal( {M=>{:p => "mosh"}}, (class << C; self; end).mixin_parameters )
  107. assert_equal( {M=>{:p => "many"}}, (class << D; self; end).mixin_parameters )
  108. end
  109. end
  110. class TC_Paramix_04 < Test::Unit::TestCase
  111. module O
  112. def self.[](parameters)
  113. Paramix.new(self, parameters) do
  114. attr_accessor mixin_parameters[O][:name]
  115. end
  116. end
  117. end
  118. class X
  119. include O[:name=>"x"]
  120. end
  121. def test_attribute
  122. o = X.new
  123. assert_nothing_raised{ o.x = 10 }
  124. assert_equal(10, o.x)
  125. end
  126. def test_ancestors
  127. assert(X.ancestors.include?(X))
  128. assert(X.ancestors.include?(O))
  129. assert(X.ancestors.include?(Object))
  130. assert(X.ancestors.include?(Kernel))
  131. end
  132. end