1
+ require "minitest/autorun"
2
+ require "minitest/pride"
3
+
4
+ require_relative "delegate"
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