1 package de.jaret.test.timebars;
2
3 import java.util.Random;
4
5 import org.junit.Test;
6
7 import de.jaret.util.date.IntervalImpl;
8 import de.jaret.util.date.JaretDate;
9 import de.jaret.util.ui.timebars.TimeBarViewerDelegate;
10 import de.jaret.util.ui.timebars.model.DefaultTimeBarModel;
11 import de.jaret.util.ui.timebars.model.DefaultTimeBarRowModel;
12 import de.jaret.util.ui.timebars.model.TimeBarModel;
13 import de.jaret.util.ui.timebars.strategy.DefaultOverlapStrategy;
14
15 public class OverlapTest {
16
17 @Test
18 public void testUpdateOICache() {
19 int count = 10000;
20 boolean assumeSorted = true;
21 TimeBarModel model = createModel(count);
22 TimeBarViewerDelegate delegate = new TimeBarViewerDelegate(null);
23 delegate.setModel(model);
24 DefaultOverlapStrategy strategy = new DefaultOverlapStrategy(delegate);
25 strategy.setAssumeSortedIntervals(assumeSorted);
26
27 delegate.setOverlapStrategy(strategy);
28 long time = System.currentTimeMillis();
29 strategy.updateOICache(model.getRow(0));
30 System.out.println("Overlapping "+count+" intervals "+(System.currentTimeMillis()-time)+"ms assumeSorted: "+assumeSorted);
31
32 count = 10000;
33 assumeSorted = false;
34 model = createModel(count);
35 delegate = new TimeBarViewerDelegate(null);
36 delegate.setModel(model);
37 strategy = new DefaultOverlapStrategy(delegate);
38 strategy.setAssumeSortedIntervals(assumeSorted);
39
40 delegate.setOverlapStrategy(strategy);
41 time = System.currentTimeMillis();
42 strategy.updateOICache(model.getRow(0));
43 System.out.println("Overlapping "+count+" intervals "+(System.currentTimeMillis()-time)+"ms assumeSorted: "+assumeSorted);
44
45 }
46
47 DefaultTimeBarModel createModel(int count) {
48 long time = System.currentTimeMillis();
49 DefaultTimeBarModel model = new DefaultTimeBarModel();
50 DefaultTimeBarRowModel row = new DefaultTimeBarRowModel();
51 model.addRow(row);
52
53 Random rnd = new Random(1);
54
55 JaretDate start = new JaretDate();
56
57 for(int i=0;i<count;i++) {
58 start.advanceMinutes(rnd.nextDouble()*30);
59 JaretDate end = start.copy().advanceMinutes(rnd.nextDouble()*30);
60 IntervalImpl interval = new IntervalImpl(start, end);
61 row.addInterval(interval);
62 }
63
64 System.out.println("create model "+count+ " "+(System.currentTimeMillis()-time)+"ms");
65
66 return model;
67
68 }
69
70 }