209209 # singletons (identity and property lens) are egal
210210 for (l1, l2) ∈ [
211211 @lens (_) => @lens (_),
212- @lens (_. a) => @lens (_. a)
212+ @lens (_. a) => @lens (_. a),
213213 ]
214214 @test l1 === l2
215215 @test l1 == l2
@@ -218,23 +218,41 @@ end
218218
219219 # composite and index lenses are structurally equal
220220 for (l1, l2) ∈ [
221- @lens (_[1 ]) => @lens (_[1 ])
222- @lens (_. a[2 ]) => @lens (_. a[2 ])
223- @lens (_. a. b[3 ]) => @lens (_. a. b[3 ])
221+ @lens (_[1 ]) => @lens (_[1 ]),
222+ @lens (_. a[2 ]) => @lens (_. a[2 ]),
223+ @lens (_. a. b[3 ]) => @lens (_. a. b[3 ]),
224+ @lens (_[1 : 10 ]) => @lens (_[1 : 10 ]),
225+ @lens (_. a[2 : 20 ]) => @lens (_. a[2 : 20 ]),
226+ @lens (_. a. b[3 : 30 ]) => @lens (_. a. b[3 : 30 ]),
224227 ]
225228 @test l1 == l2
226229 @test hash (l1) == hash (l2)
227230 end
228231
229232 # inequality
230233 for (l1, l2) ∈ [
231- @lens (_[1 ]) => @lens (_[2 ])
232- @lens (_. a[1 ]) => @lens (_. a[2 ])
233- @lens (_. a[1 ]) => @lens (_. b[1 ])
234+ @lens (_[1 ]) => @lens (_[2 ]),
235+ @lens (_. a[1 ]) => @lens (_. a[2 ]),
236+ @lens (_. a[1 ]) => @lens (_. b[1 ]),
237+ @lens (_[1 : 10 ]) => @lens (_[2 : 20 ]),
238+ @lens (_. a[1 : 10 ]) => @lens (_. a[2 : 20 ]),
239+ @lens (_. a[1 : 10 ]) => @lens (_. b[1 : 10 ]),
234240 ]
235241 @test l1 != l2
236242 end
237243
244+ # equality with non-equal range types (#165)
245+ for (l1, l2) ∈ [
246+ @lens (_[1 : 10 ]) => @lens (_[Base. OneTo (10 )]),
247+ @lens (_. a[1 : 10 ]) => @lens (_. a[Base. OneTo (10 )]),
248+ @lens (_. a. b[1 : 10 ]) => @lens (_. a. b[Base. OneTo (10 )]),
249+ @lens (_. a[Base. StepRange (1 , 1 , 5 )]. b[1 : 10 ]) => @lens (_. a[1 : 5 ]. b[Base. OneTo (10 )]),
250+ @lens (_. a. b[1 : 3 ]) => @lens (_. a. b[[1 , 2 , 3 ]]),
251+ ]
252+ @test l1 == l2
253+ @test hash (l1) == hash (l2)
254+ end
255+
238256 # Hash property: equality implies equal hashes, or in other terms:
239257 # lenses either have equal hashes or are unequal
240258 # Because collisions can occur theoretically (though unlikely), this is a property test,
0 commit comments