Merge: doc: fixed some typos and other misc. corrections
[nit.git] / tests / bench_complex_sort.nit
index 7ebe0f1..cf460cd 100644 (file)
 
 
 interface Elt
-       meth val1: Int is abstract
-       meth val2: Int do return val1
+       fun val1: Int is abstract
+       fun val2: Int do return val1
 end
 
 class A
-special Elt
-       attr _a: Int
-       redef meth val1: Int do return _a
+       super Elt
+       var a: Int
+       redef fun val1: Int do return a
 
-       init(i: Int) do _a = i
+       redef fun to_s do return "Aa{a}"
 end
 
 class Elt2
-special Elt
-       attr _b: Int
-       redef meth val1: Int do return _b/2
-       redef meth val2: Int do return _b
-       init initelt2(i: Int) do _b = i
+       super Elt
+       var b: Int
+       redef fun val1: Int do return b/2
+       redef fun val2: Int do return b
 end
 
 class B
-special Elt2
-       init(i: Int) do initelt2(i)
+       super Elt2
+       redef fun to_s do return "Bb{b}"
 end
 
 class C
-special Elt
-       attr _c: Int
-       attr _d: Int
-       redef meth val1: Int do return _c end
-       redef meth val2: Int do return _d end
-
-       init init2(i: Int, j: Int) do
-               _c = i
-               _d = j
-       end
+       super Elt
+       var c: Int
+       var d: Int
+       redef fun val1: Int do return c
+       redef fun val2: Int do return d
+
+       redef fun to_s do return "Cc{c}d{d}"
 end
 
 class D
-special A
-special Elt2
-       redef meth val1: Int do return _a end
-       redef meth val2: Int do return _b end
-
-       init init2(i: Int, j: Int) do
-               init(i)
-               initelt2(j)
-       end
+       super A
+       super Elt2
+       redef fun val1: Int do return a
+       redef fun val2: Int do return b
+
+       autoinit a=, b=
+
+       redef fun to_s do return "Da{a}b{b}"
 end
 
 class E
-special Elt2
-       redef meth val1: Int do return 5 end
+       super Elt2
+       redef fun val1: Int do return 5
 
-       init(i: Int) do initelt2(i)
+       redef fun to_s do return "Eb{b}"
 end
 
-class EltSorter
-special AbstractSorter[Elt]
-       redef meth compare(a: Elt, b: Elt): Int
+class EltComparator
+       super Comparator
+       redef type COMPARED: Elt
+       redef fun compare(a, b)
        do
-               if _is_val1 then
+               if is_val1 then
                        return a.val1 <=> b.val1
                else
                        return a.val2 <=> b.val2
                end
        end
        
-       meth toggle
+       fun toggle
        do
-               _is_val1 = not _is_val1
+               is_val1 = not is_val1
        end
        
-       attr _is_val1: Bool
+       var is_val1: Bool = false
 
        init do end
 end
 
-meth generator: Elt
+fun generator: Elt
 do
        var r = 5.rand
        if r == 0 then
@@ -102,15 +98,16 @@ do
        else if r == 1 then
                return new B(10.rand)
        else if r == 2 then
-               return new C.init2(10.rand, 10.rand)
+               return new C(10.rand, 10.rand)
        else if r == 3 then
-               return new D.init2(10.rand, 10.rand)
+               return new D(10.rand, 10.rand)
        else
                return new E(10.rand)
        end
 end
 
-var n = 100
+srand_from(0)
+var n = 20
 
 if not args.is_empty then
        n = args.first.to_i
@@ -121,9 +118,12 @@ for i in [0..n[ do
        array.push(generator)
 end
 
-var sorter = new EltSorter
+print array.join(", ")
+
+var comparator = new EltComparator
 for i in [0..n[ do
-       sorter.sort(array)
-       sorter.toggle
+       comparator.sort(array)
+       comparator.toggle
 end
 
+print array.join(", ")