@Override public Map<String, List<String>> generateReport( HeaderReport headerReport, AnswerReport answerReport, Filter filter) { Map<String, List<String>> headerContent = headerReport.getContent(); List<String> questions = headerContent.get("Question ID"); List<String> bugCoveringList = headerContent.get("Bug Covering"); SessionDTO dto = new FileSessionDTO(); Map<String, Microtask> microtasks = filter.apply((HashMap<String, Microtask>) dto.getMicrotasks()); List<String> truePositive = new ArrayList<String>(); List<String> falsePositive = new ArrayList<String>(); List<String> trueNegative = new ArrayList<String>(); List<String> falseNegative = new ArrayList<String>(); List<String> idk = new ArrayList<String>(); int[] aux = new int[5]; for (int i = 0; i < questions.size(); i++) { Arrays.fill(aux, 0); Microtask microtask = microtasks.get(questions.get(i)); String covering = bugCoveringList.get(i); for (Answer answer : microtask.getAnswerList()) { if (answer.getOption().equals(Answer.YES)) { if (covering.equals("yes")) aux[0]++; else aux[2]++; } else if (answer.getOption().equals(Answer.I_DONT_KNOW)) aux[4]++; else { if (covering.equals("no")) aux[1]++; else aux[3]++; } } truePositive.add(Integer.toString(aux[0])); trueNegative.add(Integer.toString(aux[1])); falsePositive.add(Integer.toString(aux[2])); falseNegative.add(Integer.toString(aux[3])); idk.add(Integer.toString(aux[4])); } this.correctnessContent.put("True Positives", truePositive); this.correctnessContent.put("True Negatives", trueNegative); this.correctnessContent.put("False Positives", falsePositive); this.correctnessContent.put("False Negatives", falseNegative); this.correctnessContent.put("IDK", idk); return this.correctnessContent; }
@Test public void testMethodMap() { String fileName = "TinySample.java"; String filePath = "C:/Users/Christian Adriano/Documents/GitHub/crowd-debug-firefly/samples-discarded/sample/tiny/"; String fileContent = SourceFileReader.readFileToString(filePath + fileName); CodeSnippetFactory snippetFactory = new CodeSnippetFactory("TinySample.java", fileContent); Vector<CodeSnippet> list = snippetFactory.generateSnippetsForFile(); if ((list == null) || (list.size() != 2)) Assert.fail( "Null list of snippets or file does not match test data, actual size is: " + list.size()); else { QuestionFactory questionFactory = new QuestionFactory(); questionFactory.generateMicrotasks(list, "Bug report message", 0); Hashtable<Integer, Microtask> microtaskMap = questionFactory.getConcreteQuestions(); FileDebugSession fileDebuggingSession = new FileDebugSession("TinySample.java", fileContent, microtaskMap); // Persist data MicrotaskStorage memento = MicrotaskStorage.initializeSingleton(); ; memento.insert(fileName, fileDebuggingSession); // Generate the WorkerSession WorkerSessionFactory sessionFactory = new WorkerSessionFactory(10); HashMap<String, HashMap<String, ArrayList<Microtask>>> actualFileMethodMap = sessionFactory.getFileMethodMap(); HashMap<String, ArrayList<Microtask>> methodMap = actualFileMethodMap.get("TinySample.java"); Assert.assertNotNull(methodMap); ArrayList<Microtask> method1List = methodMap.get("TinySample"); if (method1List == null || method1List.size() != 4) Assert.fail( "List of microtasks for method TinySample is wrong, actual size is: " + method1List.size()); else { ArrayList<Microtask> method2List = methodMap.get("seedCounter"); if (method2List == null || method2List.size() != 7) Assert.fail( "List of microtasks for method seedCounter is wrong, actual size is: " + method2List.size()); else { Microtask mtask1 = method1List.get(0); Assert.assertEquals( "First Microtask (ID=" + mtask1.getID().toString() + ") of TinySample does not match", 0, mtask1.getID().toString().compareTo("0")); Microtask mtask2 = method2List.get(0); Assert.assertEquals( "First Microtask (ID=" + mtask2.getID().toString() + ") of seedCounter does not match", 0, mtask2.getID().toString().compareTo("4")); } } } }