a b/recommendation-engine/src/test/java/eu/alfred/recommendation_engine/EventWeightsCalculatorTests.java
1
package eu.alfred.recommendation_engine;
2
3
import java.util.HashMap;
4
import java.util.HashSet;
5
import java.util.List;
6
import java.util.Map;
7
import java.util.Set;
8
9
import eu.alfred.event_manager.model.*;
10
11
import org.junit.Before;
12
import org.junit.Test;
13
14
import static org.junit.Assert.assertEquals;
15
16
public class EventWeightsCalculatorTests {
17
18
  private EventWeightsCalculator eWCalc = new EventWeightsCalculator();
19
  private Map<Event,Integer> initialEvents;
20
  private Set<Event> eventsToBeAdded = new HashSet<Event>();
21
  Event eventA = new Event(); 
22
  Event eventB = new Event(); 
23
  Event eventC = new Event();
24
  Event eventD = new Event();
25
  Event eventE = new Event();
26
  
27
  
28
  @Before
29
  public void setup() {
30
      initialEvents = new HashMap<Event,Integer>();
31
      
32
      eventA.setEventID("eventA");
33
      eventB.setEventID("eventB");
34
      eventC.setEventID("eventC");
35
      eventD.setEventID("eventD");
36
      eventE.setEventID("eventE");
37
      
38
      eventsToBeAdded.add(eventA);
39
      eventsToBeAdded.add(eventB);
40
      eventsToBeAdded.add(eventC);
41
  }
42
  
43
  @Test
44
  public void testAssignWeightsToEventsWithEmptyInitialEvents() {
45
      int weightToBeAssigned = 2;
46
      eWCalc.assignWeightsToEvents(initialEvents, eventsToBeAdded, weightToBeAssigned);
47
      
48
      assertEquals(new Integer(weightToBeAssigned),initialEvents.get(eventA));
49
      assertEquals(new Integer(weightToBeAssigned),initialEvents.get(eventB));
50
      assertEquals(new Integer(weightToBeAssigned),initialEvents.get(eventC));
51
  }
52
  
53
  @Test
54
  public void testAssignWeightsToEventsWithPresentInitialEvents() {
55
      // assign initial weight to some events
56
      int weightForPreExistingEvents = 3;
57
      eWCalc.assignWeightsToEvents(initialEvents, eventsToBeAdded, weightForPreExistingEvents);
58
      
59
      assertEquals(new Integer(weightForPreExistingEvents),initialEvents.get(eventA));
60
      assertEquals(new Integer(weightForPreExistingEvents),initialEvents.get(eventB));
61
      assertEquals(new Integer(weightForPreExistingEvents),initialEvents.get(eventC));
62
      
63
      eventsToBeAdded.add(eventD);
64
      eventsToBeAdded.add(eventE);
65
      
66
      int weightToBeAssigned = 2;
67
      eWCalc.assignWeightsToEvents(initialEvents, eventsToBeAdded, weightToBeAssigned);
68
      
69
      
70
      assertEquals(new Integer(weightToBeAssigned+weightForPreExistingEvents),initialEvents.get(eventA));
71
      assertEquals(new Integer(weightToBeAssigned+weightForPreExistingEvents),initialEvents.get(eventB));
72
      assertEquals(new Integer(weightToBeAssigned+weightForPreExistingEvents),initialEvents.get(eventC));
73
      assertEquals(new Integer(weightToBeAssigned),initialEvents.get(eventD));
74
      assertEquals(new Integer(weightToBeAssigned),initialEvents.get(eventE));
75
  }
76
  
77
  @Test
78
  public void testRankingBasedOnWeights() {
79
      
80
      int weightToBeAssigned = 2;
81
      eWCalc.assignWeightsToEvents(initialEvents, eventsToBeAdded, weightToBeAssigned);
82
      
83
      Set<Event> additionalEvents = new HashSet<Event>();
84
      additionalEvents.add(eventC);
85
      int extraWeight = 5;
86
      eWCalc.assignWeightsToEvents(initialEvents, additionalEvents, extraWeight);
87
      
88
      List<Event> sortedEvents = eWCalc.sortByWeight(initialEvents);
89
      
90
      assertEquals(sortedEvents.get(0),eventC);
91
  }
92
  
93
}