1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 package org.perfidix.element;
28
29 import static org.junit.Assert.assertEquals;
30 import static org.junit.Assert.assertFalse;
31 import static org.junit.Assert.fail;
32
33 import java.lang.reflect.Method;
34 import java.util.ArrayList;
35 import java.util.Collections;
36 import java.util.Comparator;
37 import java.util.Iterator;
38 import java.util.List;
39
40 import org.junit.Before;
41 import org.junit.Test;
42 import org.perfidix.annotation.Bench;
43
44
45
46
47
48
49 public class NoMethodArrangementTest {
50
51 private transient List<BenchmarkElement> elemSet;
52
53
54
55
56 @Before
57 public void setUp() {
58 elemSet = new ArrayList<BenchmarkElement>();
59 final Class<?> testClazz = TestBenchClass.class;
60 for (final Method meth : testClazz.getDeclaredMethods()) {
61 if (BenchmarkMethod.isBenchmarkable(meth)) {
62 elemSet.add(new BenchmarkElement(new BenchmarkMethod(meth)));
63 }
64 }
65
66
67
68
69 Collections.sort(elemSet, new Comparator<BenchmarkElement>() {
70
71 @Override
72 public int compare(BenchmarkElement a, BenchmarkElement b) {
73 return a.getMeth().getMethodWithClassName().compareTo(b.getMeth().getMethodWithClassName());
74 }
75 });
76 }
77
78
79
80
81 @Test
82 public void test() {
83 try {
84
85 final AbstractMethodArrangement arrangement =
86 AbstractMethodArrangement.getMethodArrangement(elemSet, KindOfArrangement.NoArrangement);
87 final String[] expectedNames = {
88 "bench1", "bench2", "bench4"
89 };
90 final Iterator<BenchmarkElement> iterBench = arrangement.iterator();
91 assertEquals("Method name for first element", expectedNames[0], iterBench.next().getMeth()
92 .getMethodToBench().getName());
93 assertEquals("Method name for second element", expectedNames[1], iterBench.next().getMeth()
94 .getMethodToBench().getName());
95 assertEquals("Method name for third element", expectedNames[2], iterBench.next().getMeth()
96 .getMethodToBench().getName());
97 assertFalse("No more elements avaliables", iterBench.hasNext());
98
99 } catch (final Exception e) {
100 fail(e.toString());
101 }
102 }
103
104 class TestBenchClass {
105
106 @Bench
107 public void bench1() {
108
109 }
110
111 @Bench
112 public void bench2() {
113
114 }
115
116 public void bench3() {
117
118 }
119
120 @Bench
121 public void bench4() {
122
123 }
124
125 }
126
127 }