redef fun val1: Int do return _a
init(i: Int) do _a = i
+ redef fun to_s do return "Aa{a}"
end
class Elt2
class B
super Elt2
init(i: Int) do initelt2(i)
+ redef fun to_s do return "Bb{b}"
end
class C
_c = i
_d = j
end
+ redef fun to_s do return "Cc{c}d{d}"
end
class D
init(i)
initelt2(j)
end
+ redef fun to_s do return "Da{a}b{b}"
end
class E
redef fun val1: Int do return 5 end
init(i: Int) do initelt2(i)
+ redef fun to_s do return "Eb{b}"
end
class EltComparator
- super Comparator[Elt]
- redef fun compare(a: Elt, b: Elt): Int
+ super Comparator
+ redef type COMPARED: Elt
+ redef fun compare(a, b)
do
if _is_val1 then
return a.val1 <=> b.val1
end
end
-var n = 100
+srand_from(0)
+var n = 20
if not args.is_empty then
n = args.first.to_i
array.push(generator)
end
+print array.join(", ")
+
var comparator = new EltComparator
for i in [0..n[ do
comparator.sort(array)
comparator.toggle
end
+print array.join(", ")