1+ require "minitest/autorun"
2+ require "minitest/pride"
3+
4+ require_relative "delegator"
5+
6+ class Ex06MyDelegateTest < Minitest ::Test
7+ Module . prepend MyDelegate
8+
9+ def test_my_delegate_one_argument_instance
10+ skip
11+ example = Class . new do
12+ my_delegate :integer? , to : :@example
13+
14+ def initialize ( example )
15+ @example = example
16+ end
17+ end
18+
19+ num = 424242
20+ fl = 4242.4242
21+
22+ tmp = example . new ( num )
23+ wrn = example . new ( fl )
24+ res = tmp . integer?
25+ mis = wrn . integer?
26+
27+
28+ assert_equal true , res
29+ assert_equal false , mis
30+ end
31+
32+ def test_my_delegate_few_argument_instance
33+ skip
34+ example = Class . new do
35+ my_delegate :finite? , :nan? , :to_s , to : :@example
36+
37+ def initialize ( example )
38+ @example = example
39+ end
40+ end
41+
42+ num = 424242
43+ fl = 12.02
44+
45+ tmp = example . new ( num )
46+ cur = example . new ( fl )
47+
48+ res = tmp . finite?
49+ rgh = cur . nan?
50+ str = tmp . to_s
51+
52+ assert_equal true , res
53+ assert_equal false , rgh
54+ assert_equal "424242" , str
55+ end
56+
57+ def test_my_delegate_argument_function
58+ skip
59+ example = Class . new do
60+ my_delegate :length , :split , to : :convert_to_str
61+
62+ def initialize ( example )
63+ @example = example
64+ end
65+
66+ def convert_to_str
67+ @example . to_s
68+ end
69+ end
70+
71+ num = 424242
72+
73+ tmp = example . new ( num )
74+
75+ len = tmp . convert_to_str . length
76+ cur = tmp . convert_to_str . split
77+
78+ assert_equal 6 , len
79+ assert_equal [ "424242" ] , cur
80+ end
81+
82+ def test_my_delegate_argument_function_with_arguments
83+ skip
84+ example = Class . new do
85+ my_delegate :gsub , to : :@example
86+ my_delegate :split , to : :convert_to_str
87+
88+ def initialize ( example )
89+ @example = example
90+ end
91+
92+ def convert_to_str
93+ @example . to_s
94+ end
95+ end
96+
97+ num = 424242
98+ str = "424242"
99+ tmp = example . new ( str )
100+ cur = example . new ( num )
101+ res_tmp = tmp . gsub ( "4" , "2" )
102+ res_cur = tmp . convert_to_str . split ( '2' )
103+
104+ assert_equal "222222" , res_tmp
105+ assert_equal [ "4" , "4" , "4" ] , res_cur
106+ end
107+
108+ def test_enumerables
109+ skip
110+ engine = Class . new do
111+ def initialize ( horses :)
112+ @horses = horses
113+ end
114+ def horses
115+ @horses
116+ end
117+ end
118+ stock = Class . new do
119+ include Enumerable
120+ my_delegate :each , to : :engines_pack
121+ def initialize ( engines_pack :)
122+ @engines_pack = engines_pack
123+ end
124+ def engines_pack
125+ @engines_pack
126+ end
127+ end
128+ engine1 = engine . new ( horses : 10 )
129+ engine2 = engine . new ( horses : 20 )
130+ engine3 = engine . new ( horses : 30 )
131+ shop = stock . new ( engines_pack : [ engine1 , engine2 , engine3 ] )
132+ sum = 0
133+ shop . each { |eng | sum += eng . horses }
134+
135+ assert_equal 60 , sum
136+ end
137+ end
0 commit comments