@@ -147,19 +147,38 @@ procedure TTestTemplateFor.TestDataSet;
147147var
148148 ds: TDataSet;
149149begin
150+ // traditional
150151 ds := CreateMockUsersTable();
151152 try
152153 Assert.AreEqual(' joe pete jane ' , //
153154 Template.Eval(' <% for i in _ %><% _['' name'' ] %> <%end%>' , ds));
154155 finally
155156 ds.Free;
156157 end ;
158+ // index in
159+ ds := CreateMockUsersTable();
160+ try
161+ Assert.AreEqual(' 0 1 2 ' , //
162+ Template.Eval(' <% for i in _ %><% i %> <%end%>' , ds));
163+ finally
164+ ds.Free;
165+ end ;
166+ // index of
167+ ds := CreateMockUsersTable();
168+ try
169+ Assert.AreEqual(' joe pete jane ' , //
170+ Template.Eval(' <% for i of _ %><% i['' name'' ] %> <%end%>' , ds));
171+ finally
172+ ds.Free;
173+ end ;
174+
157175end ;
158176
159177procedure TTestTemplateFor.TestDataSetWithEvent ;
160178var
161179 ds: TDataSet;
162180begin
181+ // traditional
163182 ds := CreateMockUsersTable();
164183 try
165184 Assert.AreEqual(' <ul><li>joe</li><li>pete</li><li>jane</li></ul>' , //
@@ -175,6 +194,40 @@ procedure TTestTemplateFor.TestDataSetWithEvent;
175194 finally
176195 ds.Free;
177196 end ;
197+
198+ // using index in
199+ ds := CreateMockUsersTable();
200+ try
201+ Assert.AreEqual(' <ul><li>0</li><li>1</li><li>2</li></ul>' , //
202+ Template.Eval(' <% for i in _ %><li><% i %></li><% onbegin%><ul><%onend%></ul><%end%>' , ds));
203+
204+ ds.Delete();
205+ ds.Delete();
206+ ds.Delete();
207+
208+ Assert.AreEqual(' <h1>No values</h1>' , //
209+ Template.Eval(' <% for i in _ %><li><% i %></li><% onbegin%><ul><%onend%></ul><% onempty%><h1>No values</h1><%end%>' , ds));
210+
211+ finally
212+ ds.Free;
213+ end ;
214+
215+ // using index of
216+ ds := CreateMockUsersTable();
217+ try
218+ Assert.AreEqual(' <ul><li>joe</li><li>pete</li><li>jane</li></ul>' , //
219+ Template.Eval(' <% for i of _ %><li><% i['' name'' ] %></li><% onbegin%><ul><%onend%></ul><%end%>' , ds));
220+
221+ ds.Delete();
222+ ds.Delete();
223+ ds.Delete();
224+
225+ Assert.AreEqual(' <h1>No values</h1>' , //
226+ Template.Eval(' <% for i in _ %><li><% ['' name'' ] %></li><% onbegin%><ul><%onend%></ul><% onempty%><h1>No values</h1><%end%>' , ds));
227+
228+ finally
229+ ds.Free;
230+ end ;
178231end ;
179232
180233procedure TTestTemplateFor.TestDataSetCount ;
0 commit comments