1+ #include < Arduino.h>
2+
3+ #include " unity.h"
4+
5+ #include < List.hpp>
6+
7+ // ---------- In different scope (ds) ---------- //
8+
9+ void add_ds_rvalue_primitive (void )
10+ {
11+ List<int > list;
12+
13+ {
14+ list + 1 ;
15+ }
16+ TEST_ASSERT_EQUAL_INT (1 , list[0 ]);
17+ TEST_ASSERT_EQUAL_INT (1 , list.getSize ());
18+
19+ {
20+ list + 2 ;
21+ }
22+ TEST_ASSERT_EQUAL_INT (1 , list[0 ]);
23+ TEST_ASSERT_EQUAL_INT (2 , list[1 ]);
24+ TEST_ASSERT_EQUAL_INT (2 , list.getSize ());
25+ }
26+
27+ void add_ds_lvalue_primitive (void )
28+ {
29+ List<int > list;
30+
31+ {
32+ int a = 1 ;
33+ list + a;
34+
35+ TEST_ASSERT_EQUAL_INT (1 , a);
36+ a = 2 ;
37+ }
38+ TEST_ASSERT_EQUAL_INT (1 , list[0 ]);
39+ TEST_ASSERT_EQUAL_INT (1 , list.getSize ());
40+
41+ {
42+ int b = 2 ;
43+ list + b;
44+
45+ TEST_ASSERT_EQUAL_INT (2 , b);
46+ b = 3 ;
47+ }
48+ TEST_ASSERT_EQUAL_INT (1 , list[0 ]);
49+ TEST_ASSERT_EQUAL_INT (2 , list[1 ]);
50+ TEST_ASSERT_EQUAL_INT (2 , list.getSize ());
51+ }
52+
53+ void add_ds_rvalue_class (void )
54+ {
55+ List<String> list;
56+
57+ {
58+ list + " 1" ;
59+ }
60+ TEST_ASSERT_EQUAL_STRING (" 1" , list[0 ].c_str ());
61+ TEST_ASSERT_EQUAL_INT (1 , list.getSize ());
62+
63+ {
64+ list + " 2" ;
65+ }
66+ TEST_ASSERT_EQUAL_STRING (" 1" , list[0 ].c_str ());
67+ TEST_ASSERT_EQUAL_STRING (" 2" , list[1 ].c_str ());
68+ TEST_ASSERT_EQUAL_INT (2 , list.getSize ());
69+ }
70+
71+ void add_ds_lvalue_class (void )
72+ {
73+ List<String> list;
74+
75+ {
76+ String a = " 1" ;
77+ list + a;
78+
79+ TEST_ASSERT_EQUAL_STRING (" 1" , a.c_str ());
80+ a = " 2" ;
81+ }
82+ TEST_ASSERT_EQUAL_STRING (" 1" , list[0 ].c_str ());
83+ TEST_ASSERT_EQUAL_INT (1 , list.getSize ());
84+
85+ {
86+ String b = " 2" ;
87+ list + b;
88+
89+ TEST_ASSERT_EQUAL_STRING (" 2" , b.c_str ());
90+ b = " 3" ;
91+ }
92+ TEST_ASSERT_EQUAL_STRING (" 1" , list[0 ].c_str ());
93+ TEST_ASSERT_EQUAL_STRING (" 2" , list[1 ].c_str ());
94+ TEST_ASSERT_EQUAL_INT (2 , list.getSize ());
95+ }
96+
97+ // ---------- In same scope (ss) ---------- //
98+
99+ void add_ss_rvalue_primitive (void )
100+ {
101+ List<int > list;
102+
103+ list + 1 ;
104+ TEST_ASSERT_EQUAL_INT (1 , list[0 ]);
105+ TEST_ASSERT_EQUAL_INT (1 , list.getSize ());
106+
107+ list + 2 ;
108+ TEST_ASSERT_EQUAL_INT (1 , list[0 ]);
109+ TEST_ASSERT_EQUAL_INT (2 , list[1 ]);
110+ TEST_ASSERT_EQUAL_INT (2 , list.getSize ());
111+ }
112+
113+ void add_ss_lvalue_primitive (void )
114+ {
115+ List<int > list;
116+
117+ int a = 1 , b = 2 ;
118+
119+ list + a;
120+
121+ TEST_ASSERT_EQUAL_INT (1 , a);
122+ a = 2 ;
123+ TEST_ASSERT_EQUAL_INT (1 , list[0 ]);
124+ TEST_ASSERT_EQUAL_INT (1 , list.getSize ());
125+
126+ list + b;
127+
128+ TEST_ASSERT_EQUAL_INT (2 , b);
129+ b = 3 ;
130+ TEST_ASSERT_EQUAL_INT (1 , list[0 ]);
131+ TEST_ASSERT_EQUAL_INT (2 , list[1 ]);
132+ TEST_ASSERT_EQUAL_INT (2 , list.getSize ());
133+ }
134+
135+ void add_ss_rvalue_class (void )
136+ {
137+ List<String> list;
138+
139+ list + " 1" ;
140+ TEST_ASSERT_EQUAL_STRING (" 1" , list[0 ].c_str ());
141+ TEST_ASSERT_EQUAL_INT (1 , list.getSize ());
142+
143+ list + " 2" ;
144+ TEST_ASSERT_EQUAL_STRING (" 1" , list[0 ].c_str ());
145+ TEST_ASSERT_EQUAL_STRING (" 2" , list[1 ].c_str ());
146+ TEST_ASSERT_EQUAL_INT (2 , list.getSize ());
147+ }
148+
149+ void add_ss_lvalue_class (void )
150+ {
151+ List<String> list;
152+
153+ String a = " 1" , b = " 2" ;
154+
155+ list + a;
156+
157+ TEST_ASSERT_EQUAL_STRING (" 1" , a.c_str ());
158+ a = " 2" ;
159+ TEST_ASSERT_EQUAL_STRING (" 1" , list[0 ].c_str ());
160+ TEST_ASSERT_EQUAL_INT (1 , list.getSize ());
161+
162+ list + b;
163+
164+ TEST_ASSERT_EQUAL_STRING (" 2" , b.c_str ());
165+ b = " 3" ;
166+ TEST_ASSERT_EQUAL_STRING (" 1" , list[0 ].c_str ());
167+ TEST_ASSERT_EQUAL_STRING (" 2" , list[1 ].c_str ());
168+ TEST_ASSERT_EQUAL_INT (2 , list.getSize ());
169+ }
170+
171+ // ---------- void operator+(AbstractList<T> &list) ---------- //
172+
173+ void addAll_primitive (void )
174+ {
175+ List<int > fromList;
176+ List<int > toList;
177+
178+ toList.add (1 );
179+ toList.add (2 );
180+ toList.add (3 );
181+ fromList.add (4 );
182+ fromList.add (5 );
183+ fromList.add (6 );
184+
185+ toList + fromList;
186+
187+ TEST_ASSERT_EQUAL_INT (4 , fromList[0 ]);
188+ TEST_ASSERT_EQUAL_INT (5 , fromList[1 ]);
189+ TEST_ASSERT_EQUAL_INT (6 , fromList[2 ]);
190+ TEST_ASSERT_EQUAL_INT (3 , fromList.getSize ());
191+
192+ fromList.clear ();
193+
194+ TEST_ASSERT_EQUAL_INT (1 , toList[0 ]);
195+ TEST_ASSERT_EQUAL_INT (2 , toList[1 ]);
196+ TEST_ASSERT_EQUAL_INT (3 , toList[2 ]);
197+ TEST_ASSERT_EQUAL_INT (4 , toList[3 ]);
198+ TEST_ASSERT_EQUAL_INT (5 , toList[4 ]);
199+ TEST_ASSERT_EQUAL_INT (6 , toList[5 ]);
200+ TEST_ASSERT_EQUAL_INT (6 , toList.getSize ());
201+ }
202+
203+ void addAll_class (void )
204+ {
205+ List<String> fromList;
206+ List<String> toList;
207+
208+ toList.add (" 1" );
209+ toList.add (" 2" );
210+ toList.add (" 3" );
211+ fromList.add (" 4" );
212+ fromList.add (" 5" );
213+ fromList.add (" 6" );
214+
215+ toList + fromList;
216+
217+ TEST_ASSERT_EQUAL_STRING (" 4" , fromList[0 ].c_str ());
218+ TEST_ASSERT_EQUAL_STRING (" 5" , fromList[1 ].c_str ());
219+ TEST_ASSERT_EQUAL_STRING (" 6" , fromList[2 ].c_str ());
220+ TEST_ASSERT_EQUAL_INT (3 , fromList.getSize ());
221+
222+ fromList.clear ();
223+
224+ TEST_ASSERT_EQUAL_STRING (" 1" , toList[0 ].c_str ());
225+ TEST_ASSERT_EQUAL_STRING (" 2" , toList[1 ].c_str ());
226+ TEST_ASSERT_EQUAL_STRING (" 3" , toList[2 ].c_str ());
227+ TEST_ASSERT_EQUAL_STRING (" 4" , toList[3 ].c_str ());
228+ TEST_ASSERT_EQUAL_STRING (" 5" , toList[4 ].c_str ());
229+ TEST_ASSERT_EQUAL_STRING (" 6" , toList[5 ].c_str ());
230+ TEST_ASSERT_EQUAL_INT (6 , toList.getSize ());
231+ }
232+
233+ void setup ()
234+ {
235+ UNITY_BEGIN ();
236+
237+ // different scope tests
238+ RUN_TEST (add_ds_rvalue_primitive);
239+ RUN_TEST (add_ds_lvalue_primitive);
240+ RUN_TEST (add_ds_rvalue_class);
241+ RUN_TEST (add_ds_lvalue_class);
242+
243+ // same scope tests
244+ RUN_TEST (add_ss_rvalue_primitive);
245+ RUN_TEST (add_ss_lvalue_primitive);
246+ RUN_TEST (add_ss_rvalue_class);
247+ RUN_TEST (add_ss_lvalue_class);
248+
249+ // ---------- void operator+(AbstractList<T> &list) ---------- //
250+ RUN_TEST (addAll_primitive);
251+ RUN_TEST (addAll_class);
252+
253+ UNITY_END ();
254+ }
255+
256+ void loop ()
257+ {
258+ }
0 commit comments