Skip to content

Commit f8fa5d7

Browse files
committed
Add tests for ex06
1 parent 872c8d1 commit f8fa5d7

File tree

1 file changed

+137
-0
lines changed

1 file changed

+137
-0
lines changed

courses/ruby/ex06/ex06_tests.rb

Lines changed: 137 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,137 @@
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

Comments
 (0)